From fc03ad60520320a139bfcf2f87b8b19f4dad53eb Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 28 Jul 2023 09:28:14 +0200 Subject: [PATCH] build settings ui --- web/settings/assets/ChargeLog-109358ae.js | 2 -- web/settings/assets/ChargeLog-10bd2a94.js | 2 ++ ...js => ChargePointInstallation-36c1dd94.js} | 2 +- .../{Chart-f0efb572.js => Chart-90d03227.js} | 2 +- ...ig-3440e88c.js => CloudConfig-8d84e8b6.js} | 2 +- .../assets/DataManagement-7ab8b22b.js | 1 - .../assets/DataManagement-f7497562.js | 1 + ...ig-f7c371a7.js => DebugConfig-dec66c23.js} | 2 +- ...ebb.js => GeneralChargeConfig-a10eba30.js} | 2 +- ...-54ff4abe.js => GeneralConfig-95eb1bd0.js} | 2 +- ...c5.js => HardwareInstallation-215225f6.js} | 2 +- ...50b.js => InstantChargeConfig-9eae0c02.js} | 2 +- ...-b7ec6fbd.js => LegalSettings-d4b65174.js} | 2 +- ...6c.js => LoadManagementConfig-d5b63768.js} | 2 +- ...0c080f.js => MqttBridgeConfig-f12d599b.js} | 2 +- .../assets/OpenwbBackupCloudProxy-a505d168.js | 1 - ...726a.js => OptionalComponents-0b25b7fd.js} | 2 +- ...401e595e.js => PVChargeConfig-cf0b7b77.js} | 2 +- ...9.js => ScheduledChargeConfig-fae9929b.js} | 2 +- ...{Status-2039a901.js => Status-bf8e6351.js} | 2 +- ...upport-e3c73a84.js => Support-dd56e881.js} | 2 +- web/settings/assets/System-49d418ab.js | 1 + web/settings/assets/System-ea43aee0.js | 1 - ...e-27fe5978.js => TestingStore-7fc25a33.js} | 2 +- ...5d29bd.js => TimeChargeConfig-1b50ef43.js} | 2 +- ...-3d3648b0.js => VehicleConfig-a9f43aee.js} | 2 +- .../{index-c0c78ae6.js => index-e3aeceea.js} | 2 +- ...ehicle-55f35b82.js => vehicle-79ec6aa7.js} | 2 +- web/settings/downloadChargeLog.php | 35 +++++++++++++++++++ web/settings/index.html | 2 +- 30 files changed, 61 insertions(+), 27 deletions(-) delete mode 100644 web/settings/assets/ChargeLog-109358ae.js create mode 100644 web/settings/assets/ChargeLog-10bd2a94.js rename web/settings/assets/{ChargePointInstallation-c8fe9fe6.js => ChargePointInstallation-36c1dd94.js} (99%) rename web/settings/assets/{Chart-f0efb572.js => Chart-90d03227.js} (76%) rename web/settings/assets/{CloudConfig-3440e88c.js => CloudConfig-8d84e8b6.js} (99%) delete mode 100644 web/settings/assets/DataManagement-7ab8b22b.js create mode 100644 web/settings/assets/DataManagement-f7497562.js rename web/settings/assets/{DebugConfig-f7c371a7.js => DebugConfig-dec66c23.js} (98%) rename web/settings/assets/{GeneralChargeConfig-df420ebb.js => GeneralChargeConfig-a10eba30.js} (97%) rename web/settings/assets/{GeneralConfig-54ff4abe.js => GeneralConfig-95eb1bd0.js} (99%) rename web/settings/assets/{HardwareInstallation-dd4637c5.js => HardwareInstallation-215225f6.js} (99%) rename web/settings/assets/{InstantChargeConfig-2f29e50b.js => InstantChargeConfig-9eae0c02.js} (96%) rename web/settings/assets/{LegalSettings-b7ec6fbd.js => LegalSettings-d4b65174.js} (97%) rename web/settings/assets/{LoadManagementConfig-6cfc446c.js => LoadManagementConfig-d5b63768.js} (99%) rename web/settings/assets/{MqttBridgeConfig-f10c080f.js => MqttBridgeConfig-f12d599b.js} (99%) delete mode 100644 web/settings/assets/OpenwbBackupCloudProxy-a505d168.js rename web/settings/assets/{OptionalComponents-5427726a.js => OptionalComponents-0b25b7fd.js} (99%) rename web/settings/assets/{PVChargeConfig-401e595e.js => PVChargeConfig-cf0b7b77.js} (99%) rename web/settings/assets/{ScheduledChargeConfig-85888759.js => ScheduledChargeConfig-fae9929b.js} (97%) rename web/settings/assets/{Status-2039a901.js => Status-bf8e6351.js} (99%) rename web/settings/assets/{Support-e3c73a84.js => Support-dd56e881.js} (98%) create mode 100644 web/settings/assets/System-49d418ab.js delete mode 100644 web/settings/assets/System-ea43aee0.js rename web/settings/assets/{TestingStore-27fe5978.js => TestingStore-7fc25a33.js} (99%) rename web/settings/assets/{TimeChargeConfig-3e5d29bd.js => TimeChargeConfig-1b50ef43.js} (96%) rename web/settings/assets/{VehicleConfig-3d3648b0.js => VehicleConfig-a9f43aee.js} (99%) rename web/settings/assets/{index-c0c78ae6.js => index-e3aeceea.js} (93%) rename web/settings/assets/{vehicle-55f35b82.js => vehicle-79ec6aa7.js} (97%) create mode 100644 web/settings/downloadChargeLog.php diff --git a/web/settings/assets/ChargeLog-109358ae.js b/web/settings/assets/ChargeLog-109358ae.js deleted file mode 100644 index 545939b6b7..0000000000 --- a/web/settings/assets/ChargeLog-109358ae.js +++ /dev/null @@ -1,2 +0,0 @@ -import{l as C,N as R,O as k,F as q}from"./vendor-fortawesome-63a0ad05.js";import{_ as x,$ as E,p as l,k as h,l as m,q as c,A as i,L as r,y as V,z as v,u as d,Q as F,R as y}from"./vendor-20bb207d.js";import{C as B}from"./index-c0c78ae6.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";C.add(R,k);const N={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:q},mixins:[B],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:{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),o=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:o/1e3,time_end:this.dateTimeFormat.format(new Date(o)),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[,o]of Object.entries(e))t.push({value:o.id,text:o.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[o,g]of Object.entries(e)){let a=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);t.push({value:a,text:g})}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 o="Nein",g="bg-danger";return e&&(o="Ja",g="bg-success"),t?'
'+o+"
":o},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(),y(),e),S={class:"chargeLog"},I={name:"chargeLogForm"},M={class:"row justify-content-center"},W={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},U=T(()=>c("div",{class:"row"},[c("div",{class:"col"},[c("h2",null,"Summe")])],-1));function j(e,t,o,g,a,n){const L=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-click-button"),D=l("openwb-base-alert"),f=l("vue3-table-lite");return h(),m("div",S,[c("form",I,[i(_,{title:"Filter"},{footer:r(()=>[c("div",M,[i(b,{class:"col-4 btn-success",onButtonClicked:t[5]||(t[5]=s=>n.requestChargeLog())},{default:r(()=>[d(" Filter anwenden ")]),_:1})])]),default:r(()=>[i(L,{title:"Zeitraum",subtype:"month",min:"2018-01",max:a.currentMonth,modelValue:n.chargeLogDate,"onUpdate:modelValue":t[0]||(t[0]=s=>n.chargeLogDate=s)},null,8,["max","modelValue"]),i(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:r(()=>[i(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:r(()=>[i(w,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":t[1]||(t[1]=s=>a.chargeLogRequestData.filter.vehicle.prio=s)},null,8,["modelValue"]),i(u,{title:"Lademodus",multiple:"",options:n.chargeModeList,modelValue:a.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":t[2]||(t[2]=s=>a.chargeLogRequestData.filter.vehicle.chargemode=s)},{help:r(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),i(u,{title:"Ladepunkt",multiple:"",options:n.chargePointList,modelValue:a.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":t[3]||(t[3]=s=>a.chargeLogRequestData.filter.chargepoint.id=s)},{help:r(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),i(u,{title:"Fahrzeug",multiple:"",options:n.vehicleList,modelValue:a.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":t[4]||(t[4]=s=>a.chargeLogRequestData.filter.vehicle.id=s)},{help:r(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),n.chargeLogRead?(h(),m("div",W,[i(f,{class:"charge-log-table","is-static-mode":!0,columns:a.table.columns,rows:n.chargeLogDataset,total:n.totalRecordCount,sortable:a.table.sortable,messages:a.table.messages,"page-options":a.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),n.totalRecordCount>0?(h(),m("div",A,[c("div",O,[i(b,{class:"col-4 btn-success",onButtonClicked:t[6]||(t[6]=s=>n.downloadChargeLog())},{default:r(()=>[d(" Als CSV exportieren "),i(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),c("a",P,null,512)]),U,v(" ToDo: build a table component "),i(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:a.totals.columns,rows:n.chargeLogTotals,total:1},null,8,["columns","rows"])])):v("v-if",!0)])):(h(),V(D,{key:0,subtype:"info"},{default:r(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const Y=x(N,[["render",j],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Y as default}; diff --git a/web/settings/assets/ChargeLog-10bd2a94.js b/web/settings/assets/ChargeLog-10bd2a94.js new file mode 100644 index 0000000000..6c45f73d23 --- /dev/null +++ b/web/settings/assets/ChargeLog-10bd2a94.js @@ -0,0 +1,2 @@ +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-63a0ad05.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-e3aeceea.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.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-c8fe9fe6.js b/web/settings/assets/ChargePointInstallation-36c1dd94.js similarity index 99% rename from web/settings/assets/ChargePointInstallation-c8fe9fe6.js rename to web/settings/assets/ChargePointInstallation-36c1dd94.js index 4c1b307976..616663904a 100644 --- a/web/settings/assets/ChargePointInstallation-c8fe9fe6.js +++ b/web/settings/assets/ChargePointInstallation-36c1dd94.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-63a0ad05.js";import{_ as L,C as oe}from"./index-c0c78ae6.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,P,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,P,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-d2606301.js"),["assets/commands-d2606301.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,P,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,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=P);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]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:P})}),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:"Vorlage "+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},ye=_(()=>u("hr",null,null,-1)),Pe={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,P,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"),y=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-Vorlage 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 die Ladepunkt-Vorlage "'+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-Vorlage",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),ye,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",Pe,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(y,{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(y,{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(y,{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(y,{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-Vorlagen",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-Vorlagen ")]),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(" Die Standard-Vorlage 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(y,{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 diese Ladepunkt-Vorlage 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(y,{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(y,{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(y,{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(y,{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(y,{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-63a0ad05.js";import{_ as L,C as oe}from"./index-e3aeceea.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,P,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,P,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-d2606301.js"),["assets/commands-d2606301.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,P,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,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=P);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]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:P})}),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:"Vorlage "+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},ye=_(()=>u("hr",null,null,-1)),Pe={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,P,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"),y=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-Vorlage 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 die Ladepunkt-Vorlage "'+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-Vorlage",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),ye,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",Pe,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(y,{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(y,{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(y,{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(y,{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-Vorlagen",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-Vorlagen ")]),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(" Die Standard-Vorlage 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(y,{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 diese Ladepunkt-Vorlage 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(y,{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(y,{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(y,{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(y,{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(y,{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-f0efb572.js b/web/settings/assets/Chart-90d03227.js similarity index 76% rename from web/settings/assets/Chart-f0efb572.js rename to web/settings/assets/Chart-90d03227.js index 3b6f11fd8f..d481718a9e 100644 --- a/web/settings/assets/Chart-f0efb572.js +++ b/web/settings/assets/Chart-90d03227.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-63a0ad05.js";import{C as H}from"./index-c0c78ae6.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-f0fbe832.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as R,z as Q,u as D,G as b,I as C,x 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";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":s=="soc"&&o.push("SoC");case"cp":switch(s){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(b,null,C(o.chartTotals,(x,y)=>(h(),R(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(b,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(b,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(),R(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),R(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-63a0ad05.js";import{C as H}from"./index-e3aeceea.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-f0fbe832.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-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";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-3440e88c.js b/web/settings/assets/CloudConfig-8d84e8b6.js similarity index 99% rename from web/settings/assets/CloudConfig-3440e88c.js rename to web/settings/assets/CloudConfig-8d84e8b6.js index 2d54de435c..f782622624 100644 --- a/web/settings/assets/CloudConfig-3440e88c.js +++ b/web/settings/assets/CloudConfig-8d84e8b6.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-c0c78ae6.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-63a0ad05.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(` d.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,d){return new Promise(p=>{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(a=>{this.$root.postClientMessage(d,"success"),p(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var b="Hochladen der Datei fehlgeschlagen!
"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),b+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),b+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(b,"danger"),p(!1)})}else console.error("no file selected for upload"),p(!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)}}},q={class:"system"},E=n("h2",null,"Achtung!",-1),I=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),Z={key:0},K={name:"backupForm"},J=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y=n("hr",null,null,-1),$={name:"restoreForm"},ee=n("br",null,null,-1),te={class:"input-group"},ne={class:"input-group-prepend"},se={class:"input-group-text"},ie={class:"custom-file"},oe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},ae={class:"input-group-append"},le=["disabled"],re={class:"row justify-content-center"},de={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),ce={name:"cloudBackupForm"},pe=n("br",null,null,-1),me=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),he={key:0},ge={name:"dataMigrationForm"},fe=n("br",null,null,-1),be=n("br",null,null,-1),ke={class:"input-group"},ye={class:"input-group-prepend"},_e={class:"input-group-text"},ve={class:"custom-file"},we={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ce={class:"input-group-append"},De=["disabled"],Be={class:"row justify-content-center"},Se={class:"col-md-4 d-flex py-1 justify-content-center"},Fe={name:"resetForm"},We={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"};function xe(t,e,d,p,i,a){const b=u("openwb-base-button-group-input"),m=u("openwb-base-alert"),k=u("openwb-base-heading"),c=u("font-awesome-icon"),y=u("openwb-base-click-button"),C=u("openwb-base-select-input"),F=u("openwb-base-button-input"),W=u("openwb-backup-cloud-proxy"),M=u("openwb-base-submit-buttons"),w=u("openwb-base-card");return g(),f("div",q,[s(m,{subtype:"danger"},{default:r(()=>[E,I,s(b,{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}),i.warningAcknowledged?(g(),f("div",Z,[s(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:r(()=>[n("form",K,[s(k,null,{default:r(()=>[o("Sicherung")]),_:1}),s(m,{subtype:"danger"},{default:r(()=>[o(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),s(m,{subtype:"info"},{default:r(()=>[o(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),J,o(" heruntergeladen werden. ")]),_:1}),n("div",Q,[n("div",X,[s(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:r(()=>[o(" Sicherung erstellen "),s(c,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),Y,n("form",$,[s(k,null,{default:r(()=>[o("Wiederherstellung")]),_:1}),s(m,{subtype:"danger"},{default:r(()=>[o(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ee,o(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",te,[n("div",ne,[n("div",se,[s(c,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ie,[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=>a.updateSelectedRestoreFile(l))},null,32),n("label",oe,_(i.selectedRestoreFile?i.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",ae,[n("button",{class:v(["btn",i.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>a.uploadRestoreFile())},[o(" Hochladen "),s(c,{"fixed-width":"",icon:["fas","upload"]})],10,le)])]),n("div",re,[n("div",de,[s(y,{class:v(i.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>a.restoreBackup())},{default:r(()=>[o(" Wiederherstellung starten "),s(c,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ue,n("form",ce,[s(k,null,{default:r(()=>[o(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),s(m,{subtype:"info"},{default:r(()=>[o(" 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."),pe,o(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),me,o(" . ")]),_:1}),s(C,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>a.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(g(),f("div",he,[s(F,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>a.sendSystemCommand("createCloudBackup",{}))}),s(W,{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=>a.updateConfiguration("openWB/system/backup_cloud/config",l))},null,8,["backupCloudType","configuration"])])):D("v-if",!0),s(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[8]||(e[8]=l=>t.$emit("save")),onReset:e[9]||(e[9]=l=>t.$emit("reset")),onDefaults:e[10]||(e[10]=l=>t.$emit("defaults"))})])]),_:1}),s(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:r(()=>[n("form",ge,[s(m,{subtype:"info"},{default:r(()=>[o(" 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."),fe,o(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),s(m,{subtype:"danger"},{default:r(()=>[o(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),be,o(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",ke,[n("div",ye,[n("div",_e,[s(c,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ve,[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]=l=>a.updateSelectedDataMigrationFile(l))},null,32),n("label",we,_(i.selectedDataMigrationFile?i.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ce,[n("button",{class:v(["btn",i.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedDataMigrationFile,type:"button",onClick:e[12]||(e[12]=l=>a.uploadDataMigrationFile())},[o(" Hochladen "),s(c,{"fixed-width":"",icon:["fas","upload"]})],10,De)])]),s(k,null,{default:r(()=>[o("Zuordnung der Komponenten")]),_:1}),(g(!0),f(B,null,S(i.dataMigrationConfig,l=>(g(),f("div",{key:l.sectionName},[s(k,null,{default:r(()=>[o(_(l.sectionName),1)]),_:2},1024),(g(!0),f(B,null,S(l.sectionComponents,h=>(g(),P(C,{key:h.key,title:h.label,options:a.getMigrationOptions(h.validTypes),modelValue:i.dataMigrationMapping[h.key],"onUpdate:modelValue":x=>i.dataMigrationMapping[h.key]=x},U({_:2},[h.help?{name:"help",fn:r(()=>[o(_(h.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Be,[n("div",Se,[s(y,{class:v(i.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.dataMigrationUploadDone,onButtonClicked:e[13]||(e[13]=l=>a.dataMigration())},{default:r(()=>[o(" Datenübernahme starten "),s(c,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",Fe,[s(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:r(()=>[n("div",We,[n("div",Me,[s(y,{class:"btn-danger clickable",onButtonClicked:e[14]||(e[14]=l=>a.sendSystemCommand("factoryReset",{}))},{default:r(()=>[s(c,{"fixed-width":"",icon:["fas","skull-crossbones"]}),o(" Zurücksetzen "),s(c,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:r(()=>[s(m,{subtype:"danger"},{default:r(()=>[o(" 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 Ne=N(G,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ne as default}; diff --git a/web/settings/assets/DataManagement-f7497562.js b/web/settings/assets/DataManagement-f7497562.js new file mode 100644 index 0000000000..ff6fb2d28c --- /dev/null +++ b/web/settings/assets/DataManagement-f7497562.js @@ -0,0 +1 @@ +import{l as L,$ as z,a0 as V,a1 as H,a2 as j,a3 as A,F as P}from"./vendor-fortawesome-63a0ad05.js";import{_ as R,C as N}from"./index-e3aeceea.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 l,u as a,x as k,q as n,a0 as q,y as W,a1 as E,z as D,n as v,G as S,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})}}},$={class:"backup-cloud-fallback"};function Z(t,e,r,c,i,s){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",$,[o(p,{subtype:"warning"},{default:l(()=>[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-e0e3e868.js"),["assets/backup_cloud-e0e3e868.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.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/DebugConfig-f7c371a7.js b/web/settings/assets/DebugConfig-dec66c23.js similarity index 98% rename from web/settings/assets/DebugConfig-f7c371a7.js rename to web/settings/assets/DebugConfig-dec66c23.js index 6ae63fef81..9e6845c500 100644 --- a/web/settings/assets/DebugConfig-f7c371a7.js +++ b/web/settings/assets/DebugConfig-dec66c23.js @@ -1,2 +1,2 @@ -import{l as h,Y as w,F as L}from"./vendor-fortawesome-63a0ad05.js";import{C as _}from"./index-c0c78ae6.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,Y as w,F as L}from"./vendor-fortawesome-63a0ad05.js";import{C as _}from"./index-e3aeceea.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-df420ebb.js b/web/settings/assets/GeneralChargeConfig-a10eba30.js similarity index 97% rename from web/settings/assets/GeneralChargeConfig-df420ebb.js rename to web/settings/assets/GeneralChargeConfig-a10eba30.js index b51e816cd2..1e6af98d0f 100644 --- a/web/settings/assets/GeneralChargeConfig-df420ebb.js +++ b/web/settings/assets/GeneralChargeConfig-a10eba30.js @@ -1 +1 @@ -import{C as c}from"./index-c0c78ae6.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-63a0ad05.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},w={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",w,[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 -> Fahrzeugvorlagen" ')]),_: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(v,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-e3aeceea.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-63a0ad05.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},w={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",w,[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 -> Fahrzeugvorlagen" ')]),_: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(v,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-54ff4abe.js b/web/settings/assets/GeneralConfig-95eb1bd0.js similarity index 99% rename from web/settings/assets/GeneralConfig-54ff4abe.js rename to web/settings/assets/GeneralConfig-95eb1bd0.js index 7771b151b7..b8d573f024 100644 --- a/web/settings/assets/GeneralConfig-54ff4abe.js +++ b/web/settings/assets/GeneralConfig-95eb1bd0.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-c0c78ae6.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-20bb207d.js";import"./vendor-fortawesome-63a0ad05.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/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-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"]),"./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-0a9b8381.js"),["assets/counter-0a9b8381.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_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-c1db4a59.js"),["assets/counter-c1db4a59.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-97abc089.js"),["assets/device-97abc089.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-5e1457d8.js"),["assets/counter-5e1457d8.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-8240d651.js"),["assets/bat-8240d651.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-e40be9d8.js"),["assets/bat-e40be9d8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-51af20e0.js"),["assets/counter-51af20e0.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-0401f2e3.js"),["assets/inverter-0401f2e3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-14b5d777.js"),["assets/bat-14b5d777.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-5b6e9d8c.js"),["assets/counter-5b6e9d8c.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-623468a2.js"),["assets/inverter-623468a2.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-cce4bbbc.js"),["assets/inverter-cce4bbbc.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"]),"./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-80f65b6c.js"),["assets/bat-80f65b6c.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-84d5fd98.js"),["assets/bat_smart_energy-84d5fd98.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-9afbdd76.js"),["assets/counter-9afbdd76.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-d8a49778.js"),["assets/device-d8a49778.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-c528e5ad.js"),["assets/inverter-c528e5ad.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-a3dbd5f9.js"),["assets/counter-a3dbd5f9.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/device.vue":()=>e(()=>import("./device-872a0e9b.js"),["assets/device-872a0e9b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-4a99d892.js"),["assets/inverter-4a99d892.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-491ac30f.js"),["assets/device-491ac30f.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"]),"./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_plenticore/device.vue":()=>e(()=>import("./device-97abc089.js"),["assets/device-97abc089.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"]),"./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-d8a49778.js"),["assets/device-d8a49778.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-872a0e9b.js"),["assets/device-872a0e9b.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-491ac30f.js"),["assets/device-491ac30f.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,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-63a0ad05.js";import{_ as e,C as X}from"./index-e3aeceea.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"]),"./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-0a9b8381.js"),["assets/counter-0a9b8381.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_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-c1db4a59.js"),["assets/counter-c1db4a59.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-97abc089.js"),["assets/device-97abc089.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-5e1457d8.js"),["assets/counter-5e1457d8.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-8240d651.js"),["assets/bat-8240d651.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-e40be9d8.js"),["assets/bat-e40be9d8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-51af20e0.js"),["assets/counter-51af20e0.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-0401f2e3.js"),["assets/inverter-0401f2e3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-14b5d777.js"),["assets/bat-14b5d777.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-5b6e9d8c.js"),["assets/counter-5b6e9d8c.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-623468a2.js"),["assets/inverter-623468a2.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-cce4bbbc.js"),["assets/inverter-cce4bbbc.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"]),"./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-80f65b6c.js"),["assets/bat-80f65b6c.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-84d5fd98.js"),["assets/bat_smart_energy-84d5fd98.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-9afbdd76.js"),["assets/counter-9afbdd76.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-d8a49778.js"),["assets/device-d8a49778.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-c528e5ad.js"),["assets/inverter-c528e5ad.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-a3dbd5f9.js"),["assets/counter-a3dbd5f9.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/device.vue":()=>e(()=>import("./device-872a0e9b.js"),["assets/device-872a0e9b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-4a99d892.js"),["assets/inverter-4a99d892.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-491ac30f.js"),["assets/device-491ac30f.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"]),"./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_plenticore/device.vue":()=>e(()=>import("./device-97abc089.js"),["assets/device-97abc089.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"]),"./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-d8a49778.js"),["assets/device-d8a49778.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-872a0e9b.js"),["assets/device-872a0e9b.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-491ac30f.js"),["assets/device-491ac30f.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,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-2f29e50b.js b/web/settings/assets/InstantChargeConfig-9eae0c02.js similarity index 96% rename from web/settings/assets/InstantChargeConfig-2f29e50b.js rename to web/settings/assets/InstantChargeConfig-9eae0c02.js index bee41ff841..944d236dc2 100644 --- a/web/settings/assets/InstantChargeConfig-2f29e50b.js +++ b/web/settings/assets/InstantChargeConfig-9eae0c02.js @@ -1 +1 @@ -import{C as l}from"./index-c0c78ae6.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-63a0ad05.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-e3aeceea.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-63a0ad05.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-b7ec6fbd.js b/web/settings/assets/LegalSettings-d4b65174.js similarity index 97% rename from web/settings/assets/LegalSettings-b7ec6fbd.js rename to web/settings/assets/LegalSettings-d4b65174.js index f11d3a9cb5..2373f1f605 100644 --- a/web/settings/assets/LegalSettings-b7ec6fbd.js +++ b/web/settings/assets/LegalSettings-d4b65174.js @@ -1 +1 @@ -import{C as g}from"./index-c0c78ae6.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-63a0ad05.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-e3aeceea.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-63a0ad05.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-6cfc446c.js b/web/settings/assets/LoadManagementConfig-d5b63768.js similarity index 99% rename from web/settings/assets/LoadManagementConfig-6cfc446c.js rename to web/settings/assets/LoadManagementConfig-d5b63768.js index 9610067b85..a4af2ea519 100644 --- a/web/settings/assets/LoadManagementConfig-6cfc446c.js +++ b/web/settings/assets/LoadManagementConfig-d5b63768.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-63a0ad05.js";import{C as $}from"./index-c0c78ae6.js";import{S as x}from"./OpenwbSortableList-4edd5659.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-63a0ad05.js";import{C as $}from"./index-e3aeceea.js";import{S as x}from"./OpenwbSortableList-4edd5659.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-f10c080f.js b/web/settings/assets/MqttBridgeConfig-f12d599b.js similarity index 99% rename from web/settings/assets/MqttBridgeConfig-f10c080f.js rename to web/settings/assets/MqttBridgeConfig-f12d599b.js index 4fc31792da..9784e335f7 100644 --- a/web/settings/assets/MqttBridgeConfig-f10c080f.js +++ b/web/settings/assets/MqttBridgeConfig-f12d599b.js @@ -1 +1 @@ -import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-63a0ad05.js";import{C as D}from"./index-c0c78ae6.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,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-63a0ad05.js";import{C as D}from"./index-e3aeceea.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,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/OpenwbBackupCloudProxy-a505d168.js b/web/settings/assets/OpenwbBackupCloudProxy-a505d168.js deleted file mode 100644 index 671c951cb6..0000000000 --- a/web/settings/assets/OpenwbBackupCloudProxy-a505d168.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as m}from"./index-c0c78ae6.js";import{_ as g}from"./dynamic-import-helper-be004503.js";import{_ as d,p as r,k as s,l as k,A as u,L as i,u as p,x as c,q as C,a0 as y,y as w,a1 as v}from"./vendor-20bb207d.js";const B={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"backup-cloud-fallback"};function O(n,e,o,l,b,t){const a=r("openwb-base-alert"),f=r("openwb-base-textarea");return s(),k("div",x,[u(a,{subtype:"warning"},{default:i(()=>[p(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+c(o.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),u(f,{title:"Konfiguration",subtype:"json","model-value":o.configuration,"onUpdate:modelValue":e[0]||(e[0]=_=>t.updateConfiguration(_,"configuration"))},{help:i(()=>[p(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),u(a,{subtype:"info"},{default:i(()=>[C("pre",null,c(JSON.stringify(o.configuration,void 0,2)),1)]),_:1})])}const T=d(B,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),h={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}`),y({loader:()=>g(Object.assign({"./nextcloud/backup_cloud.vue":()=>m(()=>import("./backup_cloud-e0e3e868.js"),["assets/backup_cloud-e0e3e868.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:T})}},methods:{updateConfiguration(n){this.$emit("update:configuration",n)}}};function E(n,e,o,l,b,t){return s(),w(v(t.myComponent),{configuration:o.configuration,backupCloudType:o.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=a=>t.updateConfiguration(a))},null,40,["configuration","backupCloudType"])}const D=d(h,[["render",E],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);export{D as O}; diff --git a/web/settings/assets/OptionalComponents-5427726a.js b/web/settings/assets/OptionalComponents-0b25b7fd.js similarity index 99% rename from web/settings/assets/OptionalComponents-5427726a.js rename to web/settings/assets/OptionalComponents-0b25b7fd.js index 797692f794..2756525503 100644 --- a/web/settings/assets/OptionalComponents-5427726a.js +++ b/web/settings/assets/OptionalComponents-0b25b7fd.js @@ -1,4 +1,4 @@ -import{_ as w,C as B}from"./index-c0c78ae6.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-20bb207d.js";import"./vendor-fortawesome-63a0ad05.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,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-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 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 der Ladepunkt-Vorlage 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-e3aeceea.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-20bb207d.js";import"./vendor-fortawesome-63a0ad05.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,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-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 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 der Ladepunkt-Vorlage 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-e3aeceea.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-20bb207d.js";import"./vendor-fortawesome-63a0ad05.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.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-85888759.js b/web/settings/assets/ScheduledChargeConfig-fae9929b.js similarity index 97% rename from web/settings/assets/ScheduledChargeConfig-85888759.js rename to web/settings/assets/ScheduledChargeConfig-fae9929b.js index 0a16ebf362..57c50a695e 100644 --- a/web/settings/assets/ScheduledChargeConfig-85888759.js +++ b/web/settings/assets/ScheduledChargeConfig-fae9929b.js @@ -1 +1 @@ -import{C as g}from"./index-c0c78ae6.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-63a0ad05.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-e3aeceea.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-63a0ad05.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-2039a901.js b/web/settings/assets/Status-bf8e6351.js similarity index 99% rename from web/settings/assets/Status-2039a901.js rename to web/settings/assets/Status-bf8e6351.js index 901b88542b..7b806f61ff 100644 --- a/web/settings/assets/Status-2039a901.js +++ b/web/settings/assets/Status-bf8e6351.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-63a0ad05.js";import{C as H}from"./index-c0c78ae6.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-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,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-63a0ad05.js";import{C as H}from"./index-e3aeceea.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-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,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-e3c73a84.js b/web/settings/assets/Support-dd56e881.js similarity index 98% rename from web/settings/assets/Support-e3c73a84.js rename to web/settings/assets/Support-dd56e881.js index 6af0c4ce01..f874c7b148 100644 --- a/web/settings/assets/Support-e3c73a84.js +++ b/web/settings/assets/Support-dd56e881.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-63a0ad05.js";import{C as B}from"./index-c0c78ae6.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-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.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-63a0ad05.js";import{C as B}from"./index-e3aeceea.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-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.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-49d418ab.js b/web/settings/assets/System-49d418ab.js new file mode 100644 index 0000000000..b772ee8957 --- /dev/null +++ b/web/settings/assets/System-49d418ab.js @@ -0,0 +1 @@ +import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-63a0ad05.js";import{C as E}from"./index-e3aeceea.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-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,$);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-ea43aee0.js b/web/settings/assets/System-ea43aee0.js deleted file mode 100644 index 8cb791b971..0000000000 --- a/web/settings/assets/System-ea43aee0.js +++ /dev/null @@ -1 +0,0 @@ -import{l as W,Z as C,p as S,_ as q,O as A,$ as x,F as $}from"./vendor-fortawesome-63a0ad05.js";import{C as E}from"./index-c0c78ae6.js";import{O as U}from"./OpenwbBackupCloudProxy-a505d168.js";import{_ as z,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 F,G as T,I as j,x as D,Q as O,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";import"./dynamic-import-helper-be004503.js";W.add(C,S,q,A,x);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbBackupCloudProxy:U},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=>(O("data-v-059847f6"),s=s(),I(),s),N={class:"system"},Z=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)),P={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},J={class:"row justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={name:"powerForm"},X={class:"row justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={class:"col-md-4 d-flex py-1 justify-content-center"},te={name:"releaseChangeForm"},se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe=u(()=>a("br",null,null,-1)),re={class:"row justify-content-center"},ie={class:"col-md-4 d-flex py-1 justify-content-center"};function le(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",N,[t(m,{subtype:"danger"},{default:o(()=>[Z,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",P,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",J,[a("div",Q,[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",K,[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(),F(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(T,null,j(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},D(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",M,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",X,[a("div",Y,[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",ee,[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",te,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",re,[a("div",ie,[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."),se,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),ne,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.'),ae,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),oe,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 ge=z(L,[["render",le],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{ge as default}; diff --git a/web/settings/assets/TestingStore-27fe5978.js b/web/settings/assets/TestingStore-7fc25a33.js similarity index 99% rename from web/settings/assets/TestingStore-27fe5978.js rename to web/settings/assets/TestingStore-7fc25a33.js index 6adad2b97a..d880b894c9 100644 --- a/web/settings/assets/TestingStore-27fe5978.js +++ b/web/settings/assets/TestingStore-7fc25a33.js @@ -1 +1 @@ -import{C as h}from"./index-c0c78ae6.js";import{S as y}from"./OpenwbSortableList-4edd5659.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-63a0ad05.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-e3aeceea.js";import{S as y}from"./OpenwbSortableList-4edd5659.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-63a0ad05.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-3e5d29bd.js b/web/settings/assets/TimeChargeConfig-1b50ef43.js similarity index 96% rename from web/settings/assets/TimeChargeConfig-3e5d29bd.js rename to web/settings/assets/TimeChargeConfig-1b50ef43.js index d6d0b1dcd8..92eb973749 100644 --- a/web/settings/assets/TimeChargeConfig-3e5d29bd.js +++ b/web/settings/assets/TimeChargeConfig-1b50ef43.js @@ -1 +1 @@ -import{C as l}from"./index-c0c78ae6.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-63a0ad05.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-e3aeceea.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-63a0ad05.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-3d3648b0.js b/web/settings/assets/VehicleConfig-a9f43aee.js similarity index 99% rename from web/settings/assets/VehicleConfig-3d3648b0.js rename to web/settings/assets/VehicleConfig-a9f43aee.js index c62e602146..d59a832b1b 100644 --- a/web/settings/assets/VehicleConfig-3d3648b0.js +++ b/web/settings/assets/VehicleConfig-a9f43aee.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-63a0ad05.js";import{_ as z,C as ie}from"./index-c0c78ae6.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-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 y=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(y,{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(y,{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-11ffdccd.js"),["assets/vehicle-11ffdccd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>z(()=>import("./vehicle-82a4990a.js"),["assets/vehicle-82a4990a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>z(()=>import("./vehicle-344c6660.js"),["assets/vehicle-344c6660.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>z(()=>import("./vehicle-2e167e45.js"),["assets/vehicle-2e167e45.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>z(()=>import("./vehicle-ebf7e590.js"),["assets/vehicle-ebf7e590.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>z(()=>import("./vehicle-8cbf750d.js"),["assets/vehicle-8cbf750d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>z(()=>import("./vehicle-34ce6cc8.js"),["assets/vehicle-34ce6cc8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>z(()=>import("./vehicle-c74f02d0.js"),["assets/vehicle-c74f02d0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>z(()=>import("./vehicle-ef079f93.js"),["assets/vehicle-ef079f93.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>z(()=>import("./vehicle-cbd74ad8.js"),["assets/vehicle-cbd74ad8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>z(()=>import("./vehicle-55f35b82.js"),["assets/vehicle-55f35b82.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-13ef03ae.js","assets/index-c0c78ae6.js","assets/vendor-fortawesome-63a0ad05.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>z(()=>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 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]=y=>m.updateConfiguration(y))},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-Vorlage "+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:"Ladeprofil-Vorlage "+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)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Pe=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 y=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"),P=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(y,{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(y,{show:v.showEvTemplateModal,title:"Fahrzeug-Vorlage 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 die Fahrzeug-Vorlage "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(y,{show:v.showChargeTemplateModal,title:"Ladeprofil-Vorlage 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 die Ladeprofil-Vorlage "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(y,{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(y,{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-Vorlage",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:"Ladeprofil-Vorlage",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 der Ladepunkt-Vorlage 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)."),We,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."),ye,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."),Pe,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(P,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(P,null,{default:n(()=>[l("Vorlagen")]),_: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-Vorlagen ")]),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(" Die Standard-Vorlage kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(P,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(P,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(P,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(" Ladeprofil-Vorlagen ")]),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(" Die Standard-Vorlage kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(P,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(P,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(P,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(P,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:W=>m.removeChargeTemplateSchedulePlanModal(d,h,W)},{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,W)=>(r(),f(_,{key:W,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(P,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:W=>m.removeChargeTemplateTimeChargingPlanModal(d,h,W)},{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,W)=>(r(),f(_,{key:W,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+W)},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}; +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-63a0ad05.js";import{_ as z,C as ie}from"./index-e3aeceea.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-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 y=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(y,{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(y,{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-11ffdccd.js"),["assets/vehicle-11ffdccd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>z(()=>import("./vehicle-82a4990a.js"),["assets/vehicle-82a4990a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>z(()=>import("./vehicle-344c6660.js"),["assets/vehicle-344c6660.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>z(()=>import("./vehicle-2e167e45.js"),["assets/vehicle-2e167e45.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>z(()=>import("./vehicle-ebf7e590.js"),["assets/vehicle-ebf7e590.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>z(()=>import("./vehicle-8cbf750d.js"),["assets/vehicle-8cbf750d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>z(()=>import("./vehicle-34ce6cc8.js"),["assets/vehicle-34ce6cc8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>z(()=>import("./vehicle-c74f02d0.js"),["assets/vehicle-c74f02d0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>z(()=>import("./vehicle-ef079f93.js"),["assets/vehicle-ef079f93.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>z(()=>import("./vehicle-cbd74ad8.js"),["assets/vehicle-cbd74ad8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>z(()=>import("./vehicle-79ec6aa7.js"),["assets/vehicle-79ec6aa7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-13ef03ae.js","assets/index-e3aeceea.js","assets/vendor-fortawesome-63a0ad05.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>z(()=>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 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]=y=>m.updateConfiguration(y))},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-Vorlage "+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:"Ladeprofil-Vorlage "+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)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Pe=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 y=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"),P=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(y,{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(y,{show:v.showEvTemplateModal,title:"Fahrzeug-Vorlage 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 die Fahrzeug-Vorlage "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(y,{show:v.showChargeTemplateModal,title:"Ladeprofil-Vorlage 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 die Ladeprofil-Vorlage "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(y,{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(y,{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-Vorlage",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:"Ladeprofil-Vorlage",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 der Ladepunkt-Vorlage 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)."),We,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."),ye,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."),Pe,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(P,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(P,null,{default:n(()=>[l("Vorlagen")]),_: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-Vorlagen ")]),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(" Die Standard-Vorlage kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(P,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(P,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(P,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(" Ladeprofil-Vorlagen ")]),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(" Die Standard-Vorlage kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(P,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(P,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(P,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(P,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:W=>m.removeChargeTemplateSchedulePlanModal(d,h,W)},{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,W)=>(r(),f(_,{key:W,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(P,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:W=>m.removeChargeTemplateTimeChargingPlanModal(d,h,W)},{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,W)=>(r(),f(_,{key:W,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+W)},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/index-c0c78ae6.js b/web/settings/assets/index-e3aeceea.js similarity index 93% rename from web/settings/assets/index-c0c78ae6.js rename to web/settings/assets/index-e3aeceea.js index ecc744e65f..2628a6292d 100644 --- a/web/settings/assets/index-c0c78ae6.js +++ b/web/settings/assets/index-e3aeceea.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-63a0ad05.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==""&&(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?!1:!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-2039a901.js"),["assets/Status-2039a901.js","assets/vendor-fortawesome-63a0ad05.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-109358ae.js"),["assets/ChargeLog-109358ae.js","assets/vendor-fortawesome-63a0ad05.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-f0efb572.js"),["assets/Chart-f0efb572.js","assets/vendor-fortawesome-63a0ad05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-f0fbe832.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-54ff4abe.js"),["assets/GeneralConfig-54ff4abe.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-5427726a.js"),["assets/OptionalComponents-5427726a.js","assets/dynamic-import-helper-be004503.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-df420ebb.js"),["assets/GeneralChargeConfig-df420ebb.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-2f29e50b.js"),["assets/InstantChargeConfig-2f29e50b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-401e595e.js"),["assets/PVChargeConfig-401e595e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-3e5d29bd.js"),["assets/TimeChargeConfig-3e5d29bd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-85888759.js"),["assets/ScheduledChargeConfig-85888759.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-dd4637c5.js"),["assets/HardwareInstallation-dd4637c5.js","assets/vendor-fortawesome-63a0ad05.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-6cfc446c.js"),["assets/LoadManagementConfig-6cfc446c.js","assets/vendor-fortawesome-63a0ad05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-4edd5659.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-c8fe9fe6.js"),["assets/ChargePointInstallation-c8fe9fe6.js","assets/vendor-fortawesome-63a0ad05.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-3d3648b0.js"),["assets/VehicleConfig-3d3648b0.js","assets/vendor-fortawesome-63a0ad05.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-3440e88c.js"),["assets/CloudConfig-3440e88c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-f10c080f.js"),["assets/MqttBridgeConfig-f10c080f.js","assets/vendor-fortawesome-63a0ad05.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-f7c371a7.js"),["assets/DebugConfig-f7c371a7.js","assets/vendor-fortawesome-63a0ad05.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-e3c73a84.js"),["assets/Support-e3c73a84.js","assets/vendor-fortawesome-63a0ad05.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-b7ec6fbd.js"),["assets/LegalSettings-b7ec6fbd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-ea43aee0.js"),["assets/System-ea43aee0.js","assets/vendor-fortawesome-63a0ad05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/OpenwbBackupCloudProxy-a505d168.js","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/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-7ab8b22b.js"),["assets/DataManagement-7ab8b22b.js","assets/vendor-fortawesome-63a0ad05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/OpenwbBackupCloudProxy-a505d168.js","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-27fe5978.js"),["assets/TestingStore-27fe5978.js","assets/OpenwbSortableList-4edd5659.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-63a0ad05.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==""&&(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?!1:!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-bf8e6351.js"),["assets/Status-bf8e6351.js","assets/vendor-fortawesome-63a0ad05.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-10bd2a94.js"),["assets/ChargeLog-10bd2a94.js","assets/vendor-fortawesome-63a0ad05.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-90d03227.js"),["assets/Chart-90d03227.js","assets/vendor-fortawesome-63a0ad05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-f0fbe832.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-95eb1bd0.js"),["assets/GeneralConfig-95eb1bd0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-0b25b7fd.js"),["assets/OptionalComponents-0b25b7fd.js","assets/dynamic-import-helper-be004503.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-a10eba30.js"),["assets/GeneralChargeConfig-a10eba30.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-9eae0c02.js"),["assets/InstantChargeConfig-9eae0c02.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-cf0b7b77.js"),["assets/PVChargeConfig-cf0b7b77.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-1b50ef43.js"),["assets/TimeChargeConfig-1b50ef43.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-fae9929b.js"),["assets/ScheduledChargeConfig-fae9929b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-215225f6.js"),["assets/HardwareInstallation-215225f6.js","assets/vendor-fortawesome-63a0ad05.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-d5b63768.js"),["assets/LoadManagementConfig-d5b63768.js","assets/vendor-fortawesome-63a0ad05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-4edd5659.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-36c1dd94.js"),["assets/ChargePointInstallation-36c1dd94.js","assets/vendor-fortawesome-63a0ad05.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-a9f43aee.js"),["assets/VehicleConfig-a9f43aee.js","assets/vendor-fortawesome-63a0ad05.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-8d84e8b6.js"),["assets/CloudConfig-8d84e8b6.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-f12d599b.js"),["assets/MqttBridgeConfig-f12d599b.js","assets/vendor-fortawesome-63a0ad05.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-dec66c23.js"),["assets/DebugConfig-dec66c23.js","assets/vendor-fortawesome-63a0ad05.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-dd56e881.js"),["assets/Support-dd56e881.js","assets/vendor-fortawesome-63a0ad05.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-d4b65174.js"),["assets/LegalSettings-d4b65174.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-49d418ab.js"),["assets/System-49d418ab.js","assets/vendor-fortawesome-63a0ad05.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-f7497562.js"),["assets/DataManagement-f7497562.js","assets/vendor-fortawesome-63a0ad05.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-7fc25a33.js"),["assets/TestingStore-7fc25a33.js","assets/OpenwbSortableList-4edd5659.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-63a0ad05.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-55f35b82.js b/web/settings/assets/vehicle-79ec6aa7.js similarity index 97% rename from web/settings/assets/vehicle-55f35b82.js rename to web/settings/assets/vehicle-79ec6aa7.js index 2548467bbc..053225e031 100644 --- a/web/settings/assets/vehicle-55f35b82.js +++ b/web/settings/assets/vehicle-79ec6aa7.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-c0c78ae6.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-fortawesome-63a0ad05.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.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-20bb207d.js";import{a as y}from"./vendor-axios-13ef03ae.js";import{C}from"./index-e3aeceea.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-fortawesome-63a0ad05.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.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/downloadChargeLog.php b/web/settings/downloadChargeLog.php new file mode 100644 index 0000000000..76439a4df9 --- /dev/null +++ b/web/settings/downloadChargeLog.php @@ -0,0 +1,35 @@ + &$section_value) { + foreach ($section_value as $key => &$value) { + if (is_bool($value)) { + $value = $value ? "true" : "false"; + } + $csv_row[$section_key . " " . $key] = $value; + } + } + if (!$header_done) { + print(implode(";", array_keys($csv_row)) . "\n"); + $header_done = true; + } + print(implode(";", $csv_row) . "\n"); + } +} +?> diff --git a/web/settings/index.html b/web/settings/index.html index 21fc079aa3..e198de90ae 100644 --- a/web/settings/index.html +++ b/web/settings/index.html @@ -7,7 +7,7 @@ openWB - +