Spot-hinta.fi - Yksinkertainen pörssiohjaus API ja sitä käyttävät automaatioskriptit

Mikki

Hyperaktiivi
Voihan tuo hiukan haitata testausta. Itse ainakin saatoin hakea tuota tiheämmin, kun testasin koodiani. Nyt hakee vain kerran vuorokaudessa.

En tiedä miten tuonne voi rajoja laittaa, mutta x hakua/tunti tai /vuorokausi kuulostaisi järkevämmältä kuin yksittäisten hakujen välinen aika.
Mitään syytä ei pitäisi olla hakea minuutin välein tai edes 10 min valmiissa systeemissä.

Mulle tuli testausvaiheessa aina välillä epäonnistunut haku. Mistä ne johtuvat?

En ole nähnyt lokeilla ainakaan kaatuneita hakuja. Mutta toki aina välillä olen päivittänyt versiota ja siitä tulee pieni katko kyllä.
Mutta tuo on hyvä pointti, että testaukseen on vähän hankala tuo kiinteä 20sec välein raja.

Voisin kyllä vilkaista jos saisin jonkun X hakua per tunti/vuorokausi rajan ennemmin. Ei siis tarkoitus tehdä mitään kireää rajaa, vaan "sanity check" (20 000 hakua on vähän paljon per vrk).
 

Nihan

Aktiivinen jäsen
Vaatii ehkä vähän logiikkaa, mutta mitä jos laittaisit vain todetut väärinkäyttäjät rajoitetulle käytölle.
 

Sukke

Aktiivinen jäsen
Voihan tuo hiukan haitata testausta. Itse ainakin saatoin hakea tuota tiheämmin, kun testasin koodiani. Nyt hakee vain kerran vuorokaudessa.

En tiedä miten tuonne voi rajoja laittaa, mutta x hakua/tunti tai /vuorokausi kuulostaisi järkevämmältä kuin yksittäisten hakujen välinen aika.

Mitään syytä ei pitäisi olla hakea minuutin välein tai edes 10 min valmiissa systeemissä.

Mulle tuli testausvaiheessa aina välillä epäonnistunut haku. Mistä ne johtuvat?

Tein myös ensimmäisiä kokeiluja tiedonhausta ja alkeellisen ohjauksen tekemisestä. Varmasti tuli joitakin hakuja lyhyehköön aikaan. Ei nuo varmaan kokonaisuudessa hirveästi vaikuta, mutta täytyy yrittää itsekin miettiä tuota testikäytäntöä uudestaan.

Tällä hetkellä ohjaan ensimmäisissä kokeilussa yhtä lamppua HAn kautta, kun ei vielä muuta ohjattava ole - eikä tosin osaamistakaan. Täytyy pikkuhiljaa tehdä tuosta vähän edistyneempi, kun tulee kaikki tutuksi.

@Mikki liikkeellä saattaa olla tosiaan kaltaisiani testaajia, joilla ei ole juurikaan kokemusta rajapinnoista tai ohjelmoinnista. Ihan perusasioissakin tulee testaamista, kun opettelee tietojen hakua ja vastauksen käsittelyä. Täällä uutena kaksi järjestelmää (Home Assistant ja Node Red) sekä ohjelmointikielet. Toivottavasti tosiaan jossain määrin on mahdollista tehdä testausta myös livenä oikeasta rajapinnasta.
 

Mikki

Hyperaktiivi
Älkää jännittäkö yhtään testienne kanssa. Lähinnä jarrua mietin tilanteeseen, että tulee hirmuinen määrä requesteja pidemmän aikaa (vahingossa tai tahalleen), puhutaan siis enemmän sadoista tuhansista requesteista, kuin sadoista tai tuhansista.

Ehkä tuo 4 sekunnin välein pollaus menisi enemmän ohjaamisella kuin teknisellä rajoituksella. Rhkäpä palauttaa satunnaisesti 429 (too many requests), jos sykli on noin tiheä pidemmän aikaa?

Ei estä käyttämistä, mutta näkyy lokeilla satunnaisina virheinä?
 

Mikki

Hyperaktiivi
Nyt on rajapinnoissa sellainen rajoitus päällä (toivottavasti toimii oikein), että per tunti sallitaan 1000 requestia yhdestä IP osoitteesta yhteen "palvelimeen". Ja 500 haun jälkeen se antaa satunnaisia "429-Too Many Requests" varoituksia.

Tuolla on muutama rinnakkainen "palvelin", jotka eivät keskenään jaa tuota laskuria. Ts. käytännössä enemmänkin hakuja voi tehdä tunnissa kuin tuhat, mutta jossain vaiheessa tulee enenevässä määrin "429"-varoituksia ja lopulta sitten stoppi. Jos havaitsette jotain ongelmia, niin kertokaa.

Päivitin asian myös dokumentaatioon: https://api.spot-hinta.fi/swagger/ui#/
 

pamppu

Vakionaama
Aika monellahan saattaa olla operaattorin tasolta natattu verkko, jolloin yhden IP:n takana voi olla tuhansia liittymiä. Ei tuo nyt varmaan ihan heti tietty tuohon tökkää…
 

Mikki

Hyperaktiivi
Ja vielä ihan jos kiinnostaa, niin rajapintoja kyllä kutsutaan jo. Päivittäiset kutsumäärät on noussut 60k luokkaan. Tuosta oikeastaan heräsinkin siihen, että joku jarru on hyvä olla. Ja porukka voisi muutenkin vähän harvemmin kutsua noita... ei ne hinnat sieltä joka sekunti vaihdu. :)

1663610853079.png


Jos tulee jotain selkeitä isoja ongelmia jonkun "NATatun" IP osoitteen kanssa, niin selvitellään sitten asiaa.
 
Viimeksi muokattu:

Mikki

Hyperaktiivi
Ihmettelit tuolla edellä, miksi Entso-E haluaa rekisteröitymisen ja sen jälkeen sertifikaatin tapaista avainta ...

Totta. Ainahan avoimessa rajapinnassa on omat haasteensa. Toki sama koskee Web-sivujakin, ei nekään suojassa ole kovin helposti.
Tuohon Azure Functionsssiin saa tarvittaessa klikattua "avaimen" päälle, jolloin query-parametrina se pitää syöttää.

Jos homma lähtee liian paljon kasvamaan, niin sitten se päälle ja vaikka tuonne Swaggeriin aluksi se koodi. Robot ei sitä heti osaa hakea. Ja jos ei auta vielä sekään, niin sitten mietitään uudestaan.

Entso-E:ssä ihmettelin lähinnä avaimen hakemista emaililla. Kun rekisteröinti sivustolle oli jo tehty ja email vahvistettu.
 

tet

Hyperaktiivi
Entso-E:ssä ihmettelin lähinnä avaimen hakemista emaililla. Kun rekisteröinti sivustolle oli jo tehty ja email vahvistettu.
Oikeastaanhan se on vielä kertaluokkaa hullumpi toteutus, jos oikein muistan. Sähköpostilla pyydetään vain omalle tunnukselle erilliset oikeudet, joilla pystyy sitten tilinhallinnan kautta generoimaan itselleen sen avaimen. :bileet:
 

kotte

Hyperaktiivi
Oikeastaanhan se on vielä kertaluokkaa hullumpi toteutus, jos oikein muistan. Sähköpostilla pyydetään vain omalle tunnukselle erilliset oikeudet, joilla pystyy sitten tilinhallinnan kautta generoimaan itselleen sen avaimen. :bileet:
Tuossa voi olla takana Euroopan valtioiden lainsäädännön erot. Kansallisten ikivanhojen sopimuslakien ja laintulkintojen keskinäinen tulo sovellettuna tietotekniikkamaailmaan toisten vastaavien kanssa on hullunmylly, jonka soveltaminen todellakin on astetta hullumpi. Varmaan tavoitellaan "perälautaa", jolla sopimattomaan käyttöön voidaan ääritilanteessa puuttua ilman pelkoa, että tätä voidaan tehokkaasti vastustaa jonkin kansallisen lainsäädännön koukeron perusteella.
 

jmaja

Hyperaktiivi
Tämän viikon ti/ke oli hyvä esimerkki siitä miten optimointi muuttui, kun ke hinnat tulivat. Koko keskiviikko olikin kalliimpi kuin ti perusteella kalliiksi luultu ti ip ja ilta. Tuossa olisi ollut hyötyä tietää jo aiemmin ke hinnat.

Ihmettelin, miksi mulla tehtiin käyttövesi ti 15-16, mutta syynä oli se, että 15 alkavalle tunnille oli uudet hinnat keskiviikolle ja niissä nuo olivat halvimmat. Fiksumpaa olisi ollut tehdä jo aiemmin, jolloin oli vielä halvempaa, mutta silloin ei tiennyt, ettei ti/ke yöllä ole halvempaa.
 

hanks

Aktiivinen jäsen
Minun tarttis kans ottaa tuo ”ennustava” spot-hintojen rankkaus käyttöön, mutta ESPeasy ei taivu JSON:in parsimiseen. Toiseen hyllyllä olevaan mikrokontrolleriin (Lolin C3 mini) ei ole vielä ESPhomea portattu, joten en voinut vielä kokeilla sitä. Pistin tilaukseen pari uutta Lolin D1 miniä, että voi testailla koskematta toimivaan ”tuotantoympäristöön”.

Tulipa viiime viikolla kohdattua tilanne että Elisan kuituyhteys lakkasi toimimasta. Ei saanut enää tunneittain luettua ”rankkeja” API:sta. Mikrokontrollerin logiikka tosin on niinpäin että tällöin ei säästellä vaan lämmitetään. Piti tehdä IVO-resetti kuitumodeemiin että tokeni.
 

Oldipoldi

Jäsen
Tässä itsellä käytössä oleva scripti Shellyn releen ohjaamiseen. Scripti päivittää sen hetkisen tunnin tiedot kahden minuutin välein ja kytkee rankin mukaan relettä päälle tai pois. Itselle nämä koodailut ei ole suurin vahvuusalue joten vinkkejä otetaan vastaan.
Sieppaa.JPG
 

Mikki

Hyperaktiivi
Koodaus ei ole aina tyylilaji jos lopputulos toimii. Yleisesti ottaen, aina kannattaa miettiä mitä virhetilanteissa tapahtuu. Esimerkiksi jos tuo "res.code" ei ole 200, niin haluatko että rele on päällä vai pois.

Useimmiten luulisin että pihi laittaa releen pois päältä, että ei vahingossa lämmitä kalliilla. Ja perheen hellasäröä pelkäävä laittaa päälle ja antaa termostaatin rajata toimintaa maksoi mitä maksoi jos kyse on vaikka käyttövesivaraajan lämmityksestä. Eli tekisin tuohon yllä olevaan koodiin ainakain "else" haaran sille, että res.code ei ole 200.

Mutta ymmärränkö muuten oikein, että tuo "Shelly.Call" itseasiassa komentaa Shellyä tekemään sen API kutsun? Vai onko tuo Shelly.call "HA":sta lähtevä kutsu suoraan tuohon spot-hinta rajapintaan?
 

Mikki

Hyperaktiivi
Tässä itsellä käytössä oleva scripti Shellyn releen ohjaamiseen. Scripti päivittää sen hetkisen tunnin tiedot kahden minuutin välein ja kytkee rankin mukaan relettä päälle tai pois. Itselle nämä koodailut ei ole suurin vahvuusalue joten vinkkejä otetaan vastaan.
katso liitettä 80527

Ja hei... sellainen vinkki että rajapinta mitä sinun tuolla koodilla pitäisi kutsua on:

Helpottaa vielä niin ei tarvi JSONia parsia.... Se palauttaa Status 200 jos rank on sallittu. Ja status 400 jos hinta on liian kallis. Ei tarvitse siis muuta kuin katsoa tuo status. Ja jos status on muuta kuin 200/400 niin on virhetilanne, jolloin pitää päättää mitä tehdä.

Mutta tottakai voihan sen /JustNow rajapinnan JSONkinkin hakea. Makuasia.
 

Oldipoldi

Jäsen
Koodaus ei ole aina tyylilaji jos lopputulos toimii. Yleisesti ottaen, aina kannattaa miettiä mitä virhetilanteissa tapahtuu. Esimerkiksi jos tuo "res.code" ei ole 200, niin haluatko että rele on päällä vai pois.

Useimmiten luulisin että pihi laittaa releen pois päältä, että ei vahingossa lämmitä kalliilla. Ja perheen hellasäröä pelkäävä laittaa päälle ja antaa termostaatin rajata toimintaa maksoi mitä maksoi jos kyse on vaikka käyttövesivaraajan lämmityksestä. Eli tekisin tuohon yllä olevaan koodiin ainakain "else" haaran sille, että res.code ei ole 200.

Mutta ymmärränkö muuten oikein, että tuo "Shelly.Call" itseasiassa komentaa Shellyä tekemään sen API kutsun? Vai onko tuo Shelly.call "HA":sta lähtevä kutsu suoraan tuohon spot-hinta rajapintaan?
Täytyy lisäillä tuo "else" vikatilanteita varten. Tämä scripti on siis suoraan shellyyn kirjoitettu eli "HA"ta ei ole käytössä vaan tuo rele toimii omillaan kunhan vain verkkoyhteys on kunnossa.
 

Mikki

Hyperaktiivi
Täytyy lisäillä tuo "else" vikatilanteita varten. Tämä scripti on siis suoraan shellyyn kirjoitettu eli "HA"ta ei ole käytössä vaan tuo rele toimii omillaan kunhan vain verkkoyhteys on kunnossa.
Jestas tuo on hyvä tieto että sinne voi skriptaa tuon. Mikä shelly sulla on tarkalleen ottaen käytössä?
 

Oldipoldi

Jäsen
Jestas tuo on hyvä tieto että sinne voi skriptaa tuon. Mikä shelly sulla on tarkalleen ottaen käytössä?
Itseltä löytyy Shelly Pro 1PM ja EM3 on tilattu. Ei ole tosiaan itsellä vielä montaa päivää kokemusta, mutta onhan nuo Shellyt ihan näppärän oloisia. Tuo 1PM kun sattuu olemaan varustettu energian mittauksella niin siitä saa mukavasti samalla tarkastettua, että ohjaus on toiminut kun ohjaan sillä kontaktoria jonka kela ottaa 1,5W kuorman.
 

fraatti

Hyperaktiivi
Ruotsalaisilla on myös vastaava Ruotsin hinta-aluielle. Täältä voi käydä vilkuilemassa toteutusta
 

hanks

Aktiivinen jäsen
Pörssisähköohjauksella voi tehdä myös bisnestä.

Hinta romppeille on ollut alunperin 1500 e, nyt 500 e + 9,90 e/kk.

En nyt olisi ihan noin paljoa rahaa tuollaiseen investoinut. Itselläni wifi-mikrokontrolleri maksoi 2 euroa ja kk-maksua ei API:n käyttöön toistaiseksi ole tullut. ;D Toki tuossa otetaan huomioon myös tuleva sää. Ilmatieteenlaitoksella on kyllä avoin API, josta voisi tuotakin lukea jos haluaa.
 

MetaX

Aktiivinen jäsen
Ja mukaan voisi sotkea vielä tuuliennusteen, jolla voisi arvioida sähkön hintaa ennen kuin uudet tuntihinnat päivittyvät APIin. Jos ei ole tuulta luvassa, voi arvata että hinta tulee olemaan korkea? Saisikohan jostain kaivettua dataa menneistä hinnoista ja keskimääräisistä tuulennopeuksista? Voisi laskea onko tuossa korrelaatiota.
 

Mikki

Hyperaktiivi
Minusta taas sekä tuuliennusteet että sääennusteet ovat pikkuisen "insinööripornoa". Luultavasti niiden avulla ei mainittavia säästöjä saa, mutta onhan siinä se tekemisen ilo. Ainakin lämpötila heittää meidän talon kohdalla useita asteita siihen, mitä virallinen mittaus lähimmältä asemalta sanoo. Sääennusteista puhumattakaan.

Ja valitettavasti se ei ole aina samaan suuntaan. Eli siitä saisi lisämausteen kun yrittäisi ennustaa kumpaan suuntaan se tällä kertaa heittää jne... menee spagetiksi.
 
Viimeksi muokattu:

MetaX

Aktiivinen jäsen
Niin, tuossa pitäisi varmaan ensin laskea menneestä datasta että onko ennusteet edes sinnepäin 0 .. 24 .. 48h. Tuollaista dataa ei varmaan kyllä ole tarjolla missään. Mutulla epäilisin että tuuliennuste olisi tarkempi kun siihen vaikuttaa isommalla alueella tapahtuvat ilmanpaineen muutokset.
 

Nihan

Aktiivinen jäsen
Tuuliennusteen ei tarvitsisi pitää paikkaansa kuin isossa kuvassa, "tuuleeko länsirannikolla vai ei". Eli ei kovin suuria vaadita ennusteilta.

Kuka koodaa yksinkertaisen rajapinnan tähän joka parsii sääennusteesta em. pihvin paluustatukseksi :)
 

Mikki

Hyperaktiivi
Tuuliennusteen ei tarvitsisi pitää paikkaansa kuin isossa kuvassa, "tuuleeko länsirannikolla vai ei". Eli ei kovin suuria vaadita ennusteilta.
Kuka koodaa yksinkertaisen rajapinnan tähän joka parsii sääennusteesta em. pihvin paluustatukseksi :)
Tuuliennusteet on 36 tuntia eteenpäin. Käytännössä ei paljoakaan enempää kuin hintatiedotkin. Tai no... jos korrelaatio on hintaan oikeasti vahva, niin antaahan tuo alustavaa ennakkoa toki.
 

Mikki

Hyperaktiivi
Onhan niitä ainakin viikoksi. Luotettavuus laskee kuin lehmän häntä ja itse pitää muuttaa tuuliennuste tuulivoimannusteeksi.
Fingridillä on tuulivoiman tuotantoennuste siihen 36 tuntiin (tulee päivittäin klo 12).... Käytännössä erittäin pieni hyödyntämismahdollisuus kun parin tunnin päässä tuosta tulee hinnatkin seuraavalle vuorokaudelle.

Mutta joo ehkä pitää tosiaan tarkentaa että en usko hiukkaakaan noihin pitkiin tuuliennusteisiin, että viitsisin edes aloittaa niiden tutkimista. Siksi tarkoitin puhua suoraan tuotantoennusteesta.
 
Viimeksi muokattu:

jmaja

Hyperaktiivi
Nyt muuten ei näy vielä huomisen hintoja tässä apissa. Siis 15:05. Sinänsä onnekasta, että juuri muutin koodia niin, että pitäisi yrittää uudestaan tunnin päästä. Ennen olisi huomannut vasta 00:00, ettei hintaa ole ja hakenut uudestaan.
 

Mikki

Hyperaktiivi
Nyt muuten ei näy vielä huomisen hintoja tässä apissa. Siis 15:05. Sinänsä onnekasta, että juuri muutin koodia niin, että pitäisi yrittää uudestaan tunnin päästä. Ennen olisi huomannut vasta 00:00, ettei hintaa ole ja hakenut uudestaan.
Hmm.... suoritin käsin Entso-E haun ja ei tullut vieläkään niitä huomisia hintoja. Ei tuolle tosiaan mitään erityistä SLA:ta anneta.

EDIT: tuli ne viimeinkin.... oli kyllä Entso-E päässä hitautta.
 
Viimeksi muokattu:

Mikki

Hyperaktiivi
Saisihan ne varmaan tuolta nopeammin. Mutta käyttötarkoitus näissä apeissa ei ole olla mahdollisimman reaaliaikaiset, vaan mahdollisimman helpot. Entso-E myös henkisesti on "transparency platform" ja siksi mieluiten sitä käytän.

Helppokäyttöisyydestä puheenollen. Tuossa toisessa ketjussa siis tuli ilmi ongelmia summien parsinnan kanssa ja se on kyllä pieni "käpy" kun on tosiaan mm. Javascriptin mielestä stringi, eikä float/decimal/double tms...

Siksipä tämmöisen muutoksen tekisin, meneeköhän paljon rikki olemassaolevia koodauksia? Ehkä kuitenkin nyt kuin myöheemmmin? Oikealla siis uusi muoto ja vasemmalla nykyinen. Muutos koskisi kerralla kaikkia APeja, joissa summat ovat näkyvsissä. Vastalauseita?

1663937115486.png
 

ttk2

Aktiivinen jäsen
Siksipä tämmöisen muutoksen tekisin, meneeköhän paljon rikki olemassaolevia koodauksia? Ehkä kuitenkin nyt kuin myöheemmmin? Oikealla siis uusi muoto ja vasemmalla nykyinen. Muutos koskisi kerralla kaikkia APeja, joissa summat ovat näkyvsissä. Vastalauseita?
Versiointi... Käyttäjiä lienee edelleen suhteellisen vähäinen määrä, mutta tämähän on taaksepäin yhteensopivuuden rikkova muutos, joten hyvä paikka eriyttää v1 omaksi "namespaceksi" vanhoilla oletuksilla.

Tai sitten antaa palaa vaan, mielestäni muutos on hyvästä.
 

Mikki

Hyperaktiivi
Voisin tehdä muutoksen lauantai-illasta (24.9.). En nyt vielä näitä versioi, kun on ollut vasta pari viikkoa nuo olemassa. Ehkä tämän vielä saa anteeksi. Hyvähän se on testata vielä leudoilla keleillä, että mitä tapahtuu jos rajapinnassa on joku ongelma.

Muutos vaikuttaisi näihin rajapintoihin, mikäli luetaan summia. Rank-tieto tai päivämäärä ei muutu:
/DayForward
/JustNow
/Today
/TodayAndDayForward


Vaikutusta ei olisi näihin rajapintoihin:

/JustNowRank
/JustNowRank/<rank>
 

Sukke

Aktiivinen jäsen
Voisin tehdä muutoksen lauantai-illasta (24.9.). En nyt vielä näitä versioi, kun on ollut vasta pari viikkoa nuo olemassa. Ehkä tämän vielä saa anteeksi. Hyvähän se on testata vielä leudoilla keleillä, että mitä tapahtuu jos rajapinnassa on joku ongelma.

Muutos vaikuttaisi näihin rajapintoihin, mikäli luetaan summia. Rank-tieto tai päivämäärä ei muutu:
/DayForward
/JustNow
/Today
/TodayAndDayForward


Vaikutusta ei olisi näihin rajapintoihin:

/JustNowRank
/JustNowRank/<rank>

Postituslista voisi olla hyvä eli saisi ilmoittautua halukkaaksi ottamaan vastaan palveluun liittyviä tiedotteita.
 
Back
Ylös Bottom