Datele de pe pzuro.app sunt publice și pot fi citite direct de Home Assistant, fără cont, fără cheie API, gratuit. Sunt două moduri de integrare, după cât de precis vrei să fie:
Bun pentru un panou de control sau o notificare generală — "azi prețul mediu e X". Citește direct fișierul data/prices.json, fără nimic construit special pentru asta.
# configuration.yaml
rest:
- resource: https://pzuro.ro/data/prices.json
scan_interval: 1800
sensor:
- name: "PZU pret mediu azi"
value_template: "{{ value_json.today.avg_ron_kwh }}"
unit_of_measurement: "lei/kWh"
- name: "PZU pret minim azi"
value_template: "{{ value_json.today.min_ron_kwh }}"
unit_of_measurement: "lei/kWh"
Cu astea două, ai deja niște senzori pe care îi poți pune pe un dashboard sau folosi într-o notificare zilnică. Un singur resource: alimentează ambii senzori — nu se face câte un request separat pentru fiecare.
Pentru o automatizare reală — "pornește boilerul acum dacă prețul curent e sub un prag" — ai nevoie de prețul exact al intervalului de 15 minute în care te afli, nu media zilei. Asta înseamnă identificarea intervalului corect din cele 96 ale zilei, ținând cont și de faptul că etichetele "azi"/"mâine" din fișierul brut depind de ora la care a rulat ultima actualizare, nu de data calendaristică reală.
În loc să rescrii logica asta în Jinja2 (posibil, dar greu de întreținut), am pus-o direct într-un mic API dedicat, care răspunde mereu cu un singur număr corect:
# configuration.yaml
rest:
- resource: https://pzuro.ro/api/now
scan_interval: 300
sensor:
- name: "PZU pret acum"
value_template: "{{ value_json.price_ron_kwh }}"
unit_of_measurement: "lei/kWh"
json_attributes:
- is_negative
- interval_start
- interval_end
Cu senzorul ăsta, o automatizare devine simplă:
# automations.yaml
- alias: "Pornește boilerul cand pretul e mic"
trigger:
- platform: numeric_state
entity_id: sensor.pzu_pret_acum
below: 0.3
action:
- service: switch.turn_on
entity_id: switch.boiler
unavailable în acel caz, nu va arăta tăcut un preț greșit. Merită un trigger separat pe starea senzorului dacă automatizarea ta controlează ceva important.
Răspunsul de la /api/now include deja câmpul is_negative — un adevărat/fals simplu, util dacă vrei să oprești automat exportul în rețea (sau să redirecționezi surplusul către o baterie/consumatori interni) când prețul devine negativ.
# configuration.yaml
binary_sensor:
- platform: template
sensors:
pzu_pret_negativ:
friendly_name: "PZU preț negativ acum"
value_template: "{{ is_state_attr('sensor.pzu_pret_acum', 'is_negative', true) }}"
# automations.yaml
- alias: "Opreste exportul cand pretul e negativ"
trigger:
- platform: state
entity_id: binary_sensor.pzu_pret_negativ
to: "on"
action:
- service: switch.turn_off
entity_id: switch.export_invertor
Senzorul binar de mai sus se bazează pe senzorul sensor.pzu_pret_acum definit deja mai sus pe pagină — ai nevoie de ambele configurate.
Nu e nevoie de scan_interval mai agresiv decât 5 minute (300 secunde) — prețul se schimbă o dată la 15 minute, deci verificările mai frecvente nu aduc date noi, doar consumă inutil.
Graficul complet, calculatorul de factură și istoricul sunt pe pagina principală.
Deschide pzuro.app →