1.1.2
Rețele Electrice România v1.1.2
Data: 7 aprilie 2026
Afectează: Toate entitățile (senzori + buton)
Problema
Home Assistant validează entity_id-urile cu pattern-ul strict ^[a-z0-9_]+\.[a-z0-9_]+$ — doar litere mici, cifre și underscore. Integrarea genera entity_id-uri cu litere mari din codul POD (ex: RO001EXXXXXXXXX), ceea ce le făcea invalide.
Log HA (48 de apariții):
Detected that custom integration 'reteleelectrice' sets an invalid entity ID:
'sensor.reteleelectrice_RO001EXXXXXXXXX_arhiva_energie_consumata_2026'.
In most cases, entities should not set entity_id, but if they do,
it should be a valid entity ID.
This will stop working in Home Assistant 2027.2.0
Eroarea afecta toate senzorii și butonul — orice entitate care conținea codul POD în entity_id.
Cauza
În ReteleElectriceSensorBase.__init__(), entity_id-ul și unique_id-ul erau construite direct cu ctx.pod_name (care vine uppercase din API-ul Salesforce):
# ÎNAINTE (incorect)
self._attr_unique_id = f"{DOMAIN}_{ctx.pod_name}_{sensor_key}"
self._custom_entity_id = f"sensor.{DOMAIN}_{ctx.pod_name}_{sensor_key}"
# Rezultat: sensor.reteleelectrice_RO001EXXXXXXXXX_informatii_pod ← INVALIDAceeași problemă exista și în button.py pentru unique_id-ul butonului, plus 3 senzori noi (ValoareInstantaneeConsumSensor, ValoareInstantaneeProductieSensor, DateFurnizorSensor) care suprascriu unique_id-ul cu valori tot uppercase.
Fix aplicat
sensor.py — ReteleElectriceSensorBase.__init__()
# DUPĂ (corect)
pod_slug = ctx.pod_name.lower()
self._attr_unique_id = f"{DOMAIN}_{pod_slug}_{sensor_key}"
self._custom_entity_id = f"sensor.{DOMAIN}_{pod_slug}_{sensor_key}"
# Rezultat: sensor.reteleelectrice_ro001exxxxxxxxx_informatii_pod ← VALIDsensor.py — Eliminat unique_id redundant din senzorii noi
Cele 3 clase (ValoareInstantaneeConsumSensor, ValoareInstantaneeProductieSensor, DateFurnizorSensor) aveau fiecare o linie care suprascria unique_id-ul setat de baza cu varianta uppercase:
# ELIMINAT din toate cele 3 clase:
self._attr_unique_id = f"{DOMAIN}_{ctx.pod_name}_valoare_instantanee_consum"
self._attr_unique_id = f"{DOMAIN}_{ctx.pod_name}_valoare_instantanee_productie"
self._attr_unique_id = f"{DOMAIN}_{ctx.pod_name}_date_furnizor"Baza (ReteleElectriceSensorBase) setează deja corect unique_id-ul cu .lower(), deci liniile erau redundante și nocive.
button.py — unique_id lowercase
# ÎNAINTE
self._attr_unique_id = f"{DOMAIN}_{pod_name}_actualizare_instantanee"
# DUPĂ
self._attr_unique_id = f"{DOMAIN}_{pod_name.lower()}_actualizare_instantanee"button.py — device_info aliniat cu sensor.py
Butonul avea device_info diferit de senzori, ceea ce crea un device separat în loc să fie grupat pe același device:
# ÎNAINTE (device separat)
name=f"POD {self._pod_name}",
manufacturer="Rețele Electrice România",
model=self._pod_data.get("Contract_Type__c", "Standard"),
# DUPĂ (același device ca senzorii)
name=f"Rețele Electrice {self._pod_name}",
manufacturer="Ciprian Nicolae (cnecrea)",
model="Rețele Electrice România",Fișiere modificate
| Fișier | Modificare |
|---|---|
sensor.py |
.lower() pe pod_name în ReteleElectriceSensorBase.__init__(), eliminat 3 unique_id redundante |
button.py |
.lower() pe unique_id, device_info aliniat cu sensor.py |
Impact
- Entity ID-urile trec de la
sensor.reteleelectrice_RO001EXXXXXXXXX_...lasensor.reteleelectrice_ro001exxxxxxxxx_... - Automatizările și dashboard-urile existente care referențiază entity_id-uri cu litere mari trebuie actualizate manual
- Butonul apare acum pe același device cu senzorii POD-ului (nu pe device separat)
- Warning-ul din log dispare complet după restart
📈 Integrarea în cifre
| ⭐ Stars | 📥 Instalări | 🔄 Clone (14z) |
|---|---|---|
| 2 | 215 | 134 |
Dacă integrarea Rețele Electrice România îț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