Skip to content

Koncové body REST API ZiggyMeter

Veřejné API ZiggyMeter.

Autentizace

API ZiggyMeter používá autentizaci HTTP Bearer. Získejte krátkodobý přístupový token prostřednictvím přihlašovacího koncového bodu a poté jej posílejte v hlavičce Authorization při následných požadavcích.

Poznámky

  • Tokeny vyprší po uplynutí doby expires_in_secs. Po vypršení se znovu autentizujte.
  • Chybějící nebo neplatné tokeny budou mít za následek chybu 401 Unauthorized.
  • Vždy zahrňte přesný název hlavičky Authorization s hodnotou Bearer <token>.

Výjimky

  • POST /api/v1/system/login nevyžaduje token.
  • POST /api/v1/system/password nevyžaduje token (místo toho validuje old_password).

Systémové API (/api/v1/system)

POST /api/v1/system/login

Přihlášení. Vrací autorizační token.

json
{
    "username": "username",
    "password": "password"
}
PoleTypPopis
usernamestringUživatelské jméno
passwordstringHeslo

Odpověď

json
{
    "token": "vKEsedeLOBqLoSYYiWVrOF9To8T2RNK0ZV91aUwW",
    "expires_in_secs": 3600
}
PoleTypPopis
tokenstringAutorizační token
expires_in_secsintegerZbývající platnost v sekundách

POST /api/v1/system/logout

Odhlášení

Odpovědi

  • 200 OK s prázdným tělem

GET /api/v1/system/version

Získat verzi firmwaru.

Odpověď

json
{
    "firmware": {
        "version": "1.0.320",
        "date": "Jan  3 2026",
        "time": "11:50:00"
    },
    "frontend": {
        "version": "1.0.320",
        "date": "Jan  3 2026",
        "time": "11:36:31"
    },
    "build_number": 320,
    "upgrade_url": "https://fw.ziggymeter.com/"
}
PoleTypPopis
firmwareobjectPodrobnosti o verzi firmwaru
firmware.versionstringVerze firmwaru
firmware.datestringDatum sestavení firmwaru
firmware.timestringČas sestavení firmwaru
frontendobjectPodrobnosti o verzi frontend
frontend.versionstringVerze frontend
frontend.datestringDatum sestavení frontend
frontend.timestringČas sestavení frontend
build_numberintegerČíslo sestavení
upgrade_urlstringURL pro aktualizaci firmwaru

GET /api/v1/system/status

Získat stav zařízení.

Odpovědi

json
{
    "battery_voltage": 0,
    "usb_voltage": 5.146,
    "battery_powered": false,
    "battery_status": 0,
    "device_temperature": 26.6,
    "zigbee_enabled": false,
    "wifi_enabled": true,
    "home_assistant_enabled": false
}
PoleTypPopis
battery_voltagenumberNapětí baterie
usb_voltagenumberNapětí USB
battery_poweredbooleanZda je zařízení napájeno baterií
battery_statusintegerÚroveň nabití baterie v procentech
device_temperaturenumberTeplota zařízení (°C)
zigbee_enabledbooleanIntegrace Zigbee povolena
wifi_enabledbooleanWi-Fi povolena
home_assistant_enabledbooleanIntegrace Home Assistant povolena

POST /api/v1/system/reboot

Restartovat zařízení.

Odpovědi

  • 200 OK s prázdným tělem. Zařízení se okamžitě restartuje, což způsobí přerušení aktuálních spojení.

POST /api/v1/system/factory_reset

Tovární reset. Vymaže veškerou konfiguraci, včetně Wi-Fi a hesla správce, a restartuje zařízení.

Odpovědi

  • 200 OK s prázdným tělem. Zařízení se restartuje a vrátí se do výchozího stavu nastavení.

POST /api/v1/system/password

Změnit heslo správce.

Tento koncový bod nevyžaduje Bearer token. Validuje old_password.

Tělo požadavku

json
{
    "old_password": "old",
    "new_password": "new"
}
PoleTypPopis
old_passwordstringAktuální heslo správce
new_passwordstringNové heslo správce

Odpovědi

  • 200 OK s prázdným tělem
  • 400 Bad Request pokud chybí pole JSON
  • 403 Forbidden pokud je old_password neplatné

POST /api/v1/system/ota

Odesílá obraz aktualizace firmwaru. Po úspěšném přenosu se zařízení restartuje a aktualizuje. Zařízení je aktualizováno pouze tehdy, když je přenesen celý obraz. Neúspěšný přenos je ignorován a nezpůsobí nefunkčnost zařízení.

TIP

V případě problémů s přenosem omezte rychlost přenosu. Viz API.

Tělo požadavku

Binární data obrazu firmwaru (nikoli JSON, surová binární data).

Odpovědi

  • 200 OK s prázdným tělem po úspěšném přenosu a zahájení aktualizace.
  • 401 Unauthorized pokud token chybí nebo je neplatný.
  • 500 Internal Server Error pokud aktualizace selže.

Síťové API (/api/v1/network)

GET /api/v1/network/status

Získat stav sítě.

Odpovědi

json
{
    "ip": "192.168.20.242",
    "netmask": "255.255.255.0",
    "gateway": "192.168.20.1",
    "hostname": "ZiggyMeter-1234",
    "dhcp": true,
    "ssid": "wifinetname",
    "rssi": -89,
    "channel": 4,
    "authmode": 3,
    "ap_mode": false
}
PoleTypPopis
ipstringIP adresa
netmaskstringMaska sítě
gatewaystringIP adresa brány
hostnamestringHostitelské jméno zařízení
dhcpbooleanDHCP povoleno
ssidstringSSID Wi-Fi
rssiintegerSíla signálu
channelintegerKanál Wi-Fi
authmodeintegerRežim autentizace
ap_modebooleanRežim přístupového bodu (AP)

GET /api/v1/network/scan

Získat Wi-Fi sítě.

Odpověď

json
{
    "hostname": "ZiggyMeter-1234",
    "networks": [
        {
            "ssid": "Star-XYZ123",
            "bssid": "A1B2C3D4E5F6",
            "rssi": -87,
            "channel": 4,
            "authmode": 7
        },
        {
            "ssid": "HomeNet-5G",
            "bssid": "F0E1D2C3B4A5",
            "rssi": -88,
            "channel": 4,
            "authmode": 3
        },
        {
            "ssid": "GuestWiFi",
            "bssid": "9A8B7C6D5E4F",
            "rssi": -93,
            "channel": 6,
            "authmode": 3
        },
        {
            "ssid": "OfficeSecure",
            "bssid": "1F2E3D4C5B6A",
            "rssi": -94,
            "channel": 13,
            "authmode": 3
        }
    ]
}
PoleTypPopis
hostnamestringHostitelské jméno zařízení
networksarraySeznam dostupných Wi-Fi sítí
networks[].ssidstringSSID sítě
networks[].bssidstringBSSID sítě (MAC adresa)
networks[].rssiintegerSíla signálu (RSSI)
networks[].channelintegerKanál Wi-Fi
networks[].authmodeintegerRežim autentizace

POST /api/v1/network/wifi

Odeslat konfiguraci Wi-Fi.

Tělo požadavku

PoleTypPopis
ssidstringSSID Wi-Fi (vyžadováno, 1-31 znaků)
passwordstringHeslo Wi-Fi (vyžadováno, až 63 znaků)
dhcpbooleanPovolit DHCP (vyžadováno)
hostnamestringHostitelské jméno zařízení (volitelné, neprázdný řetězec až 31 znaků)
ipstringStatická IP adresa (vyžadováno, pokud je DHCP false, platná IP)
netmaskstringMaska sítě (vyžadováno, pokud je DHCP false, platná IP)
gatewaystringIP adresa brány (vyžadováno, pokud je DHCP false, platná IP)
applybooleanPoužít nastavení okamžitě (volitelné, výchozí hodnota false)

Odpovědi

json
{
    "ssid": "iot-net",
    "dhcp": true,
    "hostname": "ziggymeter1",
    "ip": "192.168.8.177",
    "netmask": "255.255.255.0",
    "gateway": "192.168.8.1"
}
PoleTypPopis
ssidstringNakonfigurované SSID Wi-Fi
dhcpbooleanStav DHCP
hostnamestringNakonfigurované hostitelské jméno
ipstringAktuální/Statická IP adresa
netmaskstringAktuální/Statická maska sítě
gatewaystringAktuální/Statická IP brány

WARNING

Pokud je apply nastaveno na true, zařízení se pokusí okamžitě připojit k nové síti. To způsobí přerušení aktuálního spojení.

POST /api/v1/network/ap

Odeslat konfiguraci přístupového bodu (AP).

Tělo požadavku

PoleTypPopis
ap_ssidstringSSID přístupového bodu (volitelné, 1-31 znaků)
ap_passwordstringHeslo přístupového bodu (volitelné, 8-63 znaků)
ap_enabledbooleanPovolit režim přístupového bodu (volitelné)
applybooleanPoužít nastavení okamžitě (volitelné, výchozí hodnota false)

Odpovědi

json
{
    "ap_ssid": "ZiggyMeter-1234",
    "ap_enabled": true
}
PoleTypPopis
ap_ssidstringNakonfigurované SSID AP
ap_enabledbooleanStav režimu AP

Zigbee API (/api/v1/zigbee)

GET /api/v1/zigbee/config

Získat konfiguraci Zigbee.

Odpověď

json
{
    "enabled": false,
    "channel": 11,
    "short_address": 0,
    "extended_pan_id": "00124b0000000000",
    "pan_id": 0
}
PoleTypPopis
enabledbooleanZigbee povoleno/zakázáno podle uložené konfigurace
channelintegerAktuální kanál Zigbee
short_addressintegerAktuální krátká adresa Zigbee
extended_pan_idstringAktuální rozšířené PAN ID Zigbee (16 hex znaků)
pan_idintegerAktuální PAN ID Zigbee

POST /api/v1/zigbee/config

Nastavit konfiguraci Zigbee.

Tělo požadavku

json
{
    "enabled": true
}
PoleTypPopis
enabledbooleanPovolit nebo zakázat podporu Zigbee

Odpovědi

  • 200 OK s prázdným tělem

POST /api/v1/zigbee/reset

Spustit reset Zigbee. Po resetu je interní modul Zigbee vymazán a připraven k připojení k nové síti Zigbee.

Odpovědi

  • 200 OK s prázdným tělem. Aktuální párování Zigbee bude ztraceno.

POST /api/v1/zigbee/map

Odeslat konfiguraci Zigbee pro přiřazení konkrétních datových bodů Zigbee k OBIS kódům elektroměru.

Tělo požadavku

json
{
    "mapping": [
        {
            "obis": "1-0:15.8.0",
            "mode": 0,
            "mapping_id": "07020000"
        },
        {
            "obis": "15.8.2",
            "mode": 1,
            "mapping_id": "07020001"
        }
    ]
}
PoleTypPopis
mappingarraySeznam položek mapování OBIS na Zigbee
mapping[].obisstringOBIS kód k mapování (např. 1.8.0 nebo 1-0:15.8.0)
mapping[].modeintegerRežim shody: 0 (shoda s úplným kódem OBIS), 1 (shoda s krátkým kódem OBIS)
mapping[].mapping_idstringZigbee mapovací ID (8 hex znaků, např. 07020000; cluster + ID)

Odpovědi

  • 200 OK s prázdným tělem
  • 401 Unauthorized pokud token chybí nebo je neplatný
  • 400 Bad Request pokud je struktura JSON neplatná

Home Assistant API (/api/v1/hass)

GET /api/v1/hass

Získat konfiguraci Home Assistant.

Odpověď

json
{
    "enabled": false,
    "url": "https://home-assistant.local:8123",
    "cert_max_size": 10239
}
PoleTypPopis
enabledbooleanZda je integrace Home Assistant povolena
urlstringURL Home Assistant (přítomno pouze při povolení)
cert_max_sizeintegerMaximální velikost certifikátu Home Assistant v bajtech

POST /api/v1/hass

Nastavit konfiguraci Home Assistant.

Tělo požadavku

PoleTypPopis
enabledbooleanPovolit nebo zakázat integraci Home Assistant
urlstringURL serveru Home Assistant (vyžadováno při povolení)
tokenstringDlouhodobý přístupový token Home Assistant (vyžadováno při povolení)
langstringJazyk pro popisů OBIS (volitelné, výchozí 'en' při povolení)
certstringPEM certifikát pro HTTPS spojení (volitelné, při neposkytnutí a povolení se vymaže)

Odpovědi

json
{
    "enabled": true,
    "url": "https://home-assistant.local:8123",
    "cert_max_size": 10239
}
PoleTypPopis
enabledbooleanZda je integrace povolena
urlstringCílová URL Home Assistant
cert_max_sizeintegerMaximální podporovaná velikost certifikátu

GET /api/v1/hass/send

Odeslat testovací publikaci do Home Assistant.

Odpověď

json
{
    "retcode": 0,
    "http_status_code": 200
}
PoleTypPopis
retcodeintegernávratový kód (0 znamená úspěch)
http_status_codeintegerHTTP stavový kód vrácený Home Assistantem

Chyby

  • 400 Bad Request pokud není povolena integrace Home Assistant

Meter API (IEC 62056-21) (/api/v1/iec62056)

GET /api/v1/iec62056/read

Spustit odečet elektroměru a vrátit naměřené hodnoty.

Odpovědi

200

Vrací JSON strukturu s podrobnostmi o elektroměru a polem odečtů OBIS.

json
{
    "protocol": "IEC62056-21",
    "meter_id": "/XXX6\\2YYYYYY",
    "mode": "C",
    "baudrate": 9600,
    "timestamp": 293209783,
    "status": 1,
    "readings": [
        {
            "obis_long": "0-0:C.1.0",
            "obis": "C.1.0",
            "value1": "12345678",
            "value2": "",
            "value1_number": null,
            "value1_unit": "",
            "medium": 0,
            "channel": 0,
            "billing_period": null,
            "mapping_id": "00000000",
            "en": "Meter serial number"
        },
        {
            "obis_long": "1-0:15.8.0",
            "obis": "15.8.0",
            "value1": "00000001000.657*kWh",
            "value2": "",
            "value1_number": 1000.657,
            "value1_unit": "kWh",
            "medium": 1,
            "channel": 0,
            "billing_period": null,
            "mapping_id": "07020000",
            "en": "Absolute active energy total"
        }
    ]
}
PoleTypPopis
protocolstringPoužitý protokol (IEC62056-21)
meter_idstringIdentifikátor elektroměru z identifikačního telegramu elektroměru
modestringKomunikační režim (např. 'C' nebo 'D')
baudrateintegerPřenosová rychlost (baudrate) použitá pro komunikaci
timestampintegerEpoch časové razítko odečtu
statusintegerStavový kód odečtu (0 = úspěch, ostatní hodnoty indikují chyby)
readingsarrayPole odečtů OBIS
readings[].obis_longstringÚplný OBIS kód (např. 1-0:1.8.0)
readings[].obisstringKrátký OBIS kód (např. 1.8.0)
readings[].value1stringPrimární hodnota přijatá z elektroměru
readings[].value2stringSekundární hodnota (např. časové razítko maxima), pokud je přítomna
readings[].value1_numbernumber|nullParsed numeric value of value1
readings[].value1_unitstringJednotka pro value1 (např. 'kWh', 'kW', 'V')
readings[].mediuminteger|nullIdentifikátor média
readings[].channelinteger|nullIdentifikátor kanálu
readings[].billing_periodinteger|nullIdentifikátor zúčtovacího období
readings[].mapping_idstringZigbee mapovací ID (8 hex znaků, např. 07020000), nebo 00000000, pokud není mapováno
readings[].enstring|nullAnglický popis OBIS kódu
500
  • Meter timeout: Odečet neskončil v očekávaném časovém rámci (~45 s).
  • Meter error: Elektroměr vrátil chybovou odpověď.

GET /api/v1/iec62056/last

Získat poslední dostupné odečty elektroměru (nespouští nový odečet).

Odpovědi

200

Stejné schéma odpovědi jako GET /api/v1/iec62056/read.

GET /api/v1/iec62056/config

Získat konfiguraci elektroměru.

Odpovědi

json
{
    "mode_d_enabled": false,
    "mode_d_baudrate": 2400,
    "baudrate_max": 9600,
    "schedule_min": 1,
    "battery": false
}
PoleTypPopis
mode_d_enabledbooleanZda je povolen IEC 62056 režim D
mode_d_baudrateintegerPřenosová rychlost pro komunikaci v režimu D
baudrate_maxintegerMaximální podporovaná přenosová rychlost
schedule_minintegerMinimální interval plánovaného odečtu (minuty)
batterybooleanZda je elektroměr napájen z baterie

POST /api/v1/iec62056/config

Odeslat konfiguraci elektroměru.

Tělo požadavku

PoleTypPopis
mode_d_enabledbooleanPovolit nebo zakázat IEC 62056 režim D
mode_d_baudrateintegerPřenosová rychlost pro režim D (musí být platná hodnota)
baudrate_maxintegerMaximální podporovaná přenosová rychlost (musí být platná hodnota)
batterybooleanZda je elektroměr napájen z baterie
schedule_minintegerMinimální interval plánovaného odečtu v minutách (minimálně -1)

Odpovědi

json
{
    "mode_d_enabled": false,
    "mode_d_baudrate": 2400,
    "baudrate_max": 9600,
    "schedule_min": 5,
    "battery": false
}
PoleTypPopis
mode_d_enabledbooleanStav režimu D IEC 62056
mode_d_baudrateintegerNakonfigurovaná přenosová rychlost pro režim D
baudrate_maxintegerMaximální komunikační přenosová rychlost
schedule_minintegerInterval plánovaných odečtů (minuty)
batterybooleanPříznak provozu na baterie