Back to Top
Přejít k hlavnímu obsahu

Tato stránka popisuje, jak mohou registrovaní uživatelé odesílat výrobní data svých OZE instalací (FVE, větrné, vodní nebo geotermální elektrárny) do platformy i-meteo.cz prostřednictvím HTTP API.

Data jsou přijímána přes jednoduché REST-like rozhraní. Stačí pravidelně (např. každých 15 minut nebo jednou denně) spustit skript, který odešle naměřené hodnoty.

1. Autentizace

API podporuje tři způsoby autentizace. Pro automatické skripty a mobilní aplikace doporučujeme Bearer token — je bezpečnější než heslo a vázán výhradně na konkrétní instalaci.

Bearer token doporučeno

Každá OZE instalace má unikátní 64znakový token. Najdete ho v detailu instalace v sekci API pro odesílání dat. Token opravňuje výhradně k zápisu dat pro danou instalaci — heslo k účtu zůstává v bezpečí.

Authorization: Bearer <váš-64znakový-token>

Token lze kdykoli vygenerovat znovu (tlačítko v detailu instalace). Starý token okamžitě přestane fungovat.

HTTP Basic Auth

Alternativa pro skripty — přihlašovací údaje k účtu na platformě v každém požadavku v Base64:

Authorization: Basic <base64(email:heslo)>

Vyžaduje oprávnění „Přidávat data OZE přes API" na vašem účtu.

Session Cookie

Přihlaste se na web standardním formulářem a v dalších požadavcích posílejte session cookie. Vhodné pro testování v Postman/Insomnia.

Cookie: SSESS...=<session_id>
X-CSRF-Token: <token z https://www.i-meteo.cz/session/token>

2. Endpoint a formát požadavku

POST https://www.i-meteo.cz/api/oze/{id}/data

Kde {id} je číselné ID vaší OZE instalace (najdete ho v detailu instalace nebo vám ho sdělí správce).

Povinné HTTP hlavičky

Content-Type: application/json
Authorization: Bearer <váš-api-token>

Alternativně: Authorization: Basic <base64(email:heslo)>

Seznam svých instalací a jejich ID: GET https://www.i-meteo.cz/api/oze

3. Parametry JSON těla

Parametr Typ Povinný Popis
energie_kwh float ANO Množství vyrobené elektrické energie v kWh za sledované období (od posledního odesílání do teď, nebo denní součet). Rozsah: 0 – 99 999.
vykon_kw float ne Aktuální výkon v kW v okamžiku odesílání. U FVE typicky aktuální výstupní výkon střídače.
je_vcera bool ne (výchozí: false) Nastavte true pokud odesíláte včerejší denní souhrn (např. ranní odesílání dat za předchozí den). Data budou zařazena do fronty a systém je opakovaně zkouší uložit, dokud se to nepodaří. Zabrání duplicitám při výpadcích.

Ukázkové tělo požadavku

{
  "energie_kwh": 12.547,
  "vykon_kw": 3.84,
  "je_vcera": false
}

Minimální tělo (jen povinný parametr):

{
  "energie_kwh": 12.547
}

4. Odpovědi serveru

Úspěch — HTTP 201 Created

{
  "ok": true,
  "zprava": "Data úspěšně uložena.",
  "oze_id": 5,
  "energie_kwh": 12.547,
  "ucinnost": 1.2547
}

Pole ucinnost = energie_kwh / instalovany_vykon (kWh/kWp nebo kWh/kW).

Chybové odpovědi

HTTP kódDůvod
400Chybí povinný parametr energie_kwh, nebo neplatný JSON
401Chybí autentizace nebo špatné přihlašovací údaje
403Nemáte oprávnění pro tuto instalaci, nebo instalace není aktivní
404OZE instalace s daným ID neexistuje
500Chyba serveru (viz logy, kontaktujte správce)

5. Příklady kódu

Ve všech příkladech nahraďte VAS_API_TOKEN (64znakový token z detailu instalace) a ID_INSTALACE číselným ID vaší instalace.

cURL (příkazová řádka / Bash)

curl -s -X POST \
  "https://www.i-meteo.cz/api/oze/ID_INSTALACE/data" \
  -H "Authorization: Bearer VAS_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "energie_kwh": 12.547,
    "vykon_kw": 3.84
  }'

PHP

<?php
/**
 * Odešle výrobní data FVE do platformy i-meteo.cz
 * Spouštět každých 15 minut přes cron:
 *   */15 * * * * /usr/bin/php /cesta/k/fve_odeslat.php
 */

define('OZE_URL',   'https://www.i-meteo.cz/api/oze/ID_INSTALACE/data');
define('OZE_TOKEN', 'VAS_API_TOKEN'); // z detailu instalace

// === Zde načtěte aktuální data z vašeho střídače / loggeru ===
$energieKwh = nactiEnergiizStridace(); // implementujte podle vašeho HW
$vykonKw    = nactiVykonzStridace();   // volitelné

$data = json_encode([
    'energie_kwh' => round($energieKwh, 3),
    'vykon_kw'    => round($vykonKw, 3),
]);

$ch = curl_init(OZE_URL);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $data,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'Authorization: Bearer ' . OZE_TOKEN,
    ],
    CURLOPT_TIMEOUT        => 15,
]);

$odpoved    = curl_exec($ch);
$httpKod    = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpKod === 201) {
    echo "OK: Data odeslána.\n";
} else {
    file_put_contents('/tmp/fve_chyba.log',
        date('Y-m-d H:i:s') . " HTTP $httpKod: $odpoved\n",
        FILE_APPEND
    );
    echo "CHYBA HTTP $httpKod\n";
    exit(1);
}

// === Pomocné funkce – příklad čtení z CSV souboru Fronius/SolarEdge ===
function nactiEnergiizStridace(): float {
    // Příklad: čtení z lokálního souboru exportovaného střídačem
    // $csv = file_get_contents('/var/data/stridac_export.csv');
    // return (float) parsujCsv($csv)['energy_kwh'];
    return 0.0; // TODO: implementujte
}

function nactiVykonzStridace(): float {
    return 0.0; // TODO: implementujte
}

PHP – odesílání včerejšího denního souhrnu (ranní cron)

<?php
// Odesílat jednou ráno (např. v 6:00) pro data předchozího dne
$data = json_encode([
    'energie_kwh' => 42.350,  // celková výroba včera v kWh
    'vykon_kw'    => null,
    'je_vcera'    => true,    // systém uloží jako včerejší data
]);
// ... zbytek curl kódu stejný jako výše

Python 3

#!/usr/bin/env python3
"""
Odešle výrobní data FVE do platformy i-meteo.cz
Závislosti: pip install requests
Cron: */15 * * * * python3 /cesta/k/fve_odeslat.py
"""

import requests
import logging

OZE_URL   = "https://www.i-meteo.cz/api/oze/ID_INSTALACE/data"
OZE_TOKEN = "VAS_API_TOKEN"  # z detailu instalace

logging.basicConfig(filename="/tmp/fve.log", level=logging.INFO,
                    format="%(asctime)s %(levelname)s %(message)s")


def odeslat_data(energie_kwh: float, vykon_kw: float = None, je_vcera: bool = False):
    """Odešle data na API i-meteo.cz"""
    payload = {"energie_kwh": round(energie_kwh, 3)}
    if vykon_kw is not None:
        payload["vykon_kw"] = round(vykon_kw, 3)
    if je_vcera:
        payload["je_vcera"] = True

    try:
        r = requests.post(
            OZE_URL,
            json=payload,
            headers={"Authorization": f"Bearer {OZE_TOKEN}"},
            timeout=15,
        )
        if r.status_code == 201:
            logging.info(f"OK – energie={energie_kwh} kWh, odpověď: {r.json()}")
        else:
            logging.error(f"CHYBA HTTP {r.status_code}: {r.text}")
    except requests.RequestException as e:
        logging.error(f"Síťová chyba: {e}")


if __name__ == "__main__":
    # === Zde načtěte data z vašeho střídače ===
    energie = 12.547   # TODO: načíst z API střídače / MQTT / souboru
    vykon   = 3.840    # TODO: aktuální výkon v kW

    odeslat_data(energie, vykon)

Python – čtení z GoodWe lokálního API (pro uživatele bez automatické integrace)

import requests

# GoodWe střídač běží na lokální síti a nabízí vlastní API
STRIDAC_IP = "192.168.1.100"  # IP vašeho GoodWe střídače na LAN
OZE_URL    = "https://www.i-meteo.cz/api/oze/ID_INSTALACE/data"
OZE_TOKEN  = "VAS_API_TOKEN"

def cti_goodwe_local():
    """Čte data přímo ze střídače GoodWe přes lokální API (bez cloudu)."""
    r = requests.post(f"http://{STRIDAC_IP}/inverter.cgi",
                      data={"optType": "ReadRealTimeData"}, timeout=5)
    d = r.json()
    pac_w = d.get("Pac", 0)   # aktuální výkon v W
    eday  = d.get("Eday", 0)  # dnešní výroba v kWh
    return eday, pac_w / 1000.0

energie, vykon = cti_goodwe_local()
requests.post(OZE_URL,
              json={"energie_kwh": energie, "vykon_kw": vykon},
              headers={"Authorization": f"Bearer {OZE_TOKEN}"},
              timeout=15)

Bash – nastavení cronu

Přidejte do crontabu (crontab -e):

# Odesílání každých 15 minut (průběžná data)
*/15 * * * * /usr/bin/php /home/uzivatel/fve_odeslat.php >> /tmp/fve.log 2>&1

# Nebo Python verze
*/15 * * * * /usr/bin/python3 /home/uzivatel/fve_odeslat.py

# Ranní odesílání včerejšího souhrnu (v 6:00)
0 6 * * * /usr/bin/php /home/uzivatel/fve_souhrn_vcera.php

6. Automatická integrace GoodWe

Pokud máte FVE s měničem GoodWe připojeným na SEMS Portal, může platforma i-meteo.cz stahovat vaše data automaticky — bez nutnosti psát jakýkoli skript.

Jak aktivovat automatické stahování

  1. Přihlaste se na platformu a otevřete editační formulář své FVE instalace.
  2. V poli Zdroj dat zvolte GoodWe SEMS API.
  3. Zadejte e-mail a heslo ke svému účtu na semsportal.com (pole E-mail a Heslo k SEMS účtu ve formuláři).
  4. Zadejte Plant ID své elektrárny — najdete ho v URL na stránce vaší elektrárny: semsportal.com/PowerStation/PowerStatusSnMin/xxxxxxxx-xxxx-...
  5. Uložte formulář. Platforma začne stahovat data automaticky při příštím cronu.
Frekvence stahování: Data jsou stahována každých 15 minut (konfigurovatelné). Platforma automaticky ukládá aktuální výkon a denní výrobu.

Kde najdu Plant ID?

Přihlaste se na semsportal.com, otevřete svou elektrárnu a zkopírujte ID z URL adresy:

https://www.semsportal.com/PowerStation/PowerStatusSnMin/12345678-abcd-1234-efgh-000000000000

7. Řešení chyb

Dostávám HTTP 401
Bearer token: Zkontrolujte, že token odpovídá přesně tomu v detailu instalace (64 znaků). Token je vázán na konkrétní instalaci — nelze ho použít pro jiné ID.
Basic Auth: Zkontrolujte přihlašovací údaje a ověřte, že váš účet má oprávnění „Přidávat data OZE přes API".
Dostávám HTTP 403
OZE instalace s daným ID patří jinému uživateli, nebo je deaktivovaná. Ověřte ID instalace na stránce seznam instalací.
Dostávám HTTP 400 „Neplatný JSON"
Ujistěte se, že odesíláte hlavičku Content-Type: application/json a tělo je validní JSON (čísla bez uvozovek, čárka jako desetinný oddělovač – ne středník).
Data se odesílají, ale nezobrazují na webu
Data se ukládají okamžitě. Zkontrolujte detail své instalace. Pokud tam data nejsou, zkontrolujte HTTP kód odpovědi — měl by být 201.
Chci odesílat data každých 5 minut — je to v pořádku?
Ano, platforma to zvládne. Doporučujeme však alespoň 5minutový interval, aby nedocházelo k zatížení serveru. Pro GoodWe SEMS API platí jejich vlastní limity.

Potřebujete pomoc? Napište nám přes kontaktní formulář nebo otevřete detail vaší OZE instalace, kde najdete ukázku API volání pro vaše konkrétní ID.