Skip to content

1.1.2

Choose a tag to compare

@github-actions github-actions released this 07 Apr 08:07

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  ← INVALID

Aceeaș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  ← VALID

sensor.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_... la sensor.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