From 4b370ebe5044b090def8ef0682537d0822b8d85c Mon Sep 17 00:00:00 2001 From: electron Date: Mon, 5 Oct 2026 07:16:03 +0100 Subject: [PATCH] fix SoC display when changing vehicles --- .../source/src/assets/js/processMessages.ts | 8 +++-- .../source/src/assets/js/sendMessages.ts | 2 +- .../chargePointList/VehicleData.vue | 17 ++++----- .../src/components/chargePointList/model.ts | 35 +++++++++++++++++-- .../chargePointList/processMessages.ts | 8 ++--- 5 files changed, 49 insertions(+), 21 deletions(-) diff --git a/packages/modules/display_themes/colors/source/src/assets/js/processMessages.ts b/packages/modules/display_themes/colors/source/src/assets/js/processMessages.ts index cacc32ae61..222cc1163b 100755 --- a/packages/modules/display_themes/colors/source/src/assets/js/processMessages.ts +++ b/packages/modules/display_themes/colors/source/src/assets/js/processMessages.ts @@ -29,7 +29,7 @@ const topicsToSubscribe = [ 'openWB/pv/get/#', 'openWB/chargepoint/#', 'openWB/vehicle/#', - 'openWB/general/chargemode_config/bat/#', + 'openWB/general/chargemode_config/pv_charging/#', 'openWB/optional/ep/#', 'openWB/system/#', 'openWB/LegacySmartHome/#', @@ -64,7 +64,9 @@ function processMqttMessage(topic: string, payload: Buffer) { processVehicleTemplateMessages(topic, message) } else if (topic.match(/^openwb\/vehicle\//i)) { processVehicleMessages(topic, message) - } else if (topic.match(/^openwb\/general\/chargemode_config\/bat\//i)) { + } else if ( + topic.match(/^openwb\/general\/chargemode_config\/pv_charging\//i) + ) { processPvConfigMessages(topic, message) } else if (topic.match(/^openwb\/graph\//i)) { processLiveGraphMessages(topic, message) @@ -194,7 +196,7 @@ function processPvConfigMessages(topic: string, message: string) { const elements = topic.split('/') if (elements.length > 0) { switch (elements[4]) { - case 'mode': + case 'bat_mode': globalData.updatePvBatteryPriority(JSON.parse(message)) break default: diff --git a/packages/modules/display_themes/colors/source/src/assets/js/sendMessages.ts b/packages/modules/display_themes/colors/source/src/assets/js/sendMessages.ts index ab17203fb5..dc6396f6a3 100755 --- a/packages/modules/display_themes/colors/source/src/assets/js/sendMessages.ts +++ b/packages/modules/display_themes/colors/source/src/assets/js/sendMessages.ts @@ -19,7 +19,7 @@ const topics: { [topic: string]: string } = { cpScheduledPlanActive: 'openWB/set/vehicle/template/charge_template/%/chargemode/scheduled_charging/plans/@/active', pvBatteryPriority: - 'openWB/set/general/chargemode_config/bat/mode', + 'openWB/set/general/chargemode_config/pv_charging/bat_mode', cpVehicle: 'openWB/set/chargepoint/%/config/ev', cpInstantChargeLimitMode: 'openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected', diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/VehicleData.vue b/packages/modules/display_themes/colors/source/src/components/chargePointList/VehicleData.vue index 727a1a5529..74e01e9b2b 100644 --- a/packages/modules/display_themes/colors/source/src/components/chargePointList/VehicleData.vue +++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/VehicleData.vue @@ -117,15 +117,16 @@ v-model="chargeMode" class="chargemodes mx-3 mt-4 mb-0" :options=" - Object.keys(chargemodes).map((v) => { - return { - text: chargemodes[v].name, - value: v, - color: chargemodes[v].color, - icon: chargemodes[v].icon, - active: chargemodes[v].mode == chargepoint.chargeMode, - } + (Object.values(chargemodes).map((v) => { + return { + text: v.name, + value: v.mode, + color: v.color, + icon: v.icon, + active: v.mode == chargepoint.chargeMode, + } }) + ) " /> diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts b/packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts index 8eea21a9c2..a8b51a2c0b 100755 --- a/packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts +++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts @@ -22,7 +22,7 @@ export class ChargePoint { evTemplate = 0 currentPlan = '' averageConsumption = 0 - vehicleName = '' + // vehicleName = '' rangeCharged = 0 rangeUnit = '' counter = 0 @@ -40,8 +40,8 @@ export class ChargePoint { currents = [0, 0, 0] phasesToUse = 0 // soc = 0 - isSocConfigured = true - isSocManual = false + // isSocConfigured = true + // isSocManual = false waitingForSoc = false color = 'white' @@ -68,6 +68,18 @@ export class ChargePoint { updateConnectedVehicle(id: number) { this._connectedVehicle = id } + get vehicleName() { + if (vehicles[this.connectedVehicle]) { + return vehicles[this.connectedVehicle].name + } else { + return 'Fahrzeug' + } + } + set vehicleName(name: string) { + if (vehicles[this.connectedVehicle]) { + vehicles[this.connectedVehicle].name = name + } + } get soc() { if (vehicles[this.connectedVehicle]) { return vehicles[this.connectedVehicle].soc @@ -80,6 +92,20 @@ export class ChargePoint { vehicles[this.connectedVehicle].soc = newSoc } } + get isSocConfigured() { + if (vehicles[this.connectedVehicle]) { + return vehicles[this.connectedVehicle].isSocConfigured + } else { + return false + } + } + get isSocManual() { + if (vehicles[this.connectedVehicle]) { + return vehicles[this.connectedVehicle].isSocManual + } else { + return false + } + } get chargeMode() { return this.chargeTemplate?.chargemode.selected ?? ChargeMode.stop } @@ -331,6 +357,9 @@ export class Vehicle { range = 0 private _etActive = false private _etMaxPrice = 20 + isSocConfigured = false + isSocManual = false + constructor(index: number) { this.id = index } diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/processMessages.ts b/packages/modules/display_themes/colors/source/src/components/chargePointList/processMessages.ts index 816285961b..b02ea16230 100755 --- a/packages/modules/display_themes/colors/source/src/components/chargePointList/processMessages.ts +++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/processMessages.ts @@ -149,12 +149,8 @@ export function processVehicleMessages(topic: string, message: string) { vehicles[index].updateEvTemplateId(+message) } else if (topic.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)) { const config = JSON.parse(message) - Object.values(chargePoints).forEach((cp) => { - if (cp.connectedVehicle == index) { - cp.isSocConfigured = config.type !== null - cp.isSocManual = config.type == 'manual' - } - }) + vehicles[index].isSocConfigured = config.type !== null + vehicles[index].isSocManual = config.type == 'manual' } else { // console.warn('Ignored vehicle message [' + topic + ']=' + message) }