Skip to content

2.4.0

Choose a tag to compare

@github-actions github-actions released this 19 Mar 19:13

CNAIR eRovinieta v2.4.0

Migrare completă la arhitectura async

Clientul HTTP a fost rescris integral de la requests (sincron, blocant) la aiohttp (async nativ). Sesiunea HTTP utilizează cookie jar pentru persistența JSESSIONID și include timeout de 30 de secunde. Token-ul de autentificare este monitorizat cu time.monotonic() și se reautentifică automat la expirare sau la răspunsuri 401/403. Sesiunea este închisă corect atât la dezinstalare, cât și la erori de setup.

Fișiere noi

  • exceptions.py — Ierarhie proprie de excepții (ErovinietaAuthError, ErovinietaConnectionError, ErovinietaApiError), toate derivate din HomeAssistantError.
  • helpers.py — Funcții utilitare partajate: format_timestamp_ms, safe_get, sanitize_plate_no, capitalize_name, redact_data.
  • diagnostics.py — Export diagnostic complet cu redactare automată a datelor sensibile (username, password, CNP/CUI, email, telefon, adresă, VIN, serie certificat, număr de înmatriculare, JSESSIONID, câmpul cont).

Bugfix-uri critice

  • Overflow atribute 16KB — Senzorii TreceriPodSensor și PlataTreceriPodSensor stocau toate trecerile de pod ca atribute de stare, depășind limita recorder-ului. Acum se păstrează doar ultimele 20 de înregistrări, sortate descrescător după timestamp.
  • Date învechite la VehiculSensor — Senzorul stoca o referință la dicționarul vehiculului din __init__, care nu se actualiza niciodată la refresh. Acum datele sunt citite proaspăt din coordinator la fiecare acces.
  • URL-uri .format() defecteURL_TRANZACTII și URL_DETALII_TRANZACTIE aveau un bug de formatare (linia a doua nu era f-string, iar {{dateFrom}} rămânea literal). Rezolvat prin concatenare BASE_URL + "...".
  • Timestamps fără timezone — Toate apelurile datetime.fromtimestamp() au fost înlocuite cu dt_util.utc_from_timestamp().astimezone(dt_util.DEFAULT_TIME_ZONE).
  • Diagnostics — AttributeError — Se accesa coordinator.last_update_success_time (inexistent). Corectat la coordinator.last_update_success (bool).

Config Flow modernizat

  • Reconfigure flow — Permite schimbarea parolei din meniul de opțiuni al integrării, fără dezinstalare.
  • Reauth flow — Se declanșează automat când credențialele expiră sau se schimbă.
  • Selectoare moderneNumberSelector (BOX pentru interval, SLIDER pentru istoric) și TextSelector cu tip PASSWORD.
  • Eliminare checkbox — Toate câmpurile folosesc vol.Required cu valori implicite. vol.Optional genera un checkbox de activare/dezactivare în UI-ul HA, fără sens în acest context.

Corectare ID-uri entități

Device name schimbat de la "CNAIR eRovinieta" la "eRovinieta". Entitățile se creează acum cu prefixul sensor.erovinieta_* în loc de sensor.cnair_erovinieta_*.

Redactare date sensibile în diagnostice

Funcția redact_data acoperă: username, password, cnpCui, email, telefon, adresa, vin, certificateSeries, nume, cont, plateNo, paymentPlateNo, JSESSIONID.

Actualizare traduceri

Toate cele 5 limbi (ro, en, de, fr, es) au fost actualizate cu textele pentru reconfigure, reauth_confirm și mesajele noi de eroare/abort.

Alte îmbunătățiri

  • DeviceInfo ca dataclass (nu dict), cu manufacturer="CNAIR" și sw_version din constante.
  • Toți senzorii folosesc native_value (modern) în loc de state (legacy).
  • manifest.json include "integration_type": "service".
  • Coordinator modern cu ConfigEntryAuthFailed (declanșează reauth) și UpdateFailed (declanșează retry).
  • Validare sintactică trecută pentru toate cele 9 fișiere Python și 6 fișiere JSON.

📈 Integrarea în cifre

⭐ Stars 📥 Instalări 🔄 Clone (14z)
36 568 275

Dacă integrarea CNAIR eRovinieta îți este utilă, lasă un ⭐ pe repository — îi ajută și pe alți utilizatori să o descopere.


💛 Dezvoltarea consumă timp și resurse. Dacă vrei să susții proiectul:
Buy Me a Coffee · 💰 GitHub Sponsors