SpotLogic je cloudová služba, ktorá počíta plán nabíjania a vybíjania batérie fotovoltického systému podľa spotového trhu s elektrinou. Je to výpočtová služba, nie zdroj dát: riadiaca jednotka posiela telemetriu batérie spolu s predikciou solárnych ziskov, predikciou spotreby domu a cenami za odber a dodávku elektriny a SpotLogic odpovedá povelom pre aktuálny časový úsek. Táto šablóna pripája TapHome k SpotLogic API cez HTTPS (spotlogic.cz, port 443) pomocou modulu Packet Parser HTTP. Povel číta a telemetriu odosiela; solárny invertor neovláda — povel sa so solárnym invertorom prepojí vlastnými smart rules inštalatéra.
Nič sa nezapája. Sprevádzkovanie služby znamená aktivovať SpotLogic pre danú inštaláciu, zistiť parametre batérie a siete, zabezpečiť riadiacej jednotke odchádzajúci prístup na internet a pripraviť časové rady predikcií a cien.
SpotLogic potrebuje v každom odoslaní telemetrie časové rady predikcií a cien (predikcia solárnych ziskov a spotreby domu na dnes a zajtra, ceny za odber a dodávku). Táto šablóna ich sama vyplniť nevie — pozrite Časové rady predikcií a cien. Kým nie sú vyplnené, SpotLogic telemetriu odmieta s HTTP 422, plán nepočíta a povel ostáva na No plan.
Konfigurácia
1. Aktivujte SpotLogic a uschovajte prístupové údaje
SpotLogic pri aktivácii zariadenia pošle e-mailom PLC ID a prístupový token. Token je tajný, viazaný na práve jedno PLC ID a platný počas obdobia predplatného. Obe hodnoty sa prenášajú len v reťazci dopytu každej požiadavky (?plc_id=…&token=…), ako to vyžaduje kontrakt SpotLogic — nikdy v tele požiadavky.
Token nedávajte do zdieľaných dokumentov ani do verejných repozitárov. Nesprávna dvojica PLC ID a tokenu, neplatný token aj vypršané predplatné končia rovnako s HTTP 401 a SpotLogic zámerne neprezradí, o ktorý z troch prípadov išlo.
2. Zistite parametre batérie a siete
SpotLogic plánuje len s číslami, ktoré dostane v telemetrii. Pred importom ich vyhľadajte v dokumentácii solárneho invertora a batérie a v zmluve o pripojení k distribučnej sústave:
| Hodnota | Odkiaľ ju zistiť | Jednotka |
|---|---|---|
| Kapacita batérie | katalógový list batérie; musí byť väčšia ako 0 | kWh |
| Maximálny výkon batérie | jedna hodnota pre nabíjanie aj vybíjanie | kW |
| Maximálny výkon odberu zo siete | veľkosť hlavného ističa; 0 znamená, že inštalácia nikdy neodoberá zo siete | kW |
| Maximálny výkon dodávky do siete | limit dodávky podľa pripojenia k sieti; 0 znamená, že inštalácia nikdy nedodáva do siete | kW |
| Pevné minimum batérie | najnižší stav nabitia povolený výrobcom solárneho invertora, predvolene 10 | % |
| Rezerva batérie | rezerva, z ktorej plán nikdy nepredáva do siete (napríklad pre nepredvídateľnú spotrebu), predvolene 10 | % |
V TapHome musí byť dostupný aj aktuálny stav nabitia batérie, zvyčajne z vlastnej integrácie solárneho invertora, aby ho bolo možné cez smart rule zapisovať do tejto šablóny (pozrite nižšie Odosielanie telemetrie).
3. Sieť a hodiny riadiacej jednotky
- Riadiaca jednotka potrebuje odchádzajúci prístup na internet cez HTTPS na
spotlogic.cz, port 443. SpotLogic sa k riadiacej jednotke spätne nepripája — časové rady predikcií a cien putujú v tele odosielanej telemetrie, takže netreba otvárať žiadny prichádzajúci port. - Telemetria nesie čas odoslania z hodín riadiacej jednotky a SpotLogic z neho zostavuje okno plánu. Odchýlka niekoľkých minút neškodí; odchýlka niekoľkých hodín posunie celý plán do nesprávnych časových úsekov. Udržiavajte hodiny riadiacej jednotky presné.
- Časové pásmo (názov IANA, napríklad
Europe/Prague) určuje, kde končí „dnes“ a začína „zajtra“. Zadajte časové pásmo miesta inštalácie.
4. Parametre importu
Šablóna sa importuje do rozhrania Packet Parser v aplikácii TapHome a pri importe sa vyplnia tieto parametre:
| Parameter | Význam | Jednotka |
|---|---|---|
| PLC ID, access token | z aktivačného e-mailu | — |
| Time zone | názov IANA, predvolene Europe/Prague; určuje hranice dní plánu | — |
| Battery capacity | musí byť väčšia ako 0 | kWh |
| Battery max power | jedna hodnota pre nabíjanie aj vybíjanie | kW |
| Max grid import / export power | 0 znamená, že inštalácia nikdy neodoberá / nikdy nedodáva | kW |
| Max state of charge | SpotLogic ho len zaznamenáva, súčasný plánovač ho nevynucuje | % |
| Hard battery floor | minimum od výrobcu solárneho invertora, predvolene 10 | % |
Čísla sa píšu s desatinnou bodkou (čiarka sa prevedie). PLC ID a token sa uložia do premenných modulu PlcId a Token. Všetky hodnoty sa dajú neskôr upraviť ako premenné modulu.
5. Overenie prístupových údajov
Interaktívna dokumentácia API služby SpotLogic (na spotlogic.cz pod /docs) má dialóg Authorize na zadanie PLC ID a tokenu a jej príklad telemetrie pre TapHome je úplný: s platnými prístupovými údajmi ho SpotLogic prijme s HTTP 202. Najprv v ňom aktualizujte čas odoslania (TimeStampUnix) na aktuálny čas. Prijaté vzorové dáta sa pre plán ukladajú rovnako ako skutočná telemetria, preto toto overenie patrí pred prepojenie povelu so solárnym invertorom.
Odpoveď HTTP 422 o neúplnom horizonte predikcie tiež dokazuje, že PLC ID a token sú správne — nesprávny token vráti HTTP 401.
Možnosti zariadenia
Čítanie povelu (každých 20 s)
Modul každých 20 sekúnd volá GET /api/v1/dispatch a zariadenia odpoveď spracujú:
- SpotLogic command — povel pre prebiehajúci časový úsek (
action_id):
| Hodnota | Hodnota v TapHome | Názov v SpotLogic | Význam |
|---|---|---|---|
| 0 | No plan | no_plan | Žiadny použiteľný plán — nechajte solárny invertor v jeho vlastnom bezpečnom režime |
| 1 | Self-use | self_use | Vlastná spotreba: nabíjanie z prebytku FV, vybíjanie na pokrytie spotreby domu |
| 2 | Force charge | force_charge | Nabíjanie batérie maximálnym výkonom |
| 3 | Force discharge to grid | force_discharge | Vybíjanie batérie do siete maximálnym výkonom |
| 4 | Self-use, no discharging | self_use_ChargeOnly | Vlastná spotreba, nabíjanie povolené, vybíjanie zakázané |
| 5 | Self-use, no charging | self_use_DischargeOnly | Vlastná spotreba, vybíjanie povolené, nabíjanie zakázané |
| 6 | Stop PV (reserved) | stopPV | Rezervované — súčasný plánovač ho nevydáva |
| 7 | Grid charge without PV (reserved) | ChargeMaxNoPV | Rezervované — súčasný plánovač ho nevydáva |
Servisné atribúty zobrazujú názov povelu a čas, kedy povel končí (miestny čas).
- SpotLogic target state of charge — stav nabitia (%), ktorý plán očakáva na konci časového úseku. Keď ho batéria dosiahne, ukončite vynútené nabíjanie alebo vybíjanie; pri vlastnej spotrebe nad neho nenabíjajte. SpotLogic dopĺňa, že pri
self_use_DischargeOnlysa batéria nemá vybiť pod túto hodnotu. Hodnota je výsledkom plánu, nie žiadaná hodnota, ktorú treba vynútiť, a potom, čo dom spotreboval rezervu, môže byť dočasne nižšia ako rezerva batérie. - SpotLogic next command — povel nasledujúceho časového úseku, čas jeho začiatku je v servisnom atribúte.
- SpotLogic plan age — vek poskytnutého plánu v sekundách. Môže spúšťať záložný smart rule: keď výrazne prerastie interval prepočtu, plán sa neprepočítava.
Odpoveď HTTP 404 no_plan nie je chyba: povel je 0 a zariadenie zobrazí informačnú správu. SpotLogic v tomto stave žiada prepnúť solárny invertor do jeho vlastného bezpečného režimu a nikdy neopakovať posledný známy povel z pamäte. HTTP 401 (nesprávne PLC ID alebo token, vypršané predplatné) nastaví chybu na zariadeniach aj na module; SpotLogic žiada také volania neopakovať, preto opravte prístupové údaje.
Odosielanie telemetrie (približne každé 2 minúty)
Modul posiela POST /api/v1/optimize s PLCtype: "taphome" najviac raz za 2 minúty. Posiela čas odoslania, časové pásmo, parametre batérie a siete a dve hodnoty zo zariadení:
- Battery state of charge (input) — zapisujte doň cez smart rule aktuálny stav nabitia 0–100 % zo solárneho invertora (keď šablóna solárneho invertora dáva 0–1, vynásobte hodnotu 100). Zaokrúhľuje sa na celé percento, pretože SpotLogic odmieta desatinné hodnoty. Kým nemá hodnotu, nič sa neposiela a modul zobrazuje varovanie.
- Battery reserve for SpotLogic — rezerva
SOCmin, predvolene 10 %: úroveň, z ktorej plán nikdy nepredáva do siete.
Servisné atribúty modulu zobrazujú výsledok posledného odoslania, interval prepočtu hlásený službou SpotLogic (predvolene 900 s), čas výpočtu plánu, beh plánu a verziu API. Odmietnuté odoslanie (HTTP 422) je chyba modulu so správou, ktorú vrátil SpotLogic. Odpoveď na odoslanie nikdy neobsahuje plán — SpotLogic ho počíta na pozadí a modul si ho vyzdvihne pri ďalšom čítaní povelu.
Časové rady predikcií a cien
SpotLogic očakáva v tele šesť časových radov, každý ako dvojice [unix_ts, value]:
| Premenná modulu | Obsah | Kontrakt |
|---|---|---|
PvForecastTod, PvForecastTom | výroba FV dnes / zajtra, kWh za hodinu | hodinový, bez medzier, od aktuálnej hodiny do konca zajtrajška |
LoadForecastTod, LoadForecastTom | spotreba domu dnes / zajtra, kWh za hodinu | rovnako |
PriceImp, PriceExp | cena za odber / dodávku, CZK/kWh | konštantný krok (hodinový alebo 15 minút), stačí dnešok, záporné ceny sú povolené |
Premenné držia časové rady ako text JSON, napríklad [[1788645600,0.0],[1788649200,0.42]], a vkladajú sa do tela bez zmeny; predvolená hodnota [] je prázdny rad. Samotná integrácia funguje, potrebuje len dáta. TapHome zatiaľ nevie zdieľať jeden text JSON medzi skriptami a skript smart rule nevie posielať požiadavky HTTP. Šesť časových radov — spolu asi 500 hodnôt — preto treba zozbierať z iných skriptov (napríklad zo šablóny predikcie alebo spotových cien) a odovzdať tomuto modulu cez stovky pomocných zariadení, alebo ich zostaviť priamo v skripte na čítanie modulu. Integrácia bude naozaj praktická, keď TapHome pridá textovú premennú zdieľanú medzi skriptami — pozrite nápad Textová premenná a HTTP zo skriptov smart rules. Dovtedy vyplňte šesť premenných a šablóna funguje bez ďalších úprav. Skript to vysvetľuje v komentári na svojom začiatku a na mieste, kde sa časové rady vkladajú.
Odkiaľ dáta pochádzajú, je na inštalatérovi; SpotLogic uvádza tieto typické zdroje:
- Výroba FV — služba predikcie solárnych ziskov, do ktorej sa zadá poloha, orientácia a sklon panelov a inštalovaný výkon, alebo cloud výrobcu solárneho invertora.
- Spotreba domu — vlastná história inštalácie: na začiatok stačí hodinová spotreba spriemerovaná podľa hodiny dňa a typu dňa (pracovný deň, víkend, sviatok).
- Ceny — spotová cena prepočítaná podľa zmluvy o dodávke (odber, napríklad spot plus marža) a podľa zmluvy o výkupe prebytkov (dodávka).
Deň so zmenou letného času má 23 alebo 25 hodín, takže úplný rad výroby FV alebo spotreby má 47, 48 alebo 49 hodnôt. Vzorky staršie ako jedna hodina pred aktuálnou hodinou sa orežú, rovnako ako vzorky za koncom zajtrajška; rad, ktorý končí pred koncom zajtrajška, sa odmietne.
Riešenie problémov
| Príznak | Príčina a riešenie |
|---|---|
| Povel ostáva na No plan | Plán ešte nebol vypočítaný alebo je telemetria odmietaná. Skontrolujte chybu modulu a servisný atribút Last telemetry upload. Plán starší ako 60 minút sa tiež neposkytuje. Po prvom prijatom odoslaní môže výpočet plánu chvíľu trvať — najmenej jeden interval prepočtu. |
| Chyba modulu HTTP 422 | Telemetria porušuje dátový kontrakt SpotLogic; správa uvádza, ktorú časť. Najčastejšie chýbajú časové rady predikcií alebo cien, alebo nepokrývajú obdobie do konca zajtrajška. |
| Chyba HTTP 401 | PLC ID a token k sebe nepatria alebo vypršalo predplatné. Opravte premenné modulu PlcId a Token. |
| Varovanie “Telemetry not sent” | Stav nabitia ešte nebol zapísaný alebo je prázdny niektorý parameter batérie či siete. |
| Vek plánu stále rastie | Nová telemetria sa do SpotLogic nedostáva alebo zlyhávajú jeho zdroje dát; posledný platný plán zostáva v platnosti, kým nemá 60 minút. |
| Chyba HTTP 500 alebo 502 | Chyba servera alebo zlyhávajúci zdroj dát na strane SpotLogic; posledný platný plán zostáva v platnosti. SpotLogic odporúča obe opakovať s narastajúcim odstupom; modul jednoducho zopakuje obe požiadavky pri ďalšom dopyte. |
| Plán riadi nesprávne hodiny | Hodiny riadiacej jednotky alebo časové pásmo sú nesprávne — okno plánu sa zostavuje z času odoslania a deklarovaného pásma. |