SpotLogic je usluga u oblaku koja izračunava plan punjenja i pražnjenja baterije fotonaponskog sustava prema spot tržištu električne energije. To je usluga izračuna, a ne izvor podataka: centralna jedinica šalje telemetriju baterije zajedno s predviđanjem proizvodnje solarne elektrane, predviđanjem potrošnje kuće te cijenama preuzimanja iz mreže i predaje u mrežu, a SpotLogic odgovara naredbom za trenutačni vremenski interval. Ovaj predložak povezuje TapHome s API-jem usluge SpotLogic preko HTTPS-a (spotlogic.cz, port 443) pomoću Packet Parser HTTP modula. Predložak naredbu čita, a telemetriju šalje; solarnim izmjenjivačem (inverterom) ne upravlja, nego se naredba s izmjenjivačem povezuje vlastitim smart rules instalatera.
Ništa se ne spaja kabelima. Puštanje usluge u rad znači aktivirati SpotLogic za lokaciju, prikupiti parametre baterije i mreže, centralnoj jedinici omogućiti odlazni pristup internetu i pripremiti serije prognoza i cijena.
SpotLogic u svakom slanju telemetrije traži serije prognoza i cijena (proizvodnja solarne elektrane i potrošnja kuće za danas i sutra, cijene preuzimanja i predaje). Ovaj predložak ih ne može sam popuniti, vidi Serije prognoza i cijena. Dok nisu popunjene, SpotLogic odbija telemetriju s HTTP 422, ne izračunava plan, a naredba ostaje na No plan.
Konfiguracija
1. Aktivirajte SpotLogic i sačuvajte pristupne podatke
SpotLogic pri aktivaciji uređaja e-poštom šalje PLC ID i pristupni token. Token je tajan, vezan uz točno jedan PLC ID i vrijedi tijekom razdoblja pretplate. Oba se prenose samo u nizu upita (query string) svakog zahtjeva (?plc_id=…&token=…), kako propisuje ugovor sučelja SpotLogic, a nikad u tijelu zahtjeva.
Token ne stavljajte u zajedničke dokumente ni u javne repozitorije. Pogrešan par PLC ID i token, nevažeći token i istekla pretplata završavaju s HTTP 401, a SpotLogic namjerno ne kaže o kojem se od tri slučaja radi.
2. Prikupite parametre baterije i mreže
SpotLogic planira samo s brojevima koje primi u telemetriji. Prije uvoza potražite ih u dokumentaciji izmjenjivača i baterije te u ugovoru o priključenju na mrežu:
| Vrijednost | Odakle dolazi | Jedinica |
|---|---|---|
| Kapacitet baterije | tehnički list baterije; mora biti veći od 0 | kWh |
| Najveća snaga baterije | jedna vrijednost za punjenje i pražnjenje | kW |
| Najveća snaga preuzimanja iz mreže | veličina glavnog prekidača; 0 znači da lokacija nikad ne preuzima iz mreže | kW |
| Najveća snaga predaje u mrežu | ograničenje predaje priključka na mrežu; 0 znači da lokacija nikad ne predaje u mrežu | kW |
| Tvrda donja granica baterije | najniže stanje napunjenosti koje dopušta proizvođač izmjenjivača, zadano 10 | % |
| Rezerva baterije | rezerva iz koje plan nikad ne prodaje u mrežu (na primjer za nepredvidivu potrošnju), zadano 10 | % |
U sustavu TapHome mora biti dostupno i trenutačno stanje napunjenosti baterije, obično iz vlastite integracije izmjenjivača, kako bi ga smart rule mogao upisati u ovaj predložak (vidi Slanje telemetrije niže).
3. Mreža i sat centralne jedinice
- Centralnoj jedinici potreban je odlazni pristup internetu preko HTTPS-a prema
spotlogic.czna portu 443. SpotLogic se ne spaja natrag na centralnu jedinicu: serije prognoza i cijena putuju u tijelu slanja telemetrije, pa nije potrebno otvarati nijedan dolazni port. - Telemetrija nosi vrijeme slanja prema satu centralne jedinice, a SpotLogic iz njega gradi vremenski prozor plana. Odstupanje od nekoliko minuta ne smeta; odstupanje od nekoliko sati pomiče cijeli plan u pogrešne intervale. Održavajte točan sat centralne jedinice.
- Vremenska zona (IANA naziv, na primjer
Europe/Prague) određuje gdje završava „danas” i počinje „sutra”. Unesite zonu lokacije.
4. Parametri uvoza
Predložak se uvozi u sučelje Packet Parser u aplikaciji TapHome, a pri uvozu se popunjavaju sljedeći parametri:
| Parametar | Značenje | Jedinica |
|---|---|---|
| PLC ID, access token | iz e-pošte o aktivaciji | — |
| Time zone | IANA naziv, zadano Europe/Prague; iz nje proizlaze granice dana u planu | — |
| Battery capacity | mora biti veći od 0 | kWh |
| Battery max power | jedna vrijednost za punjenje i pražnjenje | kW |
| Max grid import / export power | 0 znači da lokacija nikad ne preuzima iz mreže / nikad ne predaje u mrežu | kW |
| Max state of charge | SpotLogic ga samo bilježi, trenutačni planer ga ne provodi | % |
| Hard battery floor | donja granica od proizvođača izmjenjivača, zadano 10 | % |
Brojevi se upisuju s decimalnom točkom (zarez se pretvara). PLC ID i token spremaju se u varijable modula PlcId i Token. Sve vrijednosti i nakon uvoza ostaju promjenjive kao varijable modula.
5. Provjera pristupnih podataka
Interaktivna API dokumentacija usluge SpotLogic (na spotlogic.cz pod /docs) ima dijalog Authorize za PLC ID i token, a njezin primjer telemetrije za TapHome je potpun: s važećim pristupnim podacima SpotLogic ga prihvaća s HTTP 202. Prije toga vrijeme slanja (TimeStampUnix) postavite na trenutačno vrijeme. Prihvaćeni primjeri podataka spremaju se za plan jednako kao stvarna telemetrija, pa ova provjera dolazi prije nego što se naredba poveže s izmjenjivačem.
Odgovor HTTP 422 o nepotpunom horizontu prognoze također dokazuje da su PLC ID i token ispravni; pogrešan token daje HTTP 401.
Mogućnosti uređaja
Čitanje naredbe (svakih 20 s)
Modul svakih 20 sekundi šalje upit GET /api/v1/dispatch, a uređaji raščlanjuju odgovor:
- SpotLogic command — naredba za interval koji je u tijeku (
action_id):
| Vrijednost | Vrijednost u TapHome | Naziv u SpotLogic | Značenje |
|---|---|---|---|
| 0 | No plan | no_plan | Nema upotrebljivog plana: izmjenjivač držite u njegovom vlastitom sigurnom načinu rada |
| 1 | Self-use | self_use | Vlastita potrošnja: punjenje iz viška proizvodnje solarne elektrane, pražnjenje za pokrivanje potrošnje kuće |
| 2 | Force charge | force_charge | Punjenje baterije najvećom snagom |
| 3 | Force discharge to grid | force_discharge | Pražnjenje baterije u mrežu najvećom snagom |
| 4 | Self-use, no discharging | self_use_ChargeOnly | Vlastita potrošnja, punjenje dopušteno, pražnjenje zabranjeno |
| 5 | Self-use, no charging | self_use_DischargeOnly | Vlastita potrošnja, pražnjenje dopušteno, punjenje zabranjeno |
| 6 | Stop PV (reserved) | stopPV | Rezervirano: trenutačni planer ovu naredbu ne izdaje |
| 7 | Grid charge without PV (reserved) | ChargeMaxNoPV | Rezervirano: trenutačni planer ovu naredbu ne izdaje |
Servisni atributi prikazuju naziv naredbe i kada naredba završava (lokalno vrijeme).
- SpotLogic target state of charge — stanje napunjenosti (%) koje plan očekuje na kraju intervala. Prisilno punjenje ili pražnjenje zaustavite kad ga baterija dosegne; u načinu vlastite potrošnje ne punite iznad njega. SpotLogic dodaje da se kod
self_use_DischargeOnlybaterija ne bi smjela prazniti ispod njega. Vrijednost je rezultat plana, a ne zadana vrijednost koju treba prisilno postići, i nakon što je kuća potrošila rezervu privremeno može biti niža od rezerve baterije. - SpotLogic next command — naredba sljedećeg intervala, s vremenom početka kao servisnim atributom.
- SpotLogic plan age — starost posluženog plana u sekundama. Može pokretati rezervni smart rule: kad znatno nadmaši interval ponovnog izračuna, plan se više ne izračunava ponovno.
Odgovor HTTP 404 no_plan nije pogreška: naredba je 0, a uređaj prikazuje informativnu poruku. SpotLogic traži da se u tom stanju prijeđe na vlastiti sigurni način rada izmjenjivača i da se posljednja poznata naredba nikad ne ponavlja iz memorije. HTTP 401 (pogrešan PLC ID ili token, istekla pretplata) postavlja pogrešku na uređajima i na modulu; SpotLogic traži da se takvi pozivi ne ponavljaju, pa ispravite pristupne podatke.
Slanje telemetrije (otprilike svake 2 minute)
Modul šalje POST /api/v1/optimize s PLCtype: "taphome" najviše svake 2 minute. Šalje vrijeme slanja, vremensku zonu, parametre baterije i mreže te dvije vrijednosti iz uređaja:
- Battery state of charge (input) — pomoću smart rule upišite trenutačno stanje napunjenosti 0–100 % iz izmjenjivača (kad predložak izmjenjivača daje 0–1, pomnožite sa 100). Vrijednost se zaokružuje na cijeli postotak jer SpotLogic odbija decimalne vrijednosti. Dok uređaj nema vrijednost, ništa se ne šalje, a modul prikazuje upozorenje.
- Battery reserve for SpotLogic — rezerva
SOCmin, zadano 10 %: razina iz koje plan nikad ne prodaje u mrežu.
Servisni atributi modula prikazuju rezultat posljednjeg slanja, interval ponovnog izračuna koji javlja SpotLogic (zadano 900 s), kada je plan izračunat, izvođenje plana i verziju API-ja. Odbijeno slanje (HTTP 422) je pogreška modula s porukom koju je vratio SpotLogic. Odgovor na slanje nikad ne sadrži plan: SpotLogic ga izračunava u pozadini, a modul ga preuzima pri sljedećem čitanju naredbe.
Serije prognoza i cijena
SpotLogic u tijelu očekuje šest serija, svaku kao parove [unix_ts, value]:
| Varijabla modula | Sadržaj | Ugovor sučelja |
|---|---|---|
PvForecastTod, PvForecastTom | proizvodnja solarne elektrane danas / sutra, kWh po satu | po satu, bez praznina, od trenutačnog sata do kraja sutrašnjeg dana |
LoadForecastTod, LoadForecastTom | potrošnja kuće danas / sutra, kWh po satu | isto |
PriceImp, PriceExp | cijena preuzimanja / predaje, CZK/kWh | stalan korak (po satu ili 15 minuta), dovoljan je današnji dan, negativne cijene su dopuštene |
Varijable drže serije kao JSON tekst, na primjer [[1788645600,0.0],[1788649200,0.42]], i umeću se u tijelo nepromijenjene; zadana vrijednost [] je prazna serija. Integracija sama po sebi radi; ono što joj treba su podaci. TapHome zasad ne može dijeliti jedan JSON tekst između skripti, a skripta u smart rule ne može slati HTTP zahtjeve. Šest serija, zajedno oko 500 vrijednosti, zato se mora prikupiti iz drugih skripti (na primjer iz predloška prognoze ili spot cijena) i predati ovom modulu preko stotina pomoćnih uređaja ili izraditi u samoj skripti za čitanje modula. Integracija postaje stvarno praktična tek kad TapHome doda tekstualnu varijablu zajedničku svim skriptama (pogledajte ideju Tekstualna varijabla i HTTP iz skripti smart rules). Do tada popunite šest varijabli i predložak radi bez izmjena. Skripta to objašnjava u komentaru na svom početku i na mjestu gdje se serije umeću.
Odakle dolaze podaci, odlučuje instalater; SpotLogic navodi ove tipične izvore:
- Proizvodnja solarne elektrane — usluga predviđanja proizvodnje solarne elektrane kojoj se zadaju lokacija, orijentacija i nagib panela te instalirana snaga, ili oblak proizvođača izmjenjivača.
- Potrošnja kuće — vlastita povijest lokacije: za početak je dovoljna satna potrošnja uprosječena po satu u danu i vrsti dana (radni dan, vikend, praznik).
- Cijene — spot cijena preračunata prema ugovoru o opskrbi (preuzimanje, na primjer spot plus marža) i prema ugovoru o otkupu viška energije (predaja).
Dan s promjenom ljetnog računanja vremena ima 23 ili 25 sati, pa potpuna serija proizvodnje ili potrošnje ima 47, 48 ili 49 vrijednosti. Uzorci stariji od jednog sata prije trenutačnog sata odrezuju se, kao i uzorci nakon kraja sutrašnjeg dana; serija koja završava prije kraja sutrašnjeg dana se odbija.
Rješavanje problema
| Simptom | Uzrok i rješenje |
|---|---|
| Naredba ostaje na No plan | Plan još nije izračunat ili se telemetrija odbija. Provjerite pogrešku modula i servisni atribut Last telemetry upload. Ni plan stariji od 60 minuta se ne poslužuje. Nakon prvog prihvaćenog slanja plan može potrajati, najmanje jedan interval ponovnog izračuna. |
| Pogreška modula HTTP 422 | Telemetrija krši podatkovni ugovor usluge SpotLogic; poruka kaže koji dio. Najčešće nedostaju serije prognoza ili cijena ili ne pokrivaju razdoblje do kraja sutrašnjeg dana. |
| Pogreška HTTP 401 | PLC ID i token se ne podudaraju ili je pretplata istekla. Ispravite varijable modula PlcId i Token. |
| Upozorenje „Telemetry not sent” | Stanje napunjenosti još nije upisano ili je neki parametar baterije ili mreže prazan. |
| Starost plana stalno raste | Nova telemetrija ne stiže do usluge SpotLogic ili njezini izvori podataka ne rade; posljednji važeći plan ostaje na snazi dok ne bude star 60 minuta. |
| Pogreška HTTP 500 ili 502 | Pogreška poslužitelja ili izvora podataka na strani usluge SpotLogic; posljednji važeći plan ostaje na snazi. SpotLogic preporučuje ponavljanje obaju zahtjeva sa sve duljim razmacima; modul jednostavno ponavlja oba zahtjeva pri sljedećem upitu. |
| Plan upravlja u pogrešnim satima | Sat centralne jedinice ili vremenska zona nisu ispravni: prozor plana gradi se iz vremena slanja i deklarirane zone. |