1. Endpoint GET /api/status
- URL:
http://<IP_ESP32>/api/status - Metoda:
GET - Content-Type:
application/json - Cache:
no-store(vždy aktuální hodnoty z RAM firmware) - Autentizace: žádná (pouze v lokální síti; případně omezte firewall / VLAN)
Firmware dál zpracovává MQTT, PZEM, teploty a SSR v reálném čase.
HTML stránka / se už neobnovuje každých 2 s — pro aktuální stav použijte reload prohlížeče nebo tento API endpoint.
2. Příklad odpovědi JSON
Ukázková odpověď EaSun ESP32 (hodnoty se liší podle provozu a MQTT):
{
"solarW": 1850,
"solarA": 4.2,
"totalTodaySolar": 12400,
"batteryW": -320,
"batterySOC": 78,
"batterySOCMin": 40,
"odberWatt": 2100.5,
"voltage": 230,
"current": 9.1,
"VypocetProcenta": 45,
"loadW": 2400,
"cezW": -50,
"cezWMin": 200,
"cezWMax": 300,
"cezV": 230,
"ssrON1": 1,
"ssrON2": 0,
"ssrON3": 0,
"solarWMin": 300,
"distributor1": 0,
"distributor2": 0,
"distributor3": 0,
"teplota1": 42.5,
"teplota1_bad": false,
"temp1a": 35,
"temp1": 55,
"teplota2": 0.0,
"teplota2_bad": false,
"temp2a": 0,
"temp2": 0,
"teplota3": 0.0,
"teplota3_bad": false,
"temp3a": 0,
"temp3": 0,
"tempC1": 21.3,
"humi1": 48.0,
"spotPrice": 1850,
"spotLevel": "medium",
"userMaxPwmChangePerSecond": 2.0,
"enableSlowPwmMode": true,
"autoOptimizationEnabled": false,
"aiFinalPwm": 0.0,
"pwmWebManual": false,
"pwmWebManualPct": 0
}
3. Popis polí JSON API
| Klíč | Typ | Jednotka | Význam |
|---|---|---|---|
solarW | int | W | Výkon FVE (MQTT / měření) |
solarA | float | A | Proud FVE |
totalTodaySolar | int | W / Wh* | Souhrn / predikce dne (*dle firmware) |
batteryW | int | W | Výkon baterie (+ nabíjení / − vybíjení dle měniče) |
batterySOC | int | % | Stav nabití baterie |
batterySOCMin | int | % | Minimální SOC nastavení |
odberWatt | float | W | Odběr topení (PZEM / výpočet) |
voltage | int | V | Napětí měřené na zátěži |
current | float | A | Proud zátěže |
VypocetProcenta | float | % | Aktuální PWM topení (0–100) |
loadW | int | W | Spotřeba domácnosti / load |
cezW | int | W | Odběr / přetok ze sítě (distributor) |
cezWMin / cezWMax | int | W | Limity sítě |
cezV | int | V | Napětí sítě |
ssrON1..3 | int 0/1 | — | Stav SSR relé kanálu |
solarWMin | int | W | Práh „je solární výroba“ |
distributor1..3 | int | — | Povolení odběru ze sítě pro SSR |
teplota1..3 | float | °C | Zobrazená teplota kanálu |
teplotaN_bad | bool | — | true = neplatné / chybějící čidlo |
tempNa / tempN | int | °C | Nastavení OD / DO teploty |
tempC1 | float | °C | Teplota okolí (např. DHT) |
humi1 | float | % | Vlhkost |
spotPrice | float | CZK/MWh | Aktuální spotová cena |
spotLevel | string | — | Pásmo (např. low / medium / high) |
userMaxPwmChangePerSecond | float | %/s | Rychlost změny PWM |
enableSlowPwmMode | bool | — | Pomalý PWM režim |
autoOptimizationEnabled | bool | — | Automatická optimalizace baterie |
aiFinalPwm | float | % | PWM po AI safety |
pwmWebManual | bool | — | Ruční režim stránky /pwm |
pwmWebManualPct | int | % | Ruční PWM hodnota |
4. Home Assistant — RESTful Sensor
Doporučená integrace:
RESTful
(více senzorů z jednoho GET) nebo
RESTful Sensor.
Do configuration.yaml (nahraďte IP adresou ESP32):
# configuration.yaml — Home Assistant + EaSun ESP32 /api/status
rest:
- resource: http://192.168.1.50/api/status
method: GET
scan_interval: 30
sensor:
- name: "EaSun solarW"
unique_id: easun_solar_w
value_template: "{{ value_json.solarW }}"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "EaSun loadW"
unique_id: easun_load_w
value_template: "{{ value_json.loadW }}"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "EaSun cezW"
unique_id: easun_cez_w
value_template: "{{ value_json.cezW }}"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "EaSun odberWatt"
unique_id: easun_odber_w
value_template: "{{ value_json.odberWatt }}"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "EaSun PWM"
unique_id: easun_pwm
value_template: "{{ value_json.VypocetProcenta }}"
unit_of_measurement: "%"
state_class: measurement
- name: "EaSun battery SOC"
unique_id: easun_battery_soc
value_template: "{{ value_json.batterySOC }}"
unit_of_measurement: "%"
device_class: battery
state_class: measurement
- name: "EaSun teplota1"
unique_id: easun_teplota1
value_template: "{{ value_json.teplota1 }}"
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
- name: "EaSun SSR1"
unique_id: easun_ssr1
value_template: "{{ value_json.ssrON1 }}"
binary_sensor:
- platform: template
sensors:
easun_ssr1_on:
friendly_name: "EaSun SSR1 ON"
value_template: "{{ states('sensor.easun_ssr1') | int == 1 }}"
device_class: power
Tipy pro Home Assistant
scan_interval: 30(nebo 10–60 s) — nevolejte každou sekundu, ESP má i jiné úlohy.- Po úpravě YAML: Developer Tools → YAML → Check, pak Restart HA.
- Pro Energy dashboard použijte entity s
device_class: power/ případně Riemann sum pro Wh. - Binary stavy SSR můžete mapovat přes Template binary sensor (viz výše).
5. Rychlý test endpointu
- Prohlížeč: otevřete
http://<IP>/api/status— musí se zobrazit JSON. - PowerShell:
Invoke-RestMethod http://<IP>/api/status | ConvertTo-Json - curl:
curl -s http://<IP>/api/status
6. Časté otázky (FAQ)
Jaká je URL měření na ESP32 EaSun?
GET http://<IP_ESP32>/api/status vrací application/json
s aktuálními hodnotami z RAM (solarW, loadW, cezW, PWM, teploty, spot…). Cache je no-store.
Jak napojím EaSun ESP32 na Home Assistant?
Použijte integraci RESTful. Do configuration.yaml zadejte
resource na /api/status, scan_interval např. 30 s
a value_template na klíče JSON — viz kapitola Home Assistant výše.
Obnovuje se hlavní web ESP každých pár sekund?
Ne. Stránka / je snapshot při reloadu. Živá data berte z /api/status.
Vyžaduje /api/status přihlášení?
Ve výchozím firmwaru ne. Endpoint je pro lokální síť — omezte přístup firewallem nebo VLAN.