Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions packages/control/ev/ev.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from dataclasses import dataclass, field
import logging
from typing import List, Optional, Tuple
from fnmatch import fnmatch

from control import data
from control.ev.charge_template import ChargeTemplate
Expand Down Expand Up @@ -466,12 +467,28 @@ 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:
# exakte matches haben Priorität
# 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 rfid in data.data.ev_data[vehicle].data.tag_id:
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(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(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)
return None
Expand Down