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

Mikki

Hyperaktiivi
Saattaa tulla Kittilästä kitinää, että mihinkäs ne -40 C ja -50 C pisteet ovat unohtuneet. :p
Etelän-vetelänä ei tuollaista pakkasta edes käsitä. :). Mutta tosiaan tämä on vuorokauden keskilämpötila, niin tuo -30C on aika raikas keli sellaiseksi.
 

Cold

Jäsen
Hyvä muistutus. Eiköhän se saada mukaan niitä varten joilla on puu/öljy tms tukilämmitin.
Jos tuo maksimihinta ylityy, siitä pitäsi jotenkin saada tieto. Tätä tietoa voisi käyttää tukilämmityksen käynnistämiseen. 400 vastaushan voi tulla monesta eri syystä...voisiko olla esim 410 tms?
 

Mikki

Hyperaktiivi
Jos tuo maksimihinta ylityy, siitä pitäsi jotenkin saada tieto. Tätä tietoa voisi käyttää tukilämmityksen käynnistämiseen. 400 vastaushan voi tulla monesta eri syystä...voisiko olla esim 410 tms?
Hyvä idea. Tosin HTTP status-koodin sijasta voisi palauttaa ehkä vastauksen sisällössä jonkun syy-koodin.
 

shellypm

Jäsen
seuraavaksi työn alla kytkeä sisä/ulkolämpö shellyn scriptiin pakko-ohjauksena scriptin alle
jos on valmista pohjaa ni laittakkaa

mielestäni turhaa ottaa mitään apia ulko lämmöstä vaan paikkallisesta anturista
omassa lähiverkossa jo valmiina anturit jotka voisi koodaa shellyyn, ulko ja sisä lämpö sekä ennuste pyyntö

edit: joo vaa I/O ohjaus toisesta järjestelmästä, toimii
 
Viimeksi muokattu:

-Teme-

Vakionaama
Asiasta ei taida olla ollut vielä täällä mainintaa, mutta Shelly pro 3EM add-on releen ID on 100, kun kiinteiden releiden id:t ovat 0...3 riippuen mallista
 

kayttajatunnus

Aktiivinen jäsen
Ulkolämpötilaohjatun rajapinnan ja Shelly skriptin suunnittelu on nyt edennyt ja ottaisin tässä vaiheessa mielelläni kommentteja aiheeseen. Täällä "Pastebinissä" on tämän hetken idea millainen parametrointi olisi mahdollista:


Muutama huomio ideasta:
  • Toteutus tulee Spot-hinta.fi periaatteiden mukaisesti "API"-ensin, eli vaikka Shellylle tulee skripti, on API täysin avoin
  • Yhdellä Shelly-sääntöjoukolla voisi ohjata useampaa kuin yhtä relettä
  • Lämpötilaohjaus olisi seitsemällä pisteellä ja kullekkin voisi määritellä halutun tuntimäärän. Pisteiden välillä tuntimäärä kasvaa/pienenee lineaarisesti
  • Vuorokausi olisi jaettu kolmeen osaan, ja kullekkin osalle voisi määritellä minimimäärän lämmitystunteja
  • Yö-siirto tai kausisiirto olisi mahdollista huomioida halvimpien tuntien etsinnässä parametreilla.
Kysymykset:
  • Näyttääkö vaikealta?
  • Puuttuuko jotain olennaista?
  • Onko jotain aivan turhaa?
Mielellään ottaisin tässä vaiheessa kommentteja, ennenkuin lähden suuremmin toteuttamaan serveripäätä. Tavoitteena on kuitenkin, että kuun loppuun menneessä olisi uusi ulkolämpötilaohjattu skripti jaossa.
Tuli tässä turhan myöhään mieleen että esim. meidän setupilla -18 astetta on se raja, että koneet saa käytännössä käydä täysillä. Joillain muilla se saattaa olla jotain muuta. Monella varmasti jotain -20 ja -30 välillä.

Saako uudella skriptillä säädettyä siten, että -18 asteen kohdalla on 24h käynti sallittu? Jos pisteet menevät 10 asteen välein niin voiko esim. -20 asteessa asettaa arvoksi yli 24?
 

Mikki

Hyperaktiivi
Tuli tässä turhan myöhään mieleen että esim. meidän setupilla -18 astetta on se raja, että koneet saa käytännössä käydä täysillä. Joillain muilla se saattaa olla jotain muuta. Monella varmasti jotain -20 ja -30 välillä.

Saako uudella skriptillä säädettyä siten, että -18 asteen kohdalla on 24h käynti sallittu? Jos pisteet menevät 10 asteen välein niin voiko esim. -20 asteessa asettaa arvoksi yli 24?

Joo kyllä tuo tulee jotenkin onnistumaan. Vielä tässä vähän pyörittelen asiaa.
 

kayttajatunnus

Aktiivinen jäsen
Niin, vielä sellainen että omasta mielestäni nykyinen toteutus, missä pystyy itse rajaamaan tunnit, joille priorisoidaan korkeimman rankin tunteja, on parempi kuin mitä uuteen on suunniteltu, missä on kiinteät 8 tunnin slotit.

Esimerkkinä yön jälkeen on lämpöä vielä varmasti riittävästi mutta pitäisi päivälle saada 1-2 tuntia lämmitystä. Todennäköisesti ainakin yksi tunti tulee heti siihen alkuun 8-9 ja sitten mennään varmaankin iltaan asti ilman lämmitystä. Klo 16-24 priorisoitu tunti tullee sitten 23-24 välille.

Itsellä on nyt päivälle priorisoitu 2 tuntia klo 10-17 välille.
 

Mikki

Hyperaktiivi
Niin, vielä sellainen että omasta mielestäni nykyinen toteutus, missä pystyy itse rajaamaan tunnit, joille priorisoidaan korkeimman rankin tunteja, on parempi kuin mitä uuteen on suunniteltu, missä on kiinteät 8 tunnin slotit.

Tuota kohtaa itsekkin mietin.... palaute on siis erinomaisen hyvää tässä kohtaa juuri kun ei vielä vielä koodailtu paljoa. Työt haittaa harrastuksia vai miten se menee.

Mutta oliskohan kaikessa yksinkertaisuudessaan tuohon, että tekisi vain yhden ajanjakson, jolle pakkosyötetään haluttu määrä tunteja. Ja voisi pakkosyötölle laittaa lämpötilarajan, minkä alla sitä toteutetaan?
 

jazu81

Tulokas
Spot-hinta.fi Shelly skriptit on nyt päivitetty ja tukevat 1.0.0beta6 ja 1.0.0 firmwareja. Uusimmat skriptit löytää, kun laittaa Shellyn skripti-kirjastossa osoitteeksi: https://api.spot-hinta.fi/Shelly/library tai hakee skriptit suoraan Githubista: https://github.com/Spot-hinta-fi/Shelly

Erityisesti voisi mainita, että skripteissä on uusina juttuina mm. tarkka määritys, mitkä halvat tunnit haluaa lämmittää. Esim. käyttövesi halvimmalla tunnilla ja lattialämmityksiä tunneilla 2-8 (mutta ei tunnilla 1). Lisäksi hintarajaan on tuotu päivän keskihinta mahdolliseksi rajaksi.

"Minimal" skripteissä voi määrittää relenumeron, jos ei ohjaa niillä ensimmäistä relettä. Uusia ominaisuuksia on myös sallittujen kuukausien määritys, jos haluaa jonkun säännön toimivan vain esim. talvikuukausina.

Sen verran kehityspolusta, että ulkolämpötilaohjattu -skripti tulee uudistumaan yksinkertaisempaan muotoon. Käytännössä luovun prosenttiluvulla säädetystä rankista ja siirryn näillä näkymin seitsemään lämpötilapisteeseen, joista kullekkin voi asettaa halutun lämmitystuntimäärän. Tuo pitäisi olla helpompi ymmärtää kuin prosenttimuutos.

Tämä tullee testiin noin parin viikon kuluttua.
Morjes,
Voisko tohon minimal scriptiin lisätä boosted hours.. itse koitin copy pastella mutta erroria heittää.
 

kayttajatunnus

Aktiivinen jäsen
Yksi ominaisuus, joka joskus pyöri mielessä mutta jolle ei itselläni välttämättä ole enää tarvetta, oli se, että saisi releen vetämään esim. kolme keskiarvoltaan halvinta peräkkäistä tuntia. Esim. jos haluaa että MLP tekee käyttöveden aina yhtä soittoa eikä pätki välissä. Hyvin useinhan nuo halvimmat tunnit kyllä ovat peräkkäin mutta ei aina.

Edit: Tämä nyt ei tosiaan olisi tuon lämpösäätyvän skriptin ominaisuus. Tai voi se jollain variaatiolla toki olla siinäkin :D
 

kayttajatunnus

Aktiivinen jäsen
Tuota kohtaa itsekkin mietin.... palaute on siis erinomaisen hyvää tässä kohtaa juuri kun ei vielä vielä koodailtu paljoa. Työt haittaa harrastuksia vai miten se menee.

Mutta oliskohan kaikessa yksinkertaisuudessaan tuohon, että tekisi vain yhden ajanjakson, jolle pakkosyötetään haluttu määrä tunteja. Ja voisi pakkosyötölle laittaa lämpötilarajan, minkä alla sitä toteutetaan?
Tuo lämpötilaraja olisi kyllä loistava lisäys tähän vielä.
 

amnk

Jäsen
Kiitoksia meikäläisenkin puolesta tästä APIsta. Itse käytän sitä toistaiseksi IFTTT:n kautta, ja hyvin tuntuu toimivan. Toimiihan noissa sääennusteet huomioivissa kohdissa myös negatiiviset prosenttiluvut? Integer tyyppinä kai niitä tukee. Ajattelin pienessä päässäni siis ulkolämpötilan huomioivaa viilennystä – ehkä enemmänkin vaan kikkailumielessä, koska viilentäminen on tavallisesti sen verran halpaa hommaa.

Edit: Näemmä siellä lukeekin "allowed values 0-50". Olisiko miinusarvojen käyttö mitenkään mahdollista joskus tulevaisuudessa? Tai voiko tämän asian toteuttaa jotenkin muuten jollain tapaa, joka ei nyt tule mieleen?
 
Viimeksi muokattu:

mobbe

Vakionaama
Onko yksinkertaisia tapoja saada Panasonicin wifi ilp toimimaan näillä scripteillä ? Joku API on tuolla panallakin.
En tarkemmin osaa sanoa mutta joku wifiin liitettävä kaukosäädin joka nostaa/laskee lämpötilan pyyntiä ohjausten mukaan. Sähkönsyötön pätkimiseen scripteillä täältäkin ohjeet saisi mutta ei suositella ilppiin.
 

Sammypiru

Vakionaama
Ajan tulistusvaraajaa ao. scriptillä, mikä sitten nimeltään olikaan. PriorityHourseista 12-16 etsitään Rank1 ja sitten loput kolme halvinta muualta. Oikeastaan ajatus on kuitenkin niinpäin että ensisijaisesti lämmitetään yön halpoina tunteita ja sitten ennen työpäivän päättymistä varmistetaan että illaksi on lämmintä vettä.

@Mikki :lle kehitysehdotus, jos mahdollista. PriorityHoursien lämmitys on kuitenkin toissijaista, päivän pari pärjää kyllä vaikka iltapäivällä vesi ei olisikaan kuuminta hottia. Olisiko PriorityHourseille mahdollista asettaa hintakatto sentteinä tai jonain muuna? Tällä saisi blokattua iltapäivän kuumennukset, jos sähkön hinta on aivan pilvissä.


1694793716020.png


13. päivän esimerkki. Yöllä varaaja on kuumennettu täyteen (85 asteeseen) ja klo 15 alkaen on boostattu varaaja taas täyteen reilussa puolessa tunnissa (varaajan teho 2kW) sähkön hinnan ollessa 11,44 c/kWh. Joo ihan siedettävää, mutta jos jokainen asettamani PriorityHours oliskin ollut vaikka yli 20 senttiä, niin mielelläni olisin tuon boostauksen jättänyt käyttämättä.

1694793587208.png
 

kayttajatunnus

Aktiivinen jäsen
Tuota kohtaa itsekkin mietin.... palaute on siis erinomaisen hyvää tässä kohtaa juuri kun ei vielä vielä koodailtu paljoa. Työt haittaa harrastuksia vai miten se menee.

Mutta oliskohan kaikessa yksinkertaisuudessaan tuohon, että tekisi vain yhden ajanjakson, jolle pakkosyötetään haluttu määrä tunteja. Ja voisi pakkosyötölle laittaa lämpötilarajan, minkä alla sitä toteutetaan?
Niin ja ihan paras systeemihän olisi, jos myös pakkosyötölle saisi porrastetun lämpötilarajan. En kyllä tiedä taas paljonko sille olisi käyttöä mutta ensi talvena sekin selviäisi.
 

Salzi

Jäsen
Mistähän tämmöinen ilmoitus johtuu? Poistin vanhan ja kokeilin puhtaalta pöydältä, mutta sama lopputulos. Firmis 1.0.3
 

Liitteet

  • IMG_0442.png
    IMG_0442.png
    186,4 KB · Katsottu: 140

Salzi

Jäsen
siinä oli vain toi ja monitorointi. Nyt kun yritin uudestaan niin toi oli ainoana asennettuna

Edit: poistin vielä kerran, boottasin ja asensin uudestaan. Boottaus erona aiempaan. Väittäisin ettei johdu omasta typosta, mutta tiedäppä tuota. Nyt toimii kuitenkin
 

Liitteet

  • IMG_0443.png
    IMG_0443.png
    69,3 KB · Katsottu: 116
Viimeksi muokattu:

Salzi

Jäsen
noi oli kaikki uusimpia. Ensin toimi noin periaatteessa, mutta se ohjasi vain minimi määrän tunteja, eikä lähtenyt kasvattamaan tuntimäärää viilentymisen myötä. Kokeilin laittaa rankatzerodegrees määrän yli 24h, kun kompura saisi käydä kokoajan jo 10c lämmöissä. Jostain syystä se ei kuitenkaan ohjannut oikein niin kävin muuttamassa takaisin 24h. Siinä tallennuksessa meni joku pieleen eikä se korjaantunut pelkällä poistolla ja uudelleen asentamisella. Veikkaisin shellyn tilapäistä mielenhäiriötä, joka korjaantui bootilla. Otin eco-tilan pois päältä samalla vaikka sillä ei varmaankaan pitäisi olla merkitystä tämän kanssa.

Nyt suunnitteilla olevat muutokset on erittäin tervetulleita. Toivottavasti niissä toimii yli 24h tuntimäärä niin, että saa käppyrän alittamaan 24h rajan vaikkapa 5c kohdalta nostamalla 0c kohdalta ja laskemalla 10c kohdalta.
 

-Teme-

Vakionaama
Skriptien kanssa eco mode kannattaa pitää pois päältä.
Se (eco mode) laskee MCU kellotaajuutta ja skriptejä käyttäessä voi alkaa lagaamaan ja puskuroimaan toimintoja. kellotaajuus pitäisi nousta kun tarvitaan enemmän jerkkua, mutta Espriffin logiikat ei toimi yhtä hyvin ja luotettvasti kuin esim ARM prosessoreissa toimii
 

kayttajatunnus

Aktiivinen jäsen
Mitenkähän vaikea olisi muuten lisätä skripteihin ennakko MLP asteminuuttilaskentaa varten? Aika moni taitaa käyttää näitä MLP:n kanssa siten, että asteminuuttien laskenta nollautuu ja kun skripti napsahtaa tasatunnilla päälle, vasta silloin alkaa asteminuuttilaskenta.

Mutta jos sen laskennan saisikin päälle jo esim 10min ennen tasatuntia, saisi halvasta tunnista paremman hyödyn irti.
Niin vielä lisää toivomuksia uuteen toteutukseen tuossa lainauksessa :D
 

shellypm

Jäsen
Mistähän tämmöinen ilmoitus johtuu? Poistin vanhan ja kokeilin puhtaalta pöydältä, mutta sama lopputulos. Firmis 1.0.3
jokin laukausi 15k script rajan joka shellyssä...

Resource Limits​

We impose limits on the size of source code of a single script -- 15kB. The per-script size limit is enforced by Script.PutCode which will return an error if the limit is reached.

Shelly Scripts run on a modified version of Espruino. While the previous JS interpreter running on Shelly supported a subset of JavaScript, Espruino interpreter is closer to the JavaScript standard.

bug at 1.0.3?
 
Viimeksi muokattu:

japapa

Jäsen
Juu tein saman integraation Broadlinkillä RM Mini 3 IR-lähettimeen :cool:
Miten olette hoitaneet ohjauksen hinnan mukaan? Lämpötilan pudotuksia(monellako asteella) ja puhallin nopeuksien pudotuksia ja nostoja tarpeen mukaan.
Löytyykö ohjeita tuon tekemiseen ifttt joskus kokeillut
 

janti

Moderaattori
Ylläpidon jäsen
Miten olette hoitaneet ohjauksen hinnan mukaan?
Mulla tuo ei ole nyt käytössä, koska Broadlinkin Mitsun kauko-ohjain vaatisi maksullisen IFTTT-version toimiakseen kunnolla (useita askeleita ILPin ohjaukseen :(). ILPin sammutus onnistuu kyllä tuon (ilmaisen IFTT) avulla, mutta käynnistys takaisin haluttuun moodiin ja pyyntiin ei.
Pelkällä lämpötilamuutoksilla laite alkoi jostain syystä jäähdyttää. ;D Puhallinmuutoksia en kokeillut.
 

Sammypiru

Vakionaama
Mulla tuo ei ole nyt käytössä, koska Broadlinkin Mitsun kauko-ohjain vaatisi maksullisen IFTTT-version toimiakseen kunnolla (useita askeleita ILPin ohjaukseen :(). ILPin sammutus onnistuu kyllä tuon (ilmaisen IFTT) avulla, mutta käynnistys takaisin haluttuun moodiin ja pyyntiin ei.
Pelkällä lämpötilamuutoksilla laite alkoi jostain syystä jäähdyttää. ;D Puhallinmuutoksia en kokeillut.
IFTTT Pro 2,80€/kk ja jos ohjaus tarvitaan loka-huhtikuulle, niin kokonaiskustannus 19,60€. Siinä ja siinä saako tuota säästöä aikaiseksi.
 

markok

Aktiivinen jäsen
Asensin nyt omaan Shellyyn tuon Shelly-Rank_and_Price_limit.js:n ohjaamaan lämminvesivaraajaa. Aikaisemmin oli eri scripti samaan käyttöön, mutta ajattelin nyt kokeilla tätä jos tämä toimisi paremmin. Muutama kysymys tähän scriptiin liittyen.

- Mihin aikaan tämä scripti hakee halvimmat tunnit. Otetaanko hakuun kuluva päivä ja seuraava päivä kun seuraavan päivän tunnit on tiedossa?
- Voinko käyttää "MaxPrice" parametrissä negatiivisiä arvoja?
- Saako scriptin suorituksen pysäytettyä tarvittaessa kesäajaksi muuttamatta scriptin parametrejä?

Nuo kaksi viimeistä oli syynä miksi en saanut edellistä kokeilemaani scriptiä toimimaan halutulla tavalla. Minä en halua käyttää pörssisähköä ollenkaan varaajan lämmitykseen silloin, kun aurinkosähköä on tarjolla. Tuota edellistä käyttämääni scriptiä ei saanut pois päältä edes scriptin vieressä olevasta painikkeesta. En tiedä miten tuo on mahdollista, mutta näin se vain käyttäytyi. Paras vaihtoehto olisi se, että maxprice arvon saisi niin paljon negatiiviseksi, että lämmittäisi vain silloin kun pörssisähkö on siirtomaksun verran negatiivinen. Esimerkkinä vaikka tämä päivä miten edellinen scripti käyttäytyi. Pörssisähkön hinta oli yöllä negatiivinen, joten varaaja on nyt lämmin. Nyt olisi aurinkosähköä niin paljon tarjolla, että se riittäisi varaajan lämmittämiseen, mutta se menee nolla hinnalla myyntiin, koska en saa sitä käytettyä mihinkään. Tämän haluaisin saada estettyä. Vielä kun scriptin saisi automaattisesti käynnistettyä tai "MaxPrice" parametrin muutettua kun Shellyn lämpöanturi toteaa tiettynä kellon aikana varaajan lämpötilan olevan liian alhainen niin sittenhän tämä sopisi aurinkosähkötalouteen loistavasti.
 

Mikki

Hyperaktiivi
Asensin nyt omaan Shellyyn tuon Shelly-Rank_and_Price_limit.js:n ohjaamaan lämminvesivaraajaa. Aikaisemmin oli eri scripti samaan käyttöön, mutta ajattelin nyt kokeilla tätä jos tämä toimisi paremmin. Muutama kysymys tähän scriptiin liittyen.

- Mihin aikaan tämä scripti hakee halvimmat tunnit. Otetaanko hakuun kuluva päivä ja seuraava päivä kun seuraavan päivän tunnit on tiedossa?
- Voinko käyttää "MaxPrice" parametrissä negatiivisiä arvoja?
- Saako scriptin suorituksen pysäytettyä tarvittaessa kesäajaksi muuttamatta scriptin parametrejä?

Nuo kaksi viimeistä oli syynä miksi en saanut edellistä kokeilemaani scriptiä toimimaan halutulla tavalla. Minä en halua käyttää pörssisähköä ollenkaan varaajan lämmitykseen silloin, kun aurinkosähköä on tarjolla. Tuota edellistä käyttämääni scriptiä ei saanut pois päältä edes scriptin vieressä olevasta painikkeesta. En tiedä miten tuo on mahdollista, mutta näin se vain käyttäytyi.

Halvimmat tunnit katsotaan vuorokauden mukaisesti. Tämä on valittu kun simuloin joskus että jos heti klo 14 lasketaan uudet halvimmat tunnit niin joskus ne osuu kaikki tälle päivälle ja huomiseen ei yhtään. Tässä on vähän valittava jommin kummin.

Voi käyttää negatiivista maxPrice arvoa, mutta luulisin kyllä että se on aika jyrkkä rajaus tunneille.

Ja kyllä vain voit listata kuukaudet kun sääntö on voimassa. Se on se AllowedMonths parametri. Voit samaan releeseenkin tehdä eri säännöt kesälle ja talvelle.

Spot-hinta skripti kyllä pysähtyy jos sen stoppaat. Luulen että olet käyttänyt sitä "elspot" skriptiä joka käyttää ajastinta. Se ajastin jää elämään jos skriptin pysäyttää. Nämä spot-hinta skriptit ei käytä scheduleria.

Kommentoin myöhemmin noita muita juttuja...
 
Back
Ylös Bottom