Integrare custom pentru Home Assistant care monitorizează datele contractuale, consumul și facturile prin API-ul E·ON România (aplicația mobilă E·ON Myline).
Oferă senzori dedicați per cod de încasare pentru contract, index curent, sold, facturi, plăți, istoric citiri, convenție consum, citire permisă, și butoane de trimitere index per utilitate. Suportă complet contracte DUO (colective gaz + electricitate).
- Descoperire automată a contractelor asociate contului E·ON Myline
- Selectare granulară a contractelor pe care vrei să le monitorizezi (checkbox-uri cu adrese complete)
- Multi-contract — un singur cont E·ON poate monitoriza mai multe coduri de încasare simultan
- Suport complet DUO — contractele colective (gaz + electricitate sub un singur cod) sunt detectate automat, cu senzori separați per subcontract (index, citire permisă, convenție consum)
- Senzori dedicați per contract selectat — fiecare contract devine un device dedicat
- Sold și facturi — existență sold (Da/Nu), facturi restante cu detalii în atribute, format românesc (1.234,56 lei)
- Istoric citiri — indexuri lunare cu tip citire (autocitit / estimat / citit distribuitor)
- Arhivă plăți — plățile efectuate pe an, cu total anual
- Arhivă consum — consum lunar și mediu zilnic per an, cu separatorul zecimal românesc (virgulă)
- Adrese normalizate — formatare corectă din datele API în format românesc
- Mapping județe — coduri scurte (AB, BV, CJ) convertite automat în denumiri complete (Alba, Brașov, Cluj)
- Sistem de licență — fără licență validă se afișează doar senzorul „Licență necesară"
- Reconfigurare fără reinstalare — OptionsFlow pentru modificarea credențialelor și selecției contractelor
Datele vin prin API-ul aplicației mobile E·ON Myline (api2.eon.ro), care expune endpoint-uri REST pentru:
| Endpoint | Descriere |
|---|---|
| contract-details | Detalii contract (prețuri, adresă, PCS) |
| account-contracts/list | Listă subcontracte (pentru contracte DUO) |
| invoices/list | Facturi neachitate |
| invoices/list-prosum | Facturi prosumator |
| invoice-balance | Sold factură |
| invoice-balance-prosum | Sold prosumator |
| rescheduling-plans | Planuri de eșalonare |
| graphic-consumption | Grafic consum anual (arhivă consum) |
| meter-reading/index | Index curent contor |
| meter-reading/history | Istoric citiri contor |
| consumption-convention | Convenție consum |
| payments/payment-list | Istoric plăți |
Autentificarea se face cu email + parolă + semnătură HMAC-MD5 (mobile-login). Token-ul expirat (401) este reînnoit automat.
- Deschide HACS în Home Assistant
- Click pe cele 3 puncte (⋮) din colțul dreapta sus → Custom repositories
- Adaugă URL-ul:
https://github.com/cnecrea/eonromania - Categorie: Integration
- Click Add → găsește „E·ON România" → Install
- Restartează Home Assistant
- Copiază folderul
custom_components/eonromania/în directorulconfig/custom_components/din Home Assistant - Restartează Home Assistant
- Setări → Dispozitive și Servicii → Adaugă Integrare
- Caută „E·ON românia"
- Completează formularul:
| Câmp | Descriere | Implicit |
|---|---|---|
| Adresa de email a contului E·ON Myline | — | |
| Parolă | Parola contului E·ON Myline | — |
| Interval actualizare | Secunde între interogările API | 3600 (1 oră) |
După autentificare, contractele sunt descoperite automat. Fiecare contract apare cu adresa completă normalizată:
Strada Florilor 15, ap. 8, Cluj-Napoca, jud. Cluj ➜ 004412345678 (Gaz)
Bulevardul Independenței 42, Brașov, jud. Brașov ➜ 009900123456 (Colectiv/DUO)
Selectezi individual sau bifezi „Selectează toate contractele".
Integrarea necesită o licență validă. Poți achiziționa una de la hubinteligent.org/donate?ref=eonromania. Licența se introduce din OptionsFlow (Setări → Dispozitive și Servicii → E·ON România → Configurare → Licență).
Toate setările pot fi modificate după instalare, fără a șterge integrarea:
- Setări → Dispozitive și Servicii → click pe E·ON România
- Click pe Configurare (⚙️)
- Modifică setările dorite → Salvează
- Integrarea se reîncarcă automat cu noile setări
Detalii complete în SETUP.md.
Integrarea creează un device per contract selectat. Sub fiecare device se creează senzori și butoane de trimitere index (câte un buton per utilitate).
| Entitate | Descriere | Valoare principală |
|---|---|---|
Date contract |
Detalii contract (prețuri, adresă, PCS) | Cod încasare |
Sold factură |
Există sold de plată? | Da / Nu |
Sold prosumator |
Există sold prosumator? | Da / Nu |
Index gaz / Index energie electrică |
Index contor curent | Valoare index |
Citire permisă |
Autocitire activă? | Da / Nu |
Factură restantă |
Facturi neachitate cu calcul zile scadență | Da / Nu |
Factură restantă prosumator |
Facturi prosumator (datorii + credite) | Da / Nu |
Convenție consum |
Consum lunar convenit | Da / Nu |
Planuri eșalonare |
Planuri de eșalonare (condiționat) | Număr planuri |
Licență |
Status licență | Licență necesară |
{an} → Arhivă index gaz / energie electrică |
Indexuri lunare per an | Număr citiri |
{an} → Arhivă plăți |
Plăți lunare per an | Număr plăți |
{an} → Arhivă consum gaz / energie electrică |
Consum lunar + mediu zilnic per an | Total consum |
Pe lângă senzorii de bază (Date contract, Sold factură, Factură restantă, etc.), contractele DUO generează senzori suplimentari per subcontract:
| Entitate | Descriere | Valoare principală |
|---|---|---|
Index gaz |
Index contor gaz (subcontract) | Valoare index |
Index energie electrică |
Index contor electricitate (subcontract) | Valoare index |
Citire permisă gaz |
Autocitire activă pe gaz? | Da / Nu |
Citire permisă electricitate |
Autocitire activă pe electricitate? | Da / Nu |
Convenție consum |
Convenție per utilitate (gaz + electricitate) | Da / Nu |
Senzorul Date contract pentru DUO afișează în atribute: detalii contract colectiv, subcontracte cu coduri și adrese, plus detalii complete per subcontract (prețuri, contor, OD, NLC, POD).
| Entitate | Descriere | Când apare |
|---|---|---|
Trimite index gaz |
Trimite indexul contorului de gaz din input_number.gas_meter_reading |
Contract gaz sau DUO (subcontract gaz) |
Trimite index energie electrică |
Trimite indexul contorului de electricitate din input_number.energy_meter_reading |
Contract electricitate sau DUO (subcontract electricitate) |
La contractele individuale apare un singur buton (gaz SAU electricitate, detectat automat). La contractele DUO apar ambele butoane, fiecare trimițând indexul pentru subcontractul corespunzător.
Valoare principală: codul de încasare
Atribute (contract individual):
Cod încasare: "004412345678"
Cod loc de consum (NLC): "..."
CLC - Cod punct de măsură: "..."
Operator de Distribuție (OD): "..."
Preț final (fără TVA): "..."
Preț final (cu TVA): "..."
Preț furnizare: "..."
Tarif reglementat distribuție: "..."
Tarif reglementat transport: "..."
PCS: "..."
Adresă consum: "Strada Florilor 15, ap. 8, Cluj-Napoca, jud. Cluj"
Următoarea verificare a instalației: "..."
Data inițierii reviziei: "..."
Următoarea revizie tehnică: "..."Atribute (contract DUO):
Cod încasare (DUO): "009900123456"
Tip contract: "Colectiv / DUO (gaz + curent)"
Adresă de corespondență: "..."
────: ""
Număr subcontracte: 2
Gaz — Cod încasare: "002100234567"
Gaz — Cod loc consum (NLC): "..."
Electricitate — Cod încasare: "002200345678"
Electricitate — Cod loc consum (NLC): "..."
──── Gaz Natural ────: ""
Gaz Natural — Cod încasare: "002100234567"
Gaz Natural — Operator Distribuție (OD): "..."
Gaz Natural — Preț final (cu TVA): "..."
Gaz Natural — PCS: "10.657"
──── Energie Electrică ────: ""
Energie Electrică — Cod încasare: "002200345678"
Energie Electrică — Operator Distribuție (OD): "..."Valoare principală: Da / Nu (există sold de plată?)
Atribute (traduse automat din API în română):
Sold: "934,07 lei"
Rambursare disponibilă: "Nu"
Data sold: "04.03.2026"
Rambursare în curs: "Nu"
Garanție activă: "Nu"
Garanție neachitată: "Nu"
Sold de plată: "Da"
Documente rambursare necesare: "Nu"
Asociație: "Nu"Valoare principală: valoarea indexului curent
Atribute:
Numărul dispozitivului: "01234567/2020"
Numărul ID intern citire contor: "..."
Data de începere a următoarei citiri: "2026-03-01"
Data de final a citirii: "2026-03-07"
Autorizat să citească contorul: "Da"
Permite modificarea citirii: "Da"
Dispozitiv inteligent: "Nu"
Tipul citirii curente: "Autocitire"
Citire anterioară: "6.030"
Ultima citire validată: "6.030"Valoare principală: Da / Nu
Logica de determinare (în ordinea priorității):
readingPeriod.inPeriod— indicator direct de la APIreadingPeriod.allowedReading— fallback- Calcul manual pe
startDate/endDate— fallback final
Atribute:
ID intern citire contor (SAP): "..."
Indexul poate fi trimis până la: "2026-03-07"
Perioadă transmitere index: "2026-03-01 — 2026-03-07"
În perioadă de citire: "Da"
Citire autorizată: "Da"
Cod încasare: "002100234567"Valoare principală: Da / Nu
Atribute (când există restanțe):
Factură 1: "125,50 lei — scadentă în 3 zile"
Factură 2: "98,20 lei — termen depășit cu 15 zile"
Total neachitat: "223,70 lei"Valoare principală: Da / Nu
Atribute (contract individual):
Convenție din luna ianuarie: "150 m³"
Convenție din luna februarie: "150 m³"
...Atribute (contract DUO) — afișate per utilitate:
──── Gaz ────: ""
Gaz — ianuarie: "150 m³"
Gaz — februarie: "150 m³"
...
Gaz — Valabilă din: "2025-06-06"
Gaz — Preț contractual: "0.25637 lei"
Gaz — PCS: "10.657"
──── Electricitate ────: ""
Electricitate — ianuarie: "85 kWh"
...Valoare principală: consum total anual
Atribute (cu separatorul zecimal românesc):
Consum lunar ianuarie: "124,91 m³"
Consum lunar februarie: "91,45 m³"
...
────: ""
Consum mediu zilnic în ianuarie: "4,029 m³"
Consum mediu zilnic în februarie: "3,048 m³"
...Trimite indexul contorului către API-ul E·ON (endpoint meter-reading/index). Fiecare buton folosește propriul input_number:
| Buton | input_number necesar | Entity ID (individual) | Entity ID (DUO subcontract) |
|---|---|---|---|
| Trimite index gaz | input_number.gas_meter_reading |
button.eonromania_{cod}_trimite_index_gaz |
button.eonromania_{cod_subcontract}_trimite_index_gaz |
| Trimite index energie electrică | input_number.energy_meter_reading |
button.eonromania_{cod}_trimite_index_energie_electrica |
button.eonromania_{cod_subcontract}_trimite_index_energie_electrica |
Cerințe:
input_number.gas_meter_readingși/sauinput_number.energy_meter_reading— definite de utilizator înconfiguration.yaml- Perioada de citire activă (senzorul „Citire permisă" = Da)
automation:
- alias: "Notificare factură restantă E·ON"
trigger:
- platform: state
entity_id: sensor.eonromania_004412345678_factura_restanta
to: "Da"
action:
- service: notify.mobile_app_telefonul_meu
data:
title: "Factură restantă E·ON"
message: >
Ai {{ state_attr('sensor.eonromania_004412345678_factura_restanta', 'Total neachitat') }}
de plătit.type: entities
title: E·ON România
entities:
- entity: sensor.eonromania_004412345678_date_contract
name: Contract
- entity: sensor.eonromania_004412345678_sold_factura
name: Sold factură
- entity: sensor.eonromania_004412345678_citire_permisa
name: Citire permisă
- entity: sensor.eonromania_004412345678_factura_restanta
name: Factură restantă
- entity: sensor.eonromania_004412345678_conventie_consum
name: Convenție consumcustom_components/eonromania/
├── __init__.py # Setup/unload integrare (runtime_data pattern, multi-contract)
├── api.py # Manager API — login HMAC-MD5, GET/POST cu retry pe 401
├── button.py # Butoane trimitere index per utilitate (gaz / electricitate / DUO)
├── config_flow.py # ConfigFlow + OptionsFlow (autentificare, selecție contracte)
├── const.py # Constante, URL-uri API
├── coordinator.py # DataUpdateCoordinator — fetch paralel per contract (inclusiv DUO)
├── helpers.py # Funcții utilitare, mapping județe, formatare adrese, traduceri
├── license.py # Manager licență (server-side v3.3, Ed25519, HMAC-SHA256)
├── manifest.json # Metadata integrare
├── sensor.py # Clase senzor cu suport individual + colectiv/DUO
├── strings.json # Traduceri implicite (engleză)
└── translations/
└── ro.json # Traduceri române
- Home Assistant 2024.x sau mai nou (pattern
entry.runtime_data) - HACS (opțional, pentru instalare ușoară)
- Cont E·ON Myline activ cu email + parolă
- Licență validă — hubinteligent.org/licenta/eonromania
Nu necesită dependențe externe (nu instalează pachete pip/npm).
-
O singură instanță per cont — dacă încerci să adaugi același email de două ori, vei primi eroare „Acest cont E·ON este deja configurat".
-
Senzorii de index și citire permisă — apar cu date doar în perioada de citire. În rest, afișează
0sauNu. -
Trimitere index — butoanele necesită
input_number.gas_meter_readingși/sauinput_number.energy_meter_readingdefinite manual de utilizator înconfiguration.yaml. Nu se creează automat. -
Planuri eșalonare — senzorul apare doar dacă API-ul returnează date de eșalonare.
-
DUO — Arhivă consum și Arhivă index — aceste senzori nu sunt disponibili pe contractul colectiv (endpoint-urile nu funcționează pe contractul părinte). Datele de index și convenție sunt disponibile per subcontract.
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. 🙌
Contribuțiile sunt binevenite! Simte-te liber să trimiți un pull request sau să raportezi probleme aici.
Dacă îți place această integrare, oferă-i un ⭐ pe GitHub! 😊