Curs valutar BNR — Release Notes
v1.3.0 — 14 Martie 2026
Rescrierea completă a integrării pentru compatibilitate cu Home Assistant 2024.1+ și corectarea tuturor problemelor din versiunea anterioară.
Structură nouă
| Fișier | Rol |
|---|---|
const.py |
Constante centralizate, definiții senzori data-driven |
coordinator.py |
NOU — DataUpdateCoordinator separat |
__init__.py |
Setup / unload / options listener |
config_flow.py |
ConfigFlow + OptionsFlow (acum conectat) |
sensor.py |
SensorManager dinamic + clase senzori |
helpers.py |
NOU — Funcții utilitare de extragere date |
diagnostics.py |
NOU — Suport diagnostice HA |
strings.json |
NOU — Strings de bază pentru traduceri |
manifest.json |
Actualizat la standardele moderne |
Erori corectate
init.py
- Înlocuit
aiohttp.ClientSession()creat manual cuasync_get_clientsession(hass)— pattern-ul corect HA care reutilizează sesiunea globală - Înlocuit
datetime.now()cuhomeassistant.util.dt.now()— timezone-aware - Eliminat importuri nefolosite (
asyncio,Entity) - Adăugat
update_listenerpentru reîncărcarea automată la schimbarea opțiunilor - Adăugat
config_entry_only_config_schemapentru validare corectă - Structurat
hass.data[DOMAIN][entry_id]ca dict pentru extensibilitate
config_flow.py
- Conectat
OptionsFlowprinasync_get_options_flow(anterior nu era legat) - Adăugat
_abort_if_unique_id_configured()pentru prevenirea configurării multiple - Corectat accesul la opțiunile curente cu fallback la
entry.data - Adăugat decoratorul
@staticmethodși@callbacklipsă
sensor.py
- Eliminat setarea manuală a
entity_id(HA gestionează asta automat) - Eliminat duplicarea masivă de cod (12 clase aproape identice → abordare data-driven)
- Adăugat protecție completă la
None/ date lipsă în toate proprietățile - Eliminat
state_classșinative_unit_of_measurementpentru compatibilitate cu statisticile long-term existente (prevenire warning Recorder)
coordinator.py (extras din init.py)
- Adăugat
content_type=Nonelaresponse.json()pentru toleranță content-type - Adăugat timeout explicit (30s) la request
- Retry graceful: la eroare de fetch, păstrează datele anterioare în loc să dea
UpdateFailed - Logare clară a intervalului orar și a motivului de skip/fetch
Funcționalități noi
Management dinamic al senzorilor (SensorManager)
- Senzorii se creează doar când datele sunt disponibile în API
- Când datele dispar, senzorii sunt eliminați complet din entity registry (nu „Unavailable")
- Când datele revin, senzorii sunt recreați automat
- La fiecare update al coordinator-ului, se face sincronizare automată
helpers.py
safe_float()— conversie robustă cu suport format românesc (virgulă → punct)- Extractori dedicați pentru fiecare tip de date:
extract_currency_data()— curs valutar (actual + anterior)extract_fx_data()— schimb valutar CEC (sell + buy)extract_robor_data()— ROBOR pe perioadeextract_euribor_data()— EURIBOR pe perioadeextract_ircc_zilnic_data()— IRCC zilnic + modificareextract_ircc_trimestrial_data()— IRCC trimestrial + modificare
- Toate funcțiile returnează
Nonedacă datele lipsesc (fără excepții)
diagnostics.py
- Suport complet pentru pagina de diagnostice din HA
- Raportează: config entry, starea coordinator-ului, senzorii activi, rezumatul datelor
- Nu expune date sensibile
strings.json
- Fișier de bază pentru traduceri (folosit de HA pentru generare automată)
Manifest actualizat
{
"homeassistant": "2024.1.0",
"integration_type": "service",
"version": "2.0.0"
}Compatibilitate
- Home Assistant 2024.1.0+
- Python 3.11+
- HACS compatibil
- Backward-compatible cu statisticile long-term existente (fără
native_unit_of_measurement)
☕ Susține dezvoltatorul
Dacă ți-a plăcut această integrare și vrei să sprijini munca depusă, invită-mă la o cafea! 🫶
Nu costă nimic, iar contribuția ta ajută la dezvoltarea viitoare a proiectului. 🙌
Mulțumesc pentru sprijin și apreciez fiecare gest de susținere! 🤗