From dc66b6df598bf9830f68723f567537fc761b3819 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Mon, 4 Aug 2025 13:00:15 +0200 Subject: [PATCH 1/5] check for wildcard --- packages/control/ev/ev.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/control/ev/ev.py b/packages/control/ev/ev.py index acc2c59fce..14c938595c 100644 --- a/packages/control/ev/ev.py +++ b/packages/control/ev/ev.py @@ -9,6 +9,7 @@ from dataclasses import dataclass, field import logging from typing import List, Optional, Tuple +import fnmatch from control import data from control.ev.charge_template import ChargeTemplate @@ -466,12 +467,12 @@ def get_ev_to_rfid(rfid: str, vehicle_id: Optional[str] = None) -> Optional[int] for vehicle in data.data.ev_data: try: if "ev" in vehicle: - if vehicle_id is not None and vehicle_id in data.data.ev_data[vehicle].data.tag_id: - log.debug(f"MAC {vehicle_id} wird EV {data.data.ev_data[vehicle].num} zugeordnet.") - return data.data.ev_data[vehicle].num - if rfid in data.data.ev_data[vehicle].data.tag_id: - log.debug(f"RFID {rfid} wird EV {data.data.ev_data[vehicle].num} zugeordnet.") - return data.data.ev_data[vehicle].num + ev_id = vehicle_id if vehicle_id is not None else rfid + for tag_id in data.data.ev_data[vehicle].data.tag_id: + if fnmatch.fnmatch(ev_id, tag_id): + log.debug(f"EV_ID '{ev_id}' und gespeicherte Tag_ID {tag_id} stimmen überein. " + f"EV {data.data.ev_data[vehicle].num} wird zugeordnet.") + return data.data.ev_data[vehicle].num except Exception: log.exception("Fehler im ev-Modul "+vehicle) return None From ac3dc12c82923c7da8e22cbc1dc6bb8c5dce4fb7 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Mon, 4 Aug 2025 13:09:11 +0200 Subject: [PATCH 2/5] check rfid after checking mac --- packages/control/ev/ev.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/control/ev/ev.py b/packages/control/ev/ev.py index 14c938595c..448fb8db16 100644 --- a/packages/control/ev/ev.py +++ b/packages/control/ev/ev.py @@ -467,11 +467,15 @@ def get_ev_to_rfid(rfid: str, vehicle_id: Optional[str] = None) -> Optional[int] for vehicle in data.data.ev_data: try: if "ev" in vehicle: - ev_id = vehicle_id if vehicle_id is not None else rfid for tag_id in data.data.ev_data[vehicle].data.tag_id: - if fnmatch.fnmatch(ev_id, tag_id): - log.debug(f"EV_ID '{ev_id}' und gespeicherte Tag_ID {tag_id} stimmen überein. " - f"EV {data.data.ev_data[vehicle].num} wird zugeordnet.") + if vehicle_id is not None: + if fnmatch.fnmatch(vehicle_id, tag_id): + log.debug(f"MAC {vehicle_id} und gespeicherte Tag_ID {tag_id} stimmen überein. " + f"EV {data.data.ev_data[vehicle].num} zugeordnet.") + return data.data.ev_data[vehicle].num + if fnmatch.fnmatch(rfid, tag_id): + log.debug(f"RFID {rfid} und gespeicherte Tag_ID {tag_id} stimmen überein. " + f"EV {data.data.ev_data[vehicle].num} zugeordnet.") return data.data.ev_data[vehicle].num except Exception: log.exception("Fehler im ev-Modul "+vehicle) From d81d11aed45debfb3728a8334c97ddbbd83a15bc Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Fri, 8 Aug 2025 07:26:38 +0200 Subject: [PATCH 3/5] exact match priority --- packages/control/ev/ev.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/control/ev/ev.py b/packages/control/ev/ev.py index 448fb8db16..83c562dcb6 100644 --- a/packages/control/ev/ev.py +++ b/packages/control/ev/ev.py @@ -467,6 +467,11 @@ def get_ev_to_rfid(rfid: str, vehicle_id: Optional[str] = None) -> Optional[int] for vehicle in data.data.ev_data: try: if "ev" in vehicle: + # exakte matches haben Priorität + if vehicle_id is not None and fnmatch.filter(data.data.ev_data[vehicle].data.tag_id, vehicle_id): + return data.data.ev_data[vehicle].num + if fnmatch.filter(data.data.ev_data[vehicle].data.tag_id, rfid): + return data.data.ev_data[vehicle].num for tag_id in data.data.ev_data[vehicle].data.tag_id: if vehicle_id is not None: if fnmatch.fnmatch(vehicle_id, tag_id): From a447ea404ede21035997f67e20ea884dfd16a4c1 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Fri, 8 Aug 2025 12:57:36 +0200 Subject: [PATCH 4/5] use lower-case for case-insensitive comparison --- packages/control/ev/ev.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/control/ev/ev.py b/packages/control/ev/ev.py index 83c562dcb6..8111c3f860 100644 --- a/packages/control/ev/ev.py +++ b/packages/control/ev/ev.py @@ -9,7 +9,7 @@ from dataclasses import dataclass, field import logging from typing import List, Optional, Tuple -import fnmatch +from fnmatch import fnmatch from control import data from control.ev.charge_template import ChargeTemplate @@ -468,17 +468,24 @@ def get_ev_to_rfid(rfid: str, vehicle_id: Optional[str] = None) -> Optional[int] try: if "ev" in vehicle: # exakte matches haben Priorität - if vehicle_id is not None and fnmatch.filter(data.data.ev_data[vehicle].data.tag_id, vehicle_id): + # Vergleiche werden case-insensitive durchgeführt + # das vereinfacht die Eingabe, kann aber auch für falsche Treffer sorgen. + lowered_vehicle_tags = [tag.lower() for tag in data.data.ev_data[vehicle].data.tag_id] + if vehicle_id is not None and vehicle_id.lower() in lowered_vehicle_tags: + log.debug(f"MAC {vehicle_id} wird EV {data.data.ev_data[vehicle].num} zugeordnet.") return data.data.ev_data[vehicle].num - if fnmatch.filter(data.data.ev_data[vehicle].data.tag_id, rfid): + if rfid.lower() in lowered_vehicle_tags: + log.debug(f"RFID {rfid} wird EV {data.data.ev_data[vehicle].num} zugeordnet.") return data.data.ev_data[vehicle].num + # Prüfung auf ein passendes Muster + # auch 'fnmatch()' ist case-insensitive for tag_id in data.data.ev_data[vehicle].data.tag_id: if vehicle_id is not None: - if fnmatch.fnmatch(vehicle_id, tag_id): + if fnmatch(vehicle_id, tag_id): log.debug(f"MAC {vehicle_id} und gespeicherte Tag_ID {tag_id} stimmen überein. " f"EV {data.data.ev_data[vehicle].num} zugeordnet.") return data.data.ev_data[vehicle].num - if fnmatch.fnmatch(rfid, tag_id): + if fnmatch(rfid, tag_id): log.debug(f"RFID {rfid} und gespeicherte Tag_ID {tag_id} stimmen überein. " f"EV {data.data.ev_data[vehicle].num} zugeordnet.") return data.data.ev_data[vehicle].num From 6d4470bd2a848269d026b593c5d14f0cfa39458b Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Mon, 11 Aug 2025 10:45:44 +0200 Subject: [PATCH 5/5] check rfid for NoneType --- packages/control/ev/ev.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/control/ev/ev.py b/packages/control/ev/ev.py index 2785ef1140..832921ee29 100644 --- a/packages/control/ev/ev.py +++ b/packages/control/ev/ev.py @@ -477,11 +477,7 @@ def get_ev_to_rfid(rfid: Optional[str] = None, vehicle_id: Optional[str] = None) if vehicle_id is not None and vehicle_id.lower() in lowered_vehicle_tags: log.debug(f"MAC {vehicle_id} wird EV {data.data.ev_data[vehicle].num} zugeordnet.") return data.data.ev_data[vehicle].num -<<<<<<< HEAD - if rfid.lower() in lowered_vehicle_tags: -======= if rfid is not None and rfid.lower() in lowered_vehicle_tags: ->>>>>>> 59c05aca00a48208fbdd130ad928f01eee6943cc log.debug(f"RFID {rfid} wird EV {data.data.ev_data[vehicle].num} zugeordnet.") return data.data.ev_data[vehicle].num # Prüfung auf ein passendes Muster