https://github.com/cnecrea/hidroelectrica
Integrare pentru accesarea informațiilor contului Hidroelectrica. Preia și monitorizează datele tale de utilități Hidroelectrica direct în Home Assistant.
https://github.com/cnecrea/hidroelectrica
electricitate hidroelectrica home-assistant monitorizare romania
Last synced: 3 months ago
JSON representation
Integrare pentru accesarea informațiilor contului Hidroelectrica. Preia și monitorizează datele tale de utilități Hidroelectrica direct în Home Assistant.
- Host: GitHub
- URL: https://github.com/cnecrea/hidroelectrica
- Owner: cnecrea
- License: other
- Created: 2025-01-02T21:28:37.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-04-09T07:15:11.000Z (4 months ago)
- Last Synced: 2026-04-09T09:17:07.226Z (4 months ago)
- Topics: electricitate, hidroelectrica, home-assistant, monitorizare, romania
- Language: Python
- Homepage:
- Size: 349 KB
- Stars: 93
- Watchers: 1
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Hidroelectrica România — Integrare Home Assistant
[](https://www.home-assistant.io/)
[](https://github.com/hacs/integration)
[](https://github.com/cnecrea/hidroelectrica/releases)
[](https://github.com/cnecrea/hidroelectrica/stargazers)
[](https://github.com/cnecrea/hidroelectrica)
[](https://github.com/cnecrea/hidroelectrica/releases/latest)
Integrare Home Assistant pentru **monitorizarea completă** a conturilor Hidroelectrica România. Suport complet pentru conturi de consum și conturi de **prosumator**, cu detectare automată și senzori dedicați. Datele sunt obținute prin platforma SEW (Smart Energy Water) și sunt actualizate periodic.
---
## Caracteristici
### Senzori de bază (prezenți pentru orice cont)
**Date contract**
- Afișează informații detaliate despre utilizator și cont.
- Atribute: nume, prenume, telefon, număr cont utilitate (UAN), cod loc de consum (NLC), tip client, adresă, localitate, serie contor activă.
**Sold factură**
- Starea curentă: `Da` (sold de plată), `Nu` (achitat integral), `Credit` (credit prosumator).
- Atribute: suma datorată sau creditul disponibil, data scadenței, detalii factură curentă.
**Factură restantă**
- Indică `Da` sau `Nu` dacă există facturi neplătite după data scadenței.
- Atribute: suma restantă, numărul de zile de întârziere.
**Index energie activă**
- Indexul curent al contorului (registrul 1.8.0 — energie activă consumată).
- Sursă: `meter_read_history` → `previous_meter_read` → `meter_counter_series` (fallback în cascadă).
- Unitate de măsură: kWh.
**Citire permisă** *(doar la non-prosumator)*
- Afișează dacă fereastra de autocitire este activă și datele de început/sfârșit.
- La prosumator, acest senzor nu se creează (distribuitorul citește contorul automat).
### Senzori de arhivă
**Arhivă consum** *(anul cel mai recent)*
- Consumul lunar din datele de utilizare (`GetUsageGeneration`).
- Atribute: consum pe fiecare lună disponibilă, total anual.
**Arhivă index** *(anul cel mai recent)*
- Istoricul citirilor de index din `GetMeterReadHistory`.
- La prosumator, filtrează automat doar registrul 1.8.0 (consum), excluzând producția.
- Atribute: fiecare citire cu data, indexul, tipul citirii (autocitire/distribuitor/estimare).
**Arhivă plăți** *(anul cel mai recent)*
- Plățile efective realizate de utilizator către companie (canale de tip `Incasari-*`).
- Atribute: fiecare plată cu luna, canalul de plată, suma; total plăți, sumă totală.
### Senzori exclusivi prosumator
Acești senzori se creează **automat** când integrarea detectează registrul `1.8.0_P` în istoricul de citiri.
**Index energie produsă**
- Indexul curent al producției (registrul 1.8.0_P — energie activă produsă).
- Unitate de măsură: kWh.
**Arhivă index energie produsă** *(anul cel mai recent)*
- Istoricul citirilor de index producție (doar registrul 1.8.0_P).
- Atribute: fiecare citire cu data, indexul, tipul citirii.
**Arhivă plăți prosumator** *(anul cel mai recent)*
- Compensațiile ANRE primite (canale de tip `Comp ANRE-*`).
- Atribute: fiecare compensație cu luna, canalul (furnizor/distribuitor), suma; total compensații, sumă totală.
### Buton
**Trimite index** *(doar la non-prosumator)*
- Permite trimiterea autocitrii când fereastra de citire este activă.
- La prosumator, butonul nu se creează (distribuitorul citește contorul automat).
### Licență
**Sistem de licență** — fără licență validă se afișează doar senzorul „Licență necesară".
---
## Arhitectură tehnică
### Surse de date API (platforma SEW)
| Endpoint | Date furnizate | Frecvență |
|---|---|---|
| `GetMultiMeter` | Detalii contor, tip client | La fiecare refresh |
| `GetBill` | Sold curent, scadență | La fiecare refresh |
| `GetWindowDatesENC` / `GetWindowDates` | Fereastră autocitire | La fiecare refresh |
| `GetPods` | POD, instalație | La fiecare refresh |
| `GetPreviousMeterRead` | Index curent (consum + producție) | La fiecare refresh |
| `GetUsageGeneration` | Consum lunar istoric | La fiecare al 4-lea refresh |
| `GetBillingHistoryList` | Istoric plăți | La fiecare al 4-lea refresh |
| `GetMeterCounterSeries` | Serii contor | La fiecare al 4-lea refresh |
| `GetMeterReadHistory` | Istoric citiri index | La fiecare al 4-lea refresh |
### Strategia de refresh
Coordonatorul folosește un mecanism de refresh în două faze pentru a reduce încărcarea API:
- **Faza 1** (la fiecare refresh): date ușoare — contor, factură, fereastră citire, POD, index curent.
- **Faza 2** (la fiecare al 4-lea refresh): date grele — consum istoric, plăți, serii contor, citiri index.
Primul refresh include întotdeauna ambele faze.
### Detecție prosumator
Detecția se face automat pe baza prezenței registrului `1.8.0_P` în `GetMeterReadHistory`. Nu depinde de flag-uri precum `IsAMI`.
### Gestiunea sesiunii
- Token partajat între toate conturile unui utilizator.
- Reautentificare automată la expirarea sesiunii (401).
- Token injectat din `config_flow` la configurare sau din `config_entry.data` la restart.
---
## Configurare
### Interfața UI
1. **Setări** → **Dispozitive și Servicii** → **Adaugă Integrare** → caută **Hidroelectrica România**.
2. Introdu datele contului Hidroelectrica (username + parolă).
3. Selectează conturile (UAN-urile) pe care vrei să le monitorizezi.
4. Specifică intervalul de actualizare (implicit: 3600 secunde, minim: 300, maxim: 86400).
### Configurare licență
Integrarea necesită o licență validă. După configurarea contului, mergi la **Setări** → **Dispozitive și Servicii** → **Hidroelectrica România** → **Configurare** și introdu cheia de licență în secțiunea **Licență**.
### Opțiuni configurabile
- Interval de actualizare (modificabil din opțiunile integrării fără a reconfigura).
- Licență (modificabilă din opțiunile integrării fără a reconfigura).
---
## Cerințe
- **Home Assistant** versiunea 2025.11 sau mai recentă.
- **HACS** instalat (opțional, dar recomandat).
- Un cont activ pe platforma Hidroelectrica România (aplicația iHidro sau contul online).
- **Licență** validă — [hubinteligent.org/donate?ref=hidroelectrica](https://hubinteligent.org/donate?ref=hidroelectrica)
## Instalare
### Prin HACS
1. Adaugă [depozitul personalizat](https://github.com/cnecrea/hidroelectrica) în HACS.
[](https://my.home-assistant.io/redirect/hacs_repository/?owner=cnecrea&repository=hidroelectrica&category=Integration)
2. Caută integrarea **Hidroelectrica România** și instaleaz-o.
3. Repornește Home Assistant și configurează integrarea.
### Instalare manuală
1. Descarcă sau clonează [depozitul GitHub](https://github.com/cnecrea/hidroelectrica).
2. Copiază folderul `custom_components/hidroelectrica` în directorul `custom_components` al Home Assistant.
3. Repornește Home Assistant și configurează integrarea.
---
## Exemple de utilizare
### Automatizare pentru factură restantă
```yaml
alias: Notificare Factură Restantă
description: Notificare dacă există facturi restante
trigger:
- platform: state
entity_id: sensor.hidroelectrica_XXXXXXXX_factura_restanta
to: "Da"
action:
- service: notify.mobile_app_telefon
data:
title: "Factură Restantă Detectată"
message: >-
Ai o factură restantă Hidroelectrica.
Verifică detaliile în Home Assistant.
mode: single
```
### Card pentru Dashboard (cont normal)
```yaml
type: entities
title: Hidroelectrica România
entities:
- entity: sensor.hidroelectrica_XXXXXXXX_date_contract
name: Date Contract
- entity: sensor.hidroelectrica_XXXXXXXX_sold_factura
name: Sold Factură
- entity: sensor.hidroelectrica_XXXXXXXX_factura_restanta
name: Factură Restantă
- entity: sensor.hidroelectrica_XXXXXXXX_index_energie
name: Index Energie
- entity: sensor.hidroelectrica_XXXXXXXX_citire_permisa
name: Citire Permisă
```
### Card pentru Dashboard (prosumator)
```yaml
type: entities
title: Hidroelectrica România (Prosumator)
entities:
- entity: sensor.hidroelectrica_XXXXXXXX_date_contract
name: Date Contract
- entity: sensor.hidroelectrica_XXXXXXXX_sold_factura
name: Sold Factură
- entity: sensor.hidroelectrica_XXXXXXXX_index_energie
name: Index Consum
- entity: sensor.hidroelectrica_XXXXXXXX_index_energie_produsa
name: Index Producție
- entity: sensor.hidroelectrica_XXXXXXXX_arhiva_plati_2026
name: Plăți 2026
- entity: sensor.hidroelectrica_XXXXXXXX_arhiva_plati_prosumator_2026
name: Compensații ANRE 2026
```
---
## Structura fișierelor
```
custom_components/hidroelectrica/
├── __init__.py # Setup/unload integrare (runtime_data, licență)
├── api.py # HidroelectricaApiClient — autentificare, GET
├── button.py # Butonul Trimite index (doar non-prosumator)
├── config_flow.py # ConfigFlow + OptionsFlow (autentificare, licență)
├── const.py # Constante, URL-uri API
├── coordinator.py # DataUpdateCoordinator — refresh în două faze
├── helpers.py # Funcții utilitare
├── license.py # Manager licență (server-side, Ed25519, HMAC-SHA256)
├── manifest.json # Metadata integrare
├── sensor.py # Senzori (date contract, sold, index, etc.)
├── strings.json # Traduceri implicite (engleză)
└── translations/
├── en.json # Traduceri engleză
└── ro.json # Traduceri române
```
---
## Susține dezvoltatorul
Dacă ți-a plăcut această integrare și vrei să sprijini munca depusă, **invită-mă la o cafea**!
[](https://buymeacoffee.com/cnecrea)
---
## Contribuții
Contribuțiile sunt binevenite! Trimite un pull request sau raportează probleme [aici](https://github.com/cnecrea/hidroelectrica/issues).
---
## Suport
Dacă îți place această integrare, oferă-i un ⭐ pe [GitHub](https://github.com/cnecrea/hidroelectrica/)!