KEBA-Sperren verifiziert den dokumentierten Weg stop <echte RFID> jetzt über den Live-Zustand report 2/Authreq; TCH-OK allein gilt nicht mehr als erfolgreicher Sperrvorgang.
Bleibt eine lediglich temporär entsperrte, noch nicht ladende P30 nach dem dokumentierten stop bei Authreq=0, verwendet SNLO optional den empirischen Fallback start 44556677 01010400000000000000 und akzeptiert auch diesen nur nach bestätigtem Authreq=1.
Der Fallback ist über KEBA_LOCK_FALLBACK_RFID konfigurierbar (Standard 44556677), wird während aktiver Ladung niemals verwendet und wird blockiert, falls derselbe Wert in SNLO als echter aktiver RFID-Key hinterlegt ist.
Pending-Freigabe und Sperrbutton werden erst nach tatsächlich bestätigtem Sperrstatus entfernt; bei fehlgeschlagenem Sperren bleibt die Aktion sichtbar und die UI zeigt keinen fiktiven Erfolg mehr.
KEBA-Sperrstatus wird wie in Home Assistant live aus report 2/Authreq gelesen; lokale TTLs bestimmen nicht mehr, ob die Wallbox als gesperrt oder entsperrt gilt.
Dashboard und Ladevorgangsseite aktualisieren den KEBA-Sperrstatus alle fünf Sekunden und bieten abhängig vom Live-Zustand direkt Wallbox entsperren bzw. Wallbox sperren an.
Eine kurz zuvor gestartete SNLO-Freigabe behält nur noch die Zuordnung zu Nutzer und RFID-Key; sobald KEBA selbst wieder Authreq=1 meldet, wird dieser Hinweis verworfen.
Aktive Ladevorgänge besitzen im Dashboard einen kompakten EVCC-Modus-Umschalter für Aus, PV, Min + PV und Sofort.
Installierte PWAs erhalten auf Wunsch eine langlebige, bei jedem App-Start erneuerte SNLO-Anwendungssitzung (PWA_SESSION_TTL_DAYS, Standard 3650 Tage); normale Browser-Sitzungen bleiben bei SESSION_TTL_HOURS (Standard 24 Stunden).
PWA- und Browser-Anmeldung bleiben getrennt: eine bestehende normale Browser-Sitzung wird nicht ohne erneute Anmeldung automatisch in eine langlebige PWA-Sitzung umgewandelt.
KEBA-RFID-Freigabe an die nachweislich funktionierende Home-Assistant-Integration angeglichen: kurze Karten-UID unverändert plus interner Standard-RFID-Class 01010400000000000000.
Falsche Null-Erweiterung aus 0.5.9 entfernt; bereits dort gespeicherte UID00000000-Werte werden automatisch mit der ursprünglichen kurzen UID zuerst verwendet.
Autorisierung wird nach TCH-OK zusätzlich über report 2 verifiziert.
Nach erfolgreicher Freigabe zeigt eine unterstützte KEBA kurz Hallo <Benutzername>, nach erfolgreichem Sperren Auf Wiedersehen; Displayfehler beeinflussen die eigentliche Freigabe/Sperre nicht.
Gemeinsamen Dockerfile-Healthcheck entfernt und service-spezifische Checks ergänzt: API-Readiness, Worker-Heartbeat und KEBA-UDP-Listener.
Produktionskonfiguration fällt bei SCHEMA_AUTO_CREATE=false und fehlender DATABASE_URL nicht mehr still auf SQLite zurück.
TrueNAS-Deployment unter deploy/truenas/ ergänzt; Reverse Proxies verwenden die stabile TrueNAS-Host-IP auf Port 8080 statt einer internen Container-IP.
Dashboard-Karten, Energieverlauf und Tabellen auf schmalen Displays auf die verfügbare Breite begrenzt; breite Inhalte scrollen innerhalb ihrer Karte horizontal.
RFID-Eingabe an die KEBA-P30-Verwaltung angepasst: die dort übliche 8-stellige Hex-UID kann direkt eingegeben werden.
8-stellige UIDs werden für die UDP-Befehle kanonisch mit acht nachgestellten Nullen auf 16 Hex-Zeichen erweitert; vollständige 16-stellige UDP-Tags bleiben unverändert.
RFID-Klassifikator aus der normalen Administrationsoberfläche entfernt; bestehende Klassifikatorwerte bleiben aus Rückwärtskompatibilität erhalten, sind für neue Zuordnungen aber nicht erforderlich.
Regressionstests für 8-stellige KEBA-UIDs, 16-stellige UDP-Tags und die tatsächlich gesendete start-Anweisung ergänzt.
KEBA-Gateway auf asyncio-Datagram-Transport umgestellt, damit der feste UDP-7090-Socket auch unter dem von Uvicorn verwendeten uvloop funktioniert.
loop.sock_sendto() und loop.sock_recvfrom() vollständig aus dem Gateway entfernt; DatagramTransport.sendto() und DatagramProtocol.datagram_received() verwenden denselben dauerhaft an 7090 gebundenen Socket.
Regressionstest ergänzt, der den vollständigen KEBA-UDP-Austausch explizit unter uvloop ausführt und den festen Quellport prüft.
Gateway-Startlog nennt nun zusätzlich den verwendeten UDP-Transport, damit der produktive Netzwerkpfad leichter diagnostizierbar ist.
KEBA-Gateway auf einen prozessweit dauerhaft offenen UDP-7090-Socket umgestellt; Senden und Empfangen laufen über denselben Listener.
Gateway-Access-Log und gezielte KEBA-Diagnoselogs aktiviert: HTTP-Anfrage, gebundener UDP-Socket, Route-Quell-IP, eingehende Datagramme und aussagekräftige Timeout-Diagnose.
RFID-Werte werden in den neuen Diagnoseprotokollen weiterhin nicht ausgegeben.
Hostseitiges Diagnosewerkzeug scripts/keba-udp-probe.py ergänzt, um Docker/Rootless/NAT als Fehlerquelle eindeutig vom KEBA-Protokoll zu trennen.
Dokumentation korrigiert: Host-Networking beseitigt Docker-Bridge-NAT bei rootful Linux, kann aber keine weitere NAT-Stufe außerhalb dieses Netzwerk-Namespace verhindern.
Energieverlauf mit kompakten periodengerechten Achsenbeschriftungen: Tage als TT.MM., Monate als kurze Monatsnamen und vollständige Werte weiterhin im Tooltip.
X-Achsenbeschriftungen werden auf schmalen Displays gedreht und erhalten zusätzlichen unteren Platz, damit sie weder überlappen noch abgeschnitten werden.
Bei dichten Zeitreihen werden auf schmalen Displays automatisch Zwischenbeschriftungen ausgeblendet; Balken und Tooltips bleiben vollständig erhalten.
KEBA-P30-UDP-Empfang korrigiert: SNLO bindet vor dem Senden den festen lokalen UDP-Port 7090 und verarbeitet die Antwort der Wallbox dort.
Compose veröffentlicht UDP 7090 für den API-Container; Portkonflikte werden mit verständlicher Fehlermeldung gemeldet.
Dashboard-Kennzahlen bleiben auf schmalen Displays zweispaltig und werden kompakter dargestellt.
Asynchrone Seitenwechsel und Admin-Ansichten gegen veraltete DOM-Antworten abgesichert; Dashboard-Live-Poller werden zuverlässig ersetzt statt vervielfacht.
API-Aufrufe besitzen ein clientseitiges Timeout, damit die Oberfläche bei einer nicht antwortenden Gegenstelle nicht unbegrenzt hängen bleibt.
Ladesitzungen im Dashboard und in der Sitzungsliste öffnen beim Antippen eine Detailansicht mit den jeweils sichtbaren Preisbestandteilen.
Lizenzhinweis nennt Daniel Spittank als Copyright-Inhaber.