EnMo API v1
Príručka pre vývojára alebo programovacieho agenta. Strojovo čitateľný OpenAPI 3.1 opis je súčasťou dokumentácie.
Čo API poskytuje
Jeden denný prehľad zariadení priradených k oprávneným bytom a posledný platný odpočet každého zariadenia. Voda vrátane iPERL, PRVN a merače tepla. Každý záznam obsahuje evidovaný variabilný symbol (VS), bezpečne rozpoznané výrobné číslo merača a jeho posledných osem číslic. Interné ID bytu, mená, e-maily, adresy, stav batérie ani surové správy API neposiela. Alarmy a ďalšie hlásenia nie sú súčasťou v1.
Pri starších bytoch bez evidovaného VS má pole vs hodnotu null. Nenahrádzajte ho interným ID ani si nevymýšľajte VS; požiadajte EnMo o doplnenie. VS aj výrobné číslo sú textové reťazce: úvodné nuly sa nesmú stratiť. Ak názov zariadenia nie je spoľahlivo rozpoznaný ako výrobné číslo, obe polia výrobného čísla sú null; neodvodzujte ho z DevEUI.
Oprávnenia a vydanie kľúča
Oprávnený používateľ nájde po prihlásení správu kľúčov v časti Dokumenty → Vaše API kľúče. Správca si môže vytvoriť kľúč pre svoje pridelené byty. Prístup ku konkrétnemu bytu vyžaduje schválenie; po jeho sprístupnení si vlastník môže vytvoriť vlastný kľúč. Ak možnosť vytvoriť kľúč nevidíte, kontaktujte EnMo.
Tajný kľúč sa zobrazí len raz. Má platnosť najviac 365 dní, možno ho kedykoľvek zrušiť a po zmene priradenia bytu alebo účtu stratí prístup. Jeden používateľ môže mať najviac päť aktívnych kľúčov.
Požiadavka
GET https://app.enmo.sk/api/v1/devices
Authorization: Bearer enmo_v1_<id>_<secret>
Accept: application/jsonVolajte iba cez HTTPS. Kľúč nikdy nevkladajte do URL, klientského JavaScriptu, repozitára, logu ani požiadavky na podporu. Uchovajte ho v tajnom úložisku integrácie. Denný limit je jedno úspešné volanie na kľúč a deň podľa UTC. Po úspechu si odpoveď uložte vo vlastnej aplikácii a odtiaľ ju čítajte aj opakovane. Pri chybe 429 použite hlavičku Retry-After; opakovaný pokus v ten deň nepomôže.
Odpoveď
{
"schemaVersion": "1.1",
"generatedAt": "2026-11-05T06:00:00.000Z",
"timezone": "UTC",
"scope": { "type": "flat" },
"count": 2,
"devices": [
{ "category": "water", "devEui": "0011223344556677", "vs": "009009001",
"serialNumber": "8ZRI0114772344", "serialNumberLast8": "14772344",
"type": "SV", "latestReading": { "value": "125.338", "measuredAt": "2026-11-04T05:59:00.000Z", "unit": "m3", "source": "legacy" } },
{ "category": "prvn", "devEui": "8899aabbccddeeff", "vs": "009009001",
"serialNumber": null, "serialNumberLast8": null,
"latestReading": null }
]
}Príklad používa vymyslené identifikátory a hodnoty. value je stav počítadla, nie denná spotreba. Pri výpočte rozdielu používajte dva skutočné odpočty toho istého zariadenia a kontrolujte ich čas a reset/výmenu. null znamená, že platný odpočet nie je dostupný; nie je to nula. Čas measuredAt môže byť starší než generatedAt. Jednotka device_unit pri PRVN nie je kWh.
Chyby a správanie klienta
| HTTP | Význam | Postup |
|---|---|---|
| 200 | Úplný prehľad | Uložiť na deň do lokálnej cache. |
| 401 | Neplatný, expirovaný alebo zrušený kľúč | Vytvoriť nový v portáli; starý nepoužívať. |
| 403 | Zmenené oprávnenie, účet alebo vlastník bytu | Overiť aktuálne priradenie v portáli. |
| 429 | Denné volanie už prebehlo | Čítať vlastnú cache, ďalšie volanie až po Retry-After. |
| 503 | Dočasná chyba alebo priveľký výsledok | Opakovať s odstupom; denný limit sa nespotrebuje. |
Home Assistant a iní agenti
Pre Home Assistant je pripravená vlastná integrácia EnMo s návodom a ZIP balíkom. Po zadaní samostatného API kľúča vytvára senzory meračov, uchováva posledný platný prehľad a dodrží denné volanie aj po reštarte. Kľúč sa ukladá v konfigurácii Home Assistanta; chráňte prístup k nej a k zálohám.
Iný programovací agent nech použije OpenAPI opis, obmedzí čítanie na raz denne a uloží posledný platný prehľad lokálne. Pri štarte, opätovnom načítaní konfigurácie a prekročení limitu nesmie mazať posledný platný stav. Každá integrácia má mať vlastný kľúč, aby sa dala samostatne odvolať.
Minimalistický príklad pre serverový Python (štandardná knižnica):
import json, os, urllib.request
key = os.environ["ENMO_API_KEY"]
request = urllib.request.Request(
"https://app.enmo.sk/api/v1/devices",
headers={"Authorization": "Bearer " + key, "Accept": "application/json"})
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
assert data["schemaVersion"] == "1.1"
print(data["count"])Pri produkčnej integrácii pridajte chránené úložisko kľúča, lokálnu cache, ošetrenie chýb a kontrolu formátu podľa OpenAPI. S odpoveďou zaobchádzajte ako s osobným údajom tam, kde sa dá priradiť ku konkrétnemu bytu. Odovzdajte kľúč len zmluvne poverenému spracovateľovi.