SpotLogic je cloudová služba, která počítá plán nabíjení a vybíjení baterie fotovoltaické elektrárny podle spotového trhu s elektřinou. Je to výpočetní služba, ne zdroj dat: řídicí jednotka posílá telemetrii baterie spolu s predikcí solárních zisků, predikcí spotřeby domu a cenami za odběr a dodávku elektřiny a SpotLogic odpovídá povelem pro aktuální časový úsek. Tato šablona připojuje TapHome k SpotLogic API přes HTTPS (spotlogic.cz, port 443) pomocí modulu Packet Parser HTTP. Povel čte a telemetrii odesílá; střídač neovládá — povel se se střídačem propojí vlastními smart rules instalatéra.
Nic se nezapojuje. Zprovoznění služby znamená aktivovat SpotLogic pro danou instalaci, zjistit parametry baterie a sítě, zajistit řídicí jednotce odchozí přístup na internet a připravit časové řady predikcí a cen.
SpotLogic potřebuje v každém odeslání telemetrie časové řady predikcí a cen (predikce solárních zisků a spotřeby domu na dnešek a zítřek, ceny za odběr a dodávku). Tato šablona je sama vyplnit neumí — viz Časové řady predikcí a cen. Dokud nejsou vyplněné, SpotLogic telemetrii odmítá s HTTP 422, plán nepočítá a povel zůstává na No plan.
Konfigurace
1. Aktivujte SpotLogic a uschovejte přístupové údaje
SpotLogic při aktivaci zařízení pošle e-mailem PLC ID a přístupový token. Token je tajný, vázaný na právě jedno PLC ID a platný po dobu předplatného. Obě hodnoty se přenášejí jen v řetězci dotazu každého požadavku (?plc_id=…&token=…), jak to vyžaduje kontrakt SpotLogic — nikdy v těle požadavku.
Token nedávejte do sdílených dokumentů ani do veřejných repozitářů. Nesprávná dvojice PLC ID a tokenu, neplatný token i vypršelé předplatné končí stejně s HTTP 401 a SpotLogic záměrně neprozradí, o který ze tří případů šlo.
2. Zjistěte parametry baterie a sítě
SpotLogic plánuje jen s čísly, která dostane v telemetrii. Před importem je vyhledejte v dokumentaci střídače a baterie a ve smlouvě o připojení k distribuční soustavě:
| Hodnota | Odkud ji zjistit | Jednotka |
|---|---|---|
| Kapacita baterie | katalogový list baterie; musí být větší než 0 | kWh |
| Maximální výkon baterie | jedna hodnota pro nabíjení i vybíjení | kW |
| Maximální výkon odběru ze sítě | velikost hlavního jističe; 0 znamená, že instalace nikdy neodebírá ze sítě | kW |
| Maximální výkon dodávky do sítě | limit dodávky podle připojení k síti; 0 znamená, že instalace nikdy nedodává do sítě | kW |
| Pevné minimum baterie | nejnižší stav nabití povolený výrobcem střídače, výchozí 10 | % |
| Rezerva baterie | rezerva, ze které plán nikdy neprodává do sítě (například pro nepředvídatelnou spotřebu), výchozí 10 | % |
V TapHome musí být dostupný i aktuální stav nabití baterie, obvykle z vlastní integrace střídače, aby ho bylo možné přes smart rule zapisovat do této šablony (viz níže Odesílání telemetrie).
3. Síť a hodiny řídicí jednotky
- Řídicí jednotka potřebuje odchozí přístup na internet přes HTTPS na
spotlogic.cz, port 443. SpotLogic se k řídicí jednotce zpětně nepřipojuje — časové řady predikcí a cen putují v těle odesílané telemetrie, takže není třeba otevírat žádný příchozí port. - Telemetrie nese čas odeslání z hodin řídicí jednotky a SpotLogic z něj sestavuje okno plánu. Odchylka několika minut nevadí; odchylka několika hodin posune celý plán do nesprávných časových úseků. Udržujte hodiny řídicí jednotky přesné.
- Časové pásmo (název IANA, například
Europe/Prague) určuje, kde končí „dnes“ a začíná „zítra“. Zadejte časové pásmo místa instalace.
4. Parametry importu
Šablona se importuje do rozhraní Packet Parser v aplikaci TapHome a při importu se vyplní tyto parametry:
| Parametr | Význam | Jednotka |
|---|---|---|
| PLC ID, access token | z aktivačního e-mailu | — |
| Time zone | název IANA, výchozí Europe/Prague; určuje hranice dnů plánu | — |
| Battery capacity | musí být větší než 0 | kWh |
| Battery max power | jedna hodnota pro nabíjení i vybíjení | kW |
| Max grid import / export power | 0 znamená, že instalace nikdy neodebírá / nikdy nedodává | kW |
| Max state of charge | SpotLogic ho jen zaznamenává, současný plánovač ho nevynucuje | % |
| Hard battery floor | minimum od výrobce střídače, výchozí 10 | % |
Čísla se píší s desetinnou tečkou (čárka se převede). PLC ID a token se uloží do proměnných modulu PlcId a Token. Všechny hodnoty lze později upravit jako proměnné modulu.
5. Ověření přístupových údajů
Interaktivní dokumentace API služby SpotLogic (na spotlogic.cz pod /docs) má dialog Authorize pro zadání PLC ID a tokenu a její příklad telemetrie pro TapHome je úplný: s platnými přístupovými údaji ho SpotLogic přijme s HTTP 202. Nejprve v něm aktualizujte čas odeslání (TimeStampUnix) na aktuální čas. Přijatá vzorová data se pro plán ukládají stejně jako skutečná telemetrie, proto toto ověření patří před propojení povelu se střídačem.
Odpověď HTTP 422 o neúplném horizontu predikce také dokazuje, že PLC ID a token jsou správné — nesprávný token vrátí HTTP 401.
Možnosti zařízení
Čtení povelu (každých 20 s)
Modul každých 20 sekund volá GET /api/v1/dispatch a zařízení odpověď zpracují:
- SpotLogic command — povel pro probíhající časový úsek (
action_id):
| Hodnota | Hodnota v TapHome | Název v SpotLogic | Význam |
|---|---|---|---|
| 0 | No plan | no_plan | Žádný použitelný plán — nechte střídač v jeho vlastním bezpečném režimu |
| 1 | Self-use | self_use | Vlastní spotřeba: nabíjení z přebytku FV, vybíjení na pokrytí spotřeby domu |
| 2 | Force charge | force_charge | Nabíjení baterie maximálním výkonem |
| 3 | Force discharge to grid | force_discharge | Vybíjení baterie do sítě maximálním výkonem |
| 4 | Self-use, no discharging | self_use_ChargeOnly | Vlastní spotřeba, nabíjení povoleno, vybíjení zakázáno |
| 5 | Self-use, no charging | self_use_DischargeOnly | Vlastní spotřeba, vybíjení povoleno, nabíjení zakázáno |
| 6 | Stop PV (reserved) | stopPV | Rezervováno — současný plánovač ho nevydává |
| 7 | Grid charge without PV (reserved) | ChargeMaxNoPV | Rezervováno — současný plánovač ho nevydává |
Servisní atributy zobrazují název povelu a čas, kdy povel končí (místní čas).
- SpotLogic target state of charge — stav nabití (%), který plán očekává na konci časového úseku. Když ho baterie dosáhne, ukončete vynucené nabíjení nebo vybíjení; při vlastní spotřebě nad něj nenabíjejte. SpotLogic dodává, že při
self_use_DischargeOnlyse baterie nemá vybít pod tuto hodnotu. Hodnota je výsledkem plánu, ne žádaná hodnota, kterou je třeba vynutit, a poté, co dům spotřeboval rezervu, může být dočasně nižší než rezerva baterie. - SpotLogic next command — povel následujícího časového úseku, čas jeho začátku je v servisním atributu.
- SpotLogic plan age — stáří poskytnutého plánu v sekundách. Může spouštět záložní smart rule: když výrazně přeroste interval přepočtu, plán se nepřepočítává.
Odpověď HTTP 404 no_plan není chyba: povel je 0 a zařízení zobrazí informační zprávu. SpotLogic v tomto stavu žádá přepnout střídač do jeho vlastního bezpečného režimu a nikdy neopakovat poslední známý povel z paměti. HTTP 401 (nesprávné PLC ID nebo token, vypršelé předplatné) nastaví chybu na zařízeních i na modulu; SpotLogic žádá taková volání neopakovat, proto opravte přístupové údaje.
Odesílání telemetrie (přibližně každé 2 minuty)
Modul posílá POST /api/v1/optimize s PLCtype: "taphome" nejvýše jednou za 2 minuty. Posílá čas odeslání, časové pásmo, parametry baterie a sítě a dvě hodnoty ze zařízení:
- Battery state of charge (input) — zapisujte do něj přes smart rule aktuální stav nabití 0–100 % ze střídače (když šablona střídače dává 0–1, vynásobte hodnotu 100). Zaokrouhluje se na celé procento, protože SpotLogic odmítá desetinné hodnoty. Dokud nemá hodnotu, nic se neposílá a modul zobrazuje varování.
- Battery reserve for SpotLogic — rezerva
SOCmin, výchozí 10 %: úroveň, ze které plán nikdy neprodává do sítě.
Servisní atributy modulu zobrazují výsledek posledního odeslání, interval přepočtu hlášený službou SpotLogic (výchozí 900 s), čas výpočtu plánu, běh plánu a verzi API. Odmítnuté odeslání (HTTP 422) je chyba modulu se zprávou, kterou vrátil SpotLogic. Odpověď na odeslání nikdy neobsahuje plán — SpotLogic ho počítá na pozadí a modul si ho vyzvedne při dalším čtení povelu.
Časové řady predikcí a cen
SpotLogic očekává v těle šest časových řad, každou jako dvojice [unix_ts, value]:
| Proměnná modulu | Obsah | Kontrakt |
|---|---|---|
PvForecastTod, PvForecastTom | výroba FV dnes / zítra, kWh za hodinu | hodinová, bez mezer, od aktuální hodiny do konce zítřka |
LoadForecastTod, LoadForecastTom | spotřeba domu dnes / zítra, kWh za hodinu | stejně |
PriceImp, PriceExp | cena za odběr / dodávku, CZK/kWh | konstantní krok (hodinový nebo 15 minut), stačí dnešek, záporné ceny jsou povolené |
Proměnné drží časové řady jako text JSON, například [[1788645600,0.0],[1788649200,0.42]], a vkládají se do těla beze změny; výchozí hodnota [] je prázdná řada. Samotná integrace funguje, potřebuje jen data. TapHome zatím neumí sdílet jeden text JSON mezi skripty a skript smart rule neumí posílat požadavky HTTP. Šest časových řad — dohromady asi 500 hodnot — proto musí být posbírané z jiných skriptů (například ze šablony predikce nebo spotových cen) a předané tomuto modulu přes stovky pomocných zařízení, nebo sestavené přímo ve čtecím skriptu modulu. Integrace bude opravdu praktická, až TapHome přidá textovou proměnnou sdílenou mezi skripty — viz nápad Textová proměnná a HTTP ze skriptů smart rules. Do té doby vyplňte šest proměnných a šablona funguje bez dalších úprav. Skript to vysvětluje v komentáři na svém začátku a v místě, kde se časové řady vkládají.
Odkud data pocházejí, je na instalatérovi; SpotLogic uvádí tyto typické zdroje:
- Výroba FV — služba predikce solárních zisků, do které se zadá poloha, orientace a sklon panelů a instalovaný výkon, nebo cloud výrobce střídače.
- Spotřeba domu — vlastní historie instalace: pro začátek stačí hodinová spotřeba zprůměrovaná podle hodiny dne a typu dne (pracovní den, víkend, svátek).
- Ceny — spotová cena přepočtená podle smlouvy o dodávce (odběr, například spot plus marže) a podle smlouvy o výkupu přebytků (dodávka).
Den se změnou letního času má 23 nebo 25 hodin, takže úplná řada výroby FV nebo spotřeby má 47, 48 nebo 49 hodnot. Vzorky starší než jedna hodina před aktuální hodinou se oříznou, stejně jako vzorky za koncem zítřka; řada, která končí před koncem zítřka, se odmítne.
Řešení problémů
| Příznak | Příčina a řešení |
|---|---|
| Povel zůstává na No plan | Plán ještě nebyl vypočítán nebo je telemetrie odmítána. Zkontrolujte chybu modulu a servisní atribut Last telemetry upload. Plán starší než 60 minut se také neposkytuje. Po prvním přijatém odeslání může výpočet plánu chvíli trvat — nejméně jeden interval přepočtu. |
| Chyba modulu HTTP 422 | Telemetrie porušuje datový kontrakt SpotLogic; zpráva uvádí, kterou část. Nejčastěji chybí časové řady predikcí nebo cen, nebo nepokrývají období do konce zítřka. |
| Chyba HTTP 401 | PLC ID a token k sobě nepatří nebo vypršelo předplatné. Opravte proměnné modulu PlcId a Token. |
| Varování “Telemetry not sent” | Stav nabití ještě nebyl zapsán nebo je prázdný některý parametr baterie či sítě. |
| Stáří plánu stále roste | Nová telemetrie se do SpotLogic nedostává nebo selhávají jeho zdroje dat; poslední platný plán zůstává v platnosti, dokud nemá 60 minut. |
| Chyba HTTP 500 nebo 502 | Chyba serveru nebo selhávající zdroj dat na straně SpotLogic; poslední platný plán zůstává v platnosti. SpotLogic doporučuje oba opakovat s rostoucím odstupem; modul jednoduše zopakuje oba požadavky při dalším dotazu. |
| Plán řídí nesprávné hodiny | Hodiny řídicí jednotky nebo časové pásmo jsou nesprávné — okno plánu se sestavuje z času odeslání a deklarovaného pásma. |