From e9bcd2f389439283ae12e054bc986ea1162ca3b4 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Wed, 9 Apr 2025 19:16:26 +0200 Subject: [PATCH 1/7] Add manual SoC input to charge point card --- .../source/src/components/ChargePointCard.vue | 19 ++- .../components/ChargePointManualSocDialog.vue | 121 ++++++++++++++++++ .../source/src/components/SliderDouble.vue | 1 + .../koala/source/src/stores/mqtt-store.ts | 44 +++++++ 4 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 packages/modules/web_themes/koala/source/src/components/ChargePointManualSocDialog.vue diff --git a/packages/modules/web_themes/koala/source/src/components/ChargePointCard.vue b/packages/modules/web_themes/koala/source/src/components/ChargePointCard.vue index 1d5e12b6e1..79538e9bda 100644 --- a/packages/modules/web_themes/koala/source/src/components/ChargePointCard.vue +++ b/packages/modules/web_themes/koala/source/src/components/ChargePointCard.vue @@ -43,7 +43,18 @@ :limit-mode="limitMode" :current-value="currentValue" :target-time="targetTime" - /> + > + + @@ -52,6 +63,10 @@ :chargePointId="props.chargePointId" v-model="settingsVisible" /> + diff --git a/packages/modules/web_themes/koala/source/src/components/SliderDouble.vue b/packages/modules/web_themes/koala/source/src/components/SliderDouble.vue index cfb2a555b8..736f632930 100644 --- a/packages/modules/web_themes/koala/source/src/components/SliderDouble.vue +++ b/packages/modules/web_themes/koala/source/src/components/SliderDouble.vue @@ -40,6 +40,7 @@ ? formatEnergy(currentValue) : currentValue + '%' }} +
diff --git a/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts b/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts index 18663a6462..09b33d9495 100644 --- a/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts +++ b/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts @@ -1461,6 +1461,49 @@ export const useMqttStore = defineStore('mqtt', () => { }); }; + /** + * Get or set the manual SoC for a vehicle connected to a charge point + * @param chargePointId charge point id + * @returns number | undefined + */ + const chargePointConnectedVehicleSocManual = (chargePointId: number) => { + return computed({ + get() { + const vehicleInfo = + chargePointConnectedVehicleInfo(chargePointId).value; + if (!vehicleInfo) { + console.warn('No vehicle connected to charge point', chargePointId); + return; + } + const vehicleId = vehicleInfo.id; + const topic = `openWB/vehicle/${vehicleId}/soc_module/calculated_soc_state`; + const socState = getValue.value(topic) as + | { soc_start: number; manual_soc: number | null } + | undefined; + return socState?.manual_soc ?? socState?.soc_start ?? 0; + }, + set(newValue: number) { + const vehicleInfo = + chargePointConnectedVehicleInfo(chargePointId).value; + if (!vehicleInfo) { + console.warn('No vehicle connected to charge point', chargePointId); + return; + } + const vehicleId = vehicleInfo.id; + doPublish( + `openWB/set/vehicle/${vehicleId}/soc_module/calculated_soc_state/manual_soc`, + newValue, + ); + // Also update the charge point connected vehicle soc + const cpTopic = `openWB/chargepoint/${chargePointId}/get/connected_vehicle/soc`; + const cpSoc = getValue.value(cpTopic) as { soc?: number }; + if (cpSoc && cpSoc.soc !== undefined) { + updateTopic(cpTopic, newValue, 'soc', true); + } + }, + }); + }; + /** * Get the charge point connected vehicle charge template index identified by the charge point id * @param chargePointId charge point id @@ -2468,6 +2511,7 @@ export const useMqttStore = defineStore('mqtt', () => { vehicleScheduledChargingPlanSocScheduled, vehicleScheduledChargingPlanPhases, vehicleScheduledChargingPlanPhasesPv, + chargePointConnectedVehicleSocManual, // Battery data batteryConfigured, batteryIds, From dd9a5242b0f241d906683a167267eae66781a2a2 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Thu, 10 Apr 2025 08:13:20 +0200 Subject: [PATCH 2/7] Formatting / consistency changes --- .../src/components/ChargePointManualSocDialog.vue | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/modules/web_themes/koala/source/src/components/ChargePointManualSocDialog.vue b/packages/modules/web_themes/koala/source/src/components/ChargePointManualSocDialog.vue index c32e5a3c55..90cbd87325 100644 --- a/packages/modules/web_themes/koala/source/src/components/ChargePointManualSocDialog.vue +++ b/packages/modules/web_themes/koala/source/src/components/ChargePointManualSocDialog.vue @@ -77,12 +77,12 @@ const vehicleName = computed(() => { const socInputValue = ref(0); -function getManualSocValue() { +const getManualSocValue = () => { const storeValue = mqttStore.chargePointConnectedVehicleSocManual(props.chargePointId).value ?? 0; socInputValue.value = storeValue; -} +}; onMounted(() => { getManualSocValue(); @@ -109,13 +109,13 @@ const decrementSoc = () => { } }; -function confirmChanges() { +const confirmChanges = () => { mqttStore.chargePointConnectedVehicleSocManual(props.chargePointId).value = socInputValue.value; -} +}; -function cancelChanges() { +const cancelChanges = () => { // Reset to store value getManualSocValue(); -} +}; From 204aefd556f0fd7e1bdfe4599e0bc876c7e6e617 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Thu, 10 Apr 2025 08:14:24 +0200 Subject: [PATCH 3/7] Formatting --- .../koala/source/src/components/BaseTable.vue | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/modules/web_themes/koala/source/src/components/BaseTable.vue b/packages/modules/web_themes/koala/source/src/components/BaseTable.vue index 5de3eaeff7..91d56c5baf 100644 --- a/packages/modules/web_themes/koala/source/src/components/BaseTable.vue +++ b/packages/modules/web_themes/koala/source/src/components/BaseTable.vue @@ -88,14 +88,17 @@ const customFilterMethod: FilterFunction = (rows, terms, cols) => { return rows; } const lowerTerms = terms.toLowerCase(); - const columnsToSearch = props.columnsToSearch || - cols.map(col => typeof col.field === 'string' ? col.field : ''); - return rows.filter(row => { - return columnsToSearch.some(field => { + const columnsToSearch = + props.columnsToSearch || + cols.map((col) => (typeof col.field === 'string' ? col.field : '')); + return rows.filter((row) => { + return columnsToSearch.some((field) => { const val = row[field as keyof typeof row]; - return val !== null && - val !== undefined && - String(val).toLowerCase().includes(lowerTerms); + return ( + val !== null && + val !== undefined && + String(val).toLowerCase().includes(lowerTerms) + ); }); }); }; From 8738dbec6cee352adf81e99dce13eb0b885547f0 Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Thu, 10 Apr 2025 10:13:49 +0200 Subject: [PATCH 4/7] Remove console.warn due to async error --- .../web_themes/koala/source/src/stores/mqtt-store.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts b/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts index 09b33d9495..65fd0ef6c0 100644 --- a/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts +++ b/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts @@ -1471,11 +1471,7 @@ export const useMqttStore = defineStore('mqtt', () => { get() { const vehicleInfo = chargePointConnectedVehicleInfo(chargePointId).value; - if (!vehicleInfo) { - console.warn('No vehicle connected to charge point', chargePointId); - return; - } - const vehicleId = vehicleInfo.id; + const vehicleId = vehicleInfo?.id; const topic = `openWB/vehicle/${vehicleId}/soc_module/calculated_soc_state`; const socState = getValue.value(topic) as | { soc_start: number; manual_soc: number | null } From a6a7f328c800e9490e1fb84a5323684a9e1263de Mon Sep 17 00:00:00 2001 From: Brett-S-OWB Date: Fri, 11 Apr 2025 10:49:04 +0200 Subject: [PATCH 5/7] Manual SoC update icon only displayed if vehicle SoC type = "manual" --- .../source/src/components/ChargePointCard.vue | 4 +++- .../components/ChargePointManualSocDialog.vue | 15 +++++++++------ .../koala/source/src/stores/mqtt-store.ts | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/packages/modules/web_themes/koala/source/src/components/ChargePointCard.vue b/packages/modules/web_themes/koala/source/src/components/ChargePointCard.vue index 79538e9bda..1263bf7b01 100644 --- a/packages/modules/web_themes/koala/source/src/components/ChargePointCard.vue +++ b/packages/modules/web_themes/koala/source/src/components/ChargePointCard.vue @@ -44,7 +44,7 @@ :current-value="currentValue" :target-time="targetTime" > -