Skip to content

cnecrea/eonromania

Repository files navigation

E·ON România — Integrare Home Assistant

Home Assistant HACS Custom GitHub Release GitHub Stars Instalări Ultima versiune

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).


Ce face integrarea

  • 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

Sursa datelor

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.


Instalare

HACS (recomandat)

  1. Deschide HACS în Home Assistant
  2. Click pe cele 3 puncte (⋮) din colțul dreapta sus → Custom repositories
  3. Adaugă URL-ul: https://github.com/cnecrea/eonromania
  4. Categorie: Integration
  5. Click Add → găsește „E·ON România" → Install
  6. Restartează Home Assistant

Manual

  1. Copiază folderul custom_components/eonromania/ în directorul config/custom_components/ din Home Assistant
  2. Restartează Home Assistant

Configurare

Pasul 1 — Adaugă integrarea

  1. SetăriDispozitive și ServiciiAdaugă Integrare
  2. Caută „E·ON românia"
  3. Completează formularul:
Câmp Descriere Implicit
Email Adresa de email a contului E·ON Myline
Parolă Parola contului E·ON Myline
Interval actualizare Secunde între interogările API 3600 (1 oră)

Pasul 2 — Selectează contractele

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".

Pasul 3 — Licență

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ță).

Pasul 5 — Reconfigurare (opțional)

Toate setările pot fi modificate după instalare, fără a șterge integrarea:

  1. SetăriDispozitive și Servicii → click pe E·ON România
  2. Click pe Configurare (⚙️)
  3. Modifică setările dorite → Salvează
  4. Integrarea se reîncarcă automat cu noile setări

Detalii complete în SETUP.md.


Entități create

Integrarea creează un device per contract selectat. Sub fiecare device se creează senzori și butoane de trimitere index (câte un buton per utilitate).

Contract individual (gaz sau electricitate)

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

Contract colectiv / DUO (gaz + electricitate)

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).

Butoane

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.


Senzor: Date contract

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): "..."

Senzor: Sold factură

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"

Senzor: Index gaz / Index energie electrică

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"

Senzor: Citire permisă

Valoare principală: Da / Nu

Logica de determinare (în ordinea priorității):

  1. readingPeriod.inPeriod — indicator direct de la API
  2. readingPeriod.allowedReading — fallback
  3. 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"

Senzor: Factură restantă

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"

Senzor: Convenție consum

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"
...

Senzor: Arhivă consum gaz / energie electrică

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³"
...

Butoane: Trimite index gaz / Trimite index energie electrică

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/sau input_number.energy_meter_reading — definite de utilizator în configuration.yaml
  • Perioada de citire activă (senzorul „Citire permisă" = Da)

Exemple de automatizări

Notificare factură restantă

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.

Card pentru Dashboard

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 consum

Structura fișierelor

custom_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

Cerințe

  • 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).


Limitări cunoscute

  1. 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".

  2. Senzorii de index și citire permisă — apar cu date doar în perioada de citire. În rest, afișează 0 sau Nu.

  3. Trimitere index — butoanele necesită input_number.gas_meter_reading și/sau input_number.energy_meter_reading definite manual de utilizator în configuration.yaml. Nu se creează automat.

  4. Planuri eșalonare — senzorul apare doar dacă API-ul returnează date de eșalonare.

  5. 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.


☕ 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. 🙌

Buy Me A Coffee


🧑‍💻 Contribuții

Contribuțiile sunt binevenite! Simte-te liber să trimiți un pull request sau să raportezi probleme aici.


🌟 Suport

Dacă îți place această integrare, oferă-i un ⭐ pe GitHub! 😊

Licență

MIT

About

Integrare pentru accesarea informațiilor contului E.ON România. Preia și monitorizează datele tale de utilități E.ON România direct în Home Assistant.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors

Languages