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

Jimi

Jäsen
Periaatteessahan noi PriorityHours ja PriceModifierHours on kaks eri asiaa, priority tunnit voi olla ihan muualla kuin hintaerotunnit, siksi niillä oikeestaan pitäis olla omat parametrit. Se myös mahdollistaisi PriceModifierin ottamisen osaksi hintarajaa yms. hintavertailua.
 

Jimi

Jäsen
Minimal Heating scriptin dokumentaatiossa ei mainita enään voiko BackupHours parametri olla 99 jos ei haluta backup tunteja?
 

Mikki

Hyperaktiivi
Minimal Heating scriptin dokumentaatiossa ei mainita enään voiko BackupHours parametri olla 99 jos ei haluta backup tunteja?

Voi olla. Päivitin skriptiä. Muuten kannattaa tehdä GitHubiin scripteihin liittyvistä jutuista Issueita, jos vain on tuttu platformi:

Näin ei tämä ketju pomppaa kokoajan ylimmäksi. Käyn vähän ajatuksella tuota "PriorityHours" hommaa läpi, että saisinko selvennettyä sitä jollakin tavalla.
 

Salzi

Jäsen

Mikki

Hyperaktiivi
Lähettääkö Shelly jonnekin tietoa josta voi jälkeenpäin katsoa missä asennossa rele on milloikin ollut ?
Shellyn pilvestä. Mutta sieltä näkyy ilmaiseksi vain viisi viimeistä säätöä.

Tuosta itsekkin suivaantuneena on minulla suunnitteilla tähän skripti joka kertoo pidemmälle historian.
 

iro

Vakionaama
Tuosta itsekkin suivaantuneena on minulla suunnitteilla tähän skripti joka kertoo pidemmälle historian.
Minä yritin saadaa historiaa näkyviin lisäämällä sinun skriptiin pari riviä jotka lähettävät releen tilan MQTT-viestinä IoT_Guru palveluun (ilmainen palvelu jota käytetään Mitsun sulatushuijaus-sovelluksessa seuraamaan ILP:n tilaa). Raportointi toimii hyvin minun oman MQTT-serverin kanssa mutta IoT_Gurun suunnassa tuli ongelmaksi Iot_Gurun vaatima pitkä Topic-määrittely. Luulin että tuon pystyy ratkaisemaan käyttämällä apuna Shellyn MQTT-prefix määrittelyä, en kuitenkaan onnistunut löytämään (varsin niukasta Shelly-dokumentaatiosta) tapaa kuinka tuon voisi toteuttaa:huh:.
 

Jimi

Jäsen
Lähettääkö Shelly jonnekin tietoa josta voi jälkeenpäin katsoa missä asennossa rele on milloikin ollut ?
Appsi lokittaa joka releen tilamuutokset, tosin välillä joutuu klikkaamaan pari kertaa että hakee lokin, yleensä toimii. Premiumissa pitempi loki, ilmainen vain 5 viimeistä.
 

Salzi

Jäsen
Olisiko smartheating scriptiin mahdollista saada PriceAlwaysAllowed rajaksi average? Käyttökohteena olisi tällä kertaa eräänlainen variaatio vakioteholämmityksestä autotalliin, joka pitää vajaatehoisella patterilla lämpötilan muutaman asteen ulkolämpötilaa korkeampana. Sellainen twisti vain, että leikataan kalliit tunnit pois ja syy miksi tekisin sen mieluummin smartheating scriptillä on siinä että lämmityksen saa kytkeytymään pois kesäksi ja pakotettua sopiva määrä tunteja syksyn lämpötiloissa. Estetään kosteuden kertyminen kylmään talliin, mutta ei lämmitetä sen enempää.

Edit: kuumeisen ihmisen aivopierut korjattu. Eihän se sammu pakkasella jos always allowed on käytössä. Home assistant saattaisi taipua tähän hommaan helpommin kun tallissa on kosteuden mittaus
 
Viimeksi muokattu:

m0_5

Jäsen
Löytyykö Arduinolle/Esp8266:lle jostain valmista koodia tuntihinnan hakemiseen?
Täällä myös hakusessa vinkkejä tuntihinna lukemiseen Arduino / ESP8266:lla? Jonkin verran on ko. kikkareita tullut käytettyä datan loggaukseen thinkspeak jne. alustoille. Spottihinna luku varmasti helposti tehtävissä myös tällä.
 

HannuP

Jäsen
voisiko noihin scripteihin saada lisäfeaturen shelly add-on lämpöanturille niin että voisi rajoittaa releen vetämistä halvimpina tunteina lämpötilan avulla eli voisi toteuttaa lämpötilan pudotustoiminnon. Toimisi ikäänkuin myös termostaattina. Yksi parametri lisää että rele vetää halpoina tunteina vain jos sisälämpötila on alle max. rajan.
Nyt on keskitetty kontaktori joka ohjaa päälle halpoina tunteina ja seinätermarit hoitaa lämpötilan säädön n. 21 asteessa, mutta lämmön pudotustilassa poissaollessa seinätermarit ei ole pelissä vaan scriptin pitäisi osata lopettaa lämmitys n. 12 asteessa.
Onnistuu add-on palikan webhookilla, jolla voi "kumota" scriptin ohjauksen lämpötilan noustessa yli 12 asteen ja palauttaa toisella webhookilla takaisin. Eikä tarvitse koskea scriptiin.
 

tk-

Aktiivinen jäsen
Onnistuu add-on palikan webhookilla, jolla voi "kumota" scriptin ohjauksen lämpötilan noustessa yli 12 asteen ja palauttaa toisella webhookilla takaisin. Eikä tarvitse koskea scriptiin.
Jos sen tekee noin, ja skripti on mallia kertaohjaus, niin rele menee päälle vaikka hinta olisi pilvissä ja pysyy päällä kunnes seuraavan kerran skripti ohjaa sen pois. Eli ei välttämättä ihan optimaalisesti toimi skriptiä puukottamatta. Tai ainakin kannattaa jättää tuo päällekytkentä tekemättä webhookin avulla.
 

7PP

Jäsen
Huomasin, että skripti Shelly-Monitoring.js ei toimi Shelly Plus 1PM:ssä, vaikka se esim. 1 Pro:ssa pelittää ihan normaalisti. Onkohan tämä jokin Plus 1PM:n tunnettu rajoite?

Kummassakin FW 1.0.3, ja sama ongelma esiintyy myös FW 1.0.7 beta2:ssa.

Ongelma näyttäisi olevan Script.GetStatus -kutsussa, joka ei toimi tuossa Plussa-versiossa. Asian voi havainnollistaa seuraavalla koodipätkällä:

Koodi:
Shelly.call("Script.GetStatus", { id: "1"}, function (res) {print ("Skriptin ajotila: " + res.running);}, null);

Tämä palauttaa seuraavaa:

Koodi:
Uncaught Error: Cannot read property 'running' of undefined
at line 1 col 34
print ("Skriptin ajotila: " + res.running);
^
in function called from system
 

Mikki

Hyperaktiivi
Huomasin, että skripti Shelly-Monitoring.js ei toimi Shelly Plus 1PM:ssä, vaikka se esim. 1 Pro:ssa pelittää ihan normaalisti. Onkohan tämä jokin Plus 1PM:n tunnettu rajoite? Kummassakin FW 1.0.3, ja sama ongelma esiintyy myös FW 1.0.7 beta2:ssa.

Ongelma näyttäisi olevan Script.GetStatus -kutsussa, joka ei toimi tuossa Plussa-versiossa. Asian voi havainnollistaa seuraavalla koodipätkällä:
Koodi:
Shelly.call("Script.GetStatus", { id: "1"}, function (res) {print ("Skriptin ajotila: " + res.running);}, null);

Tämä palauttaa seuraavaa:
Koodi:
Uncaught Error: Cannot read property 'running' of undefined
at line 1 col 34
print ("Skriptin ajotila: " + res.running);
^
in function called from system

Hmm... eipä ole tullut vastaan (ja itsellä ei ole tuota Plus 1PM:ää). Mutta sinänsä kyllä oudolta kuulostaa jos tuo yksi rivi koodia ei pelaa siinä 1PM:ssä.
 

HannuP

Jäsen
Hmm... eipä ole tullut vastaan (ja itsellä ei ole tuota Plus 1PM:ää). Mutta sinänsä kyllä oudolta kuulostaa jos tuo yksi rivi koodia ei pelaa siinä 1PM:ssä.
Huomasin, että skripti Shelly-Monitoring.js ei toimi Shelly Plus 1PM:ssä, vaikka se esim. 1 Pro:ssa pelittää ihan normaalisti. Onkohan tämä jokin Plus 1PM:n tunnettu rajoite?
Kokeilin Plus 1PM:ssä. Hyvin monitor käynnisryi ja minuutin kuluttua käynnisti script-ykkösen
 

Mikki

Hyperaktiivi
Niin voisihan tuossa olla joku tilanne, että sitä skriptiä numerolla 1 ei löydy ja siksi se kaatuu. Skriptin numeron löytää URL:sta esimerkiksi. Jos skriptejä on asennellut ja poistellut, voi ne numerot olla miten vain.

Monitoring skriptiin voi asettaa sen valvottavan skriptin ID:n ja sinänsä asennusjärjestyksellä ei ole väliä, jos katsoo vain että Monitoring skripti ei valvo itseään. Turhaa hommaa se :)
 

7PP

Jäsen
Noniin, tuostahan se oli kiinni!
Kuvittelin virheellisesti, että skriptit olisi aina numeroitu järjestyksessä ykkösestä alkaen. Ehkä minun pitäisi mennä jollekin Shellyn ohjemoinnin alkeiskurssille... :)

Kiitos, @Mikki
 

-Teme-

Vakionaama
Voisko skriptin asentamisessa käyttää Script.PutCode’a siinä saa määriteltyä id:n jolla skripti asennetaan. Jos käyttää esim id10 niin voi huolletta asentaa ja poistaa muita skriptejä ilman että järjestys menee sekaisin. Miten muuten jos asentaa pro3 tai pro4PM kaksi skriptiä niin vain toinen on monitoroinnissa?
 

Mikki

Hyperaktiivi
Voisko skriptin asentamisessa käyttää Script.PutCode’a siinä saa määriteltyä id:n jolla skripti asennetaan. Jos käyttää esim id10 niin voi huolletta asentaa ja poistaa muita skriptejä ilman että järjestys menee sekaisin. Miten muuten jos asentaa pro3 tai pro4PM kaksi skriptiä niin vain toinen on monitoroinnissa?

Molemmat skriptit saa seurantaan nykyiselläkin monitoroinnilla. Loppujenlopuksi se skriptin numero on aika helppo ja nopea katsoa, kun avaa skriptin ja vilkaisee URL:n:

1698256704651.png


Olen tekemässä nyt uutta versiota tuosta monitorointi-skriptistä ja tämän hetken visiolla siihen tulee kolme toimintoa. On muuten yllättävän vaikea koodata tätä, kun Shellyssä on tiukat rajoitukset skriptille. Mutta nämä kolme ideaa on työn alla:

- Skriptien valvonta
- Internet-yhteyden valvonta, tehtynä ilman riippuvuutta Shelly cloudiin
- Releiden status-muutosten raportointi spot-hinta.fi pilveen, jossa näkyy enemmän kuin viisi viimeisintä muutosta. Ei tarvitse siis maksaa kenenkään pidemmästä historiasta Shellylle tuosta ominaisuudesta.
 

Mikki

Hyperaktiivi
Työversio webbisivusta, jossa näkee releiden statusmuutokset. Eli tähän on tulossa helppo tapa yhdistää useammankin Shellyn tilamuutokset samaan näkymään. JA vaikka ottaa kumminkaimankin Shellyt seurantaan, että ne pelittää.

Ja tuttuun tapaan mihinkään ei tarvitse rekisteröityä tai kirjautua.

Tulisiko mieleen jotain olennaista, mitä voisi lisätä? Eli verrattuna Shellyn omaan historiaan, niin tähän tulee varmasti pidempi historia kuin viisi viimeistä tilamuutosta. Ja sitten tosiaan tilamuutoksen kohdalle tallennetaan historiaan sen hetken "rank" ja se mikä hinta oli, ihan vain antamaan käsitystä että ohjaus pelaa oikein.

Releiden oikeiden nimien hakeminen on tosi hankala operaatio, kun se haku on etenkin Shelly Pro 3-4 koneissa niin raskas JSON operaatio, että muisti loppuu sen hakemisessa. Voi olla että joudun tekemään sen niin, että skriptiin pitää kirjoittaa releiden nimet (mikä on typerää, mutta mutta...)


1698352124960.png
 

Tossunkorjaaja

Aktiivinen jäsen
Yritän saada muokattua ehtoja siten, että:
Toinen rele vetää ja lämmittää LVV:n kolmella edullisimmalla tunnilla (tämä toimii jo)
Toinen rele ohjaa kiukaan kontaktoria, kun hinta esim. alle 0,06 euroa. Kyseessä hetivalmis, joka nyt vain yöaikaan muhii. (Shelly aikaohjelma).
Ehkä sitten vielä kolmas rele ohjaamaan lattialämmitystä hintarajan mukaan (kaipa kävis sama kuin kiukaalla)

Neljäs on sitten autopistorasialle. Sitä täytyy vielä miettiä. Ehkäpä siinä vielä riittää on/off etänä. Lämpötilaehto olis kyllä kova kellonajan ohella. Eli päälle aamuksi, mutta jos ulkolämpötila yli +5, niin ei mene päälle.

Näissä tuntuu vain mielikuvitus olevan rajana

Saapa nähdä miten solmuun saan ohjelman, mutta tuossa on mielestäni kaikki eväät ja ohjeet tuohon.
 

Cold

Jäsen
Työversio webbisivusta, jossa näkee releiden statusmuutokset. Eli tähän on tulossa helppo tapa yhdistää useammankin Shellyn tilamuutokset samaan näkymään. JA vaikka ottaa kumminkaimankin Shellyt seurantaan, että ne pelittää.

Ja tuttuun tapaan mihinkään ei tarvitse rekisteröityä tai kirjautua.

Tulisiko mieleen jotain olennaista, mitä voisi lisätä? Eli verrattuna Shellyn omaan historiaan, niin tähän tulee varmasti pidempi historia kuin viisi viimeistä tilamuutosta. Ja sitten tosiaan tilamuutoksen kohdalle tallennetaan historiaan sen hetken "rank" ja se mikä hinta oli, ihan vain antamaan käsitystä että ohjaus pelaa oikein.

Releiden oikeiden nimien hakeminen on tosi hankala operaatio, kun se haku on etenkin Shelly Pro 3-4 koneissa niin raskas JSON operaatio, että muisti loppuu sen hakemisessa. Voi olla että joudun tekemään sen niin, että skriptiin pitää kirjoittaa releiden nimet (mikä on typerää, mutta mutta...)


katso liitettä 89462
Voiko tätä jo testata/käyttää?? Voiko salasanan: <SHF-PrivateKey> valita vapaasti?
 

Mikki

Hyperaktiivi
SmartMonitoring

"SmartMonitoring" skripti on nyt tuotu tarjolle ja sitä voi testata. Skripti tulee asentaa Shelly libraryn kautta, koska tuo lataus generoi skriptiin mukaan sen avaimen. Kun skriptin lataa, kannattaa asettaa Shellylle joku nimi, sekä myös nimetä releet. Valitettavasti tosiaan releiden nimien automaattinen hakeminen ei vielä onnistunut, kun se on niin raskas operaatio skriptille.

Shelly Libraryn osoitteeksi siis: https://api.spot-hinta.fi/Shelly/scripts

Sitten kun käynnistää skriptin, alkaa se oletuksena lähettämään noita tilamuutoksia pilveen ja käyttäjä voi avata HTML sivun, jonka linkki on mukana siinä skriptissä. Tuonne tallentuu nyt tällä hetkellä 200 viimeisintä tilamuutosta. Tähän on tekeillä suomenkielistä dokumentaatiota, mutta ainakin kokeneemmat skriptin käyttäjät selvinnee tuosta ilmankin ohjeita.

Tältä se HTML sivu näyttää... tässä on vaikkapa minun luomallani privaattiavaimella malliksi pari tallentamaani relemuutosta. Olen yhdistänyt kahden releen raportoinnin tuohon samalle avaimelle. Eli kopioin vain saman avaimen kahteen eri Shellyyn:

1698493308773.png
 
Viimeksi muokattu:

Cold

Jäsen
Kiitos! Olihan tuo ohje latauspaikasta kyllä selkeästi scriptiin kirjoitettu. Pitäis varmaan opetella lukemaan!
Ilmeisesti tuo SmartMonitoring pystyy monitoroimaan mitä tahansa Shellyä, siis sellaistakin jolla ei ole omaa Scriptiä vaan jota toisen Shellyn scripti ohjaa? Vai pitääkö siihen 'etäohjatavaan' Shellyn tehdä joku scripti, joka ei tee mitään?
 
Viimeksi muokattu:

Mikki

Hyperaktiivi
Kiitos! Olihan tuo ohje latauspaikasta kyllä selkeästi scriptiin kirjoitettu. Pitäis varmaan opetella lukemaan!
Ilmeisesti tuo SmartMonitoring pystyy monitoroimaan mitä tahansa Shellyä, siis sellaistakin jolla ei ole omaa Scriptiä vaan jota toisen Shellyn scripti ohjaa.
Eli SmartMonitoring pyörii tosiaan Shellyssä ja katsoo sen Shellyn releiden tilaa missä pyörii. Ei ole sinänsä väliä mistä ohjaustieto releille on tullut. Tai vaikka olisi rele laitettu käsin päälle. Tuo katsoo releiden muutokset noin 30 sec välein, eli releen nopea "rämpytys" ei tallennu historiaan.
 

Mikki

Hyperaktiivi
Tänään taisi olla tilanne, että kun haettiin EntsoE hintoja, niin syystä tai toisesta se feilasi ja meni varayhteyteen. Ja siellä sitten löytyi bugi....
Homma on nyt korjattu. Ja kaiketi ns. oikein se pitäisi mennä näin. Ai että kun mä inhoan kellojen kääntelyä. Sekä koodausmielessä, että muutenkin.

1698508688531.png
 

Hotwater

Jäsen
Nyt kun Shellyn scriptejä pystyy paremmin hallinnoimaan etänä ja Mikkin scriptit ovat kehittyneet itselle paremmin sopiviksi niin palasin reilun 10kk tauon jälkeen scriptien käyttäjäksi. Kiitos siis Mikki hyvistä scripteistä ja monien muutostoiveiden läpivienneistä!!

En ole osannut Shelly Libraryn kautta hakea scriptejä kännykällä, vaan mennyt kopio/liitä mallilla. Nyt kun SmartMonitoring täytyy hakea Librarystä niin onnistuuko se kännykällä? En löydä paikkaa johon syöttäisin sen api-osoitteen.

Itse käytän tuota SmartHeatingiä, joka on itselle lähes täydellinen. Lähes sanan pääsisin jättämään pois jos pystyisin jotenkin estämään liian monen peräkkäisen tunnin väliin jättämisen, ja paras olisi tietenkin jos niitä peräkkäisien tuntien määrää pystyisi säätämään ulkolämpötilan mukaan. Tiedän että tätä on toivottu useasti aikaisemminkin ja jotain useampaa MinimumHoursPeriod:n käyttämistä on ehdotettukin, mutta ei riittänyt ymmärrys miten sen tekisin.
 

Mikki

Hyperaktiivi
Nyt kun Shellyn scriptejä pystyy paremmin hallinnoimaan etänä ja Mikkin scriptit ovat kehittyneet itselle paremmin sopiviksi niin palasin reilun 10kk tauon jälkeen scriptien käyttäjäksi. Kiitos siis Mikki hyvistä scripteistä ja monien muutostoiveiden läpivienneistä!!

En ole osannut Shelly Libraryn kautta hakea scriptejä kännykällä, vaan mennyt kopio/liitä mallilla. Nyt kun SmartMonitoring täytyy hakea Librarystä niin onnistuuko se kännykällä? En löydä paikkaa johon syöttäisin sen api-osoitteen.

Mukava että kehitys on ollut oikean suuntaista. Skriptien asennus ja varsinkin tuo SmartMonitoring pitää käytännössä tehdä tietokoneen kautta, avaamalla se Shellyn oma UI selaimella. Muutenkin itse tykkään sitä kautta tehdä aina muutokset, kun on varmempi tuntuma että kaikki menee oikein.

Itse käytän tuota SmartHeatingiä, joka on itselle lähes täydellinen. Lähes sanan pääsisin jättämään pois jos pystyisin jotenkin estämään liian monen peräkkäisen tunnin väliin jättämisen, ja paras olisi tietenkin jos niitä peräkkäisien tuntien määrää pystyisi säätämään ulkolämpötilan mukaan. Tiedän että tätä on toivottu useasti aikaisemminkin ja jotain useampaa MinimumHoursPeriod:n käyttämistä on ehdotettukin, mutta ei riittänyt ymmärrys miten sen tekisin.

Tämä on kyllä pohdinnassa vielä itselläkin. Yritän tehdä siihen jonkun "ovelan jipon", ettei tulisi liian vaikeaksi sekä koodata, että parametroida. Tällä hetkellä siis voi olla vain yksi tuollainen "pakkoperiodi". Pika-apu voisi olla, että tekee tuollaisen kahteen osaan jaetun jakson, missä pakotetaan vähintään 1 tunti molemmille puolille jaksoa.

Ei aivan optimoiduin tapa, mutta jeesaa aika varmasti.

1698666178887.png
 
Viimeksi muokattu:

Hotwater

Jäsen
Iahn pika-apu voisi olla, että tekee tuollaisen kahtene osaan jaetun jakson, missä pakotetaan vähintään 1 tunti molemmille puolille jaksoa.

Ei aivan optimoiduin tapa, mutta jeesaa aika varmasti.
Olipas täällä päässä pitkät piuhat, nyt vasta ymmärsin tuon jaetun jakson. Kyllä, tuosta on apua. Älä silti luovuta sen 'ovelan jipon' kanssa.
 

Jimi

Jäsen
Jostain syystä rank and price aktivoi 4 tuntia vaikka pyynti oli 3 rank allowed 1,2,3 Käytössä priority hours kaikki yö tunnit, priority hours rank 4 ja price modifier -1.12

Johtuuko siitä että eka tunti ilmeisesti alkoi 23:59?
 

Liitteet

  • IMG_9138.jpeg
    IMG_9138.jpeg
    239,3 KB · Katsottu: 84

Mikki

Hyperaktiivi
Jostain syystä rank and price aktivoi 4 tuntia vaikka pyynti oli 3 rank allowed 1,2,3 Käytössä priority hours kaikki yö tunnit, priority hours rank 4 ja price modifier -1.12

Johtuuko siitä että eka tunti ilmeisesti alkoi 23:59?

Enpäs osaa varmuudella sanoa syytä. Mutta epäilen erittäin vahvasti, että syynä on se, että hinta oli 0,00 molemipna tunteina 03:00 ja 04:00. Ja muutenkin hinnat hyvin lähellä nollaa kokoajan. Josko tuosssa "priceModifier" laskennassa joku pyöristyshomma tms. menee pieleen.

Kovin on ollut paljon nollaa hinnoissa noilla tunneilla....

1698847603203.png


Varsinkin jos toistuu, niin tutkitaanpas lisää.... :)
 

Tossunkorjaaja

Aktiivinen jäsen
Jostain syystä rank and price aktivoi 4 tuntia vaikka pyynti oli 3 rank allowed 1,2,3 Käytössä priority hours kaikki yö tunnit, priority hours rank 4 ja price modifier -1.12

Johtuuko siitä että eka tunti ilmeisesti alkoi 23:59?
Eikös tuo ole ihan ”oikein” eilen oli poikkeuksellisssti illalla halvemmat tunnit, kuin aamuyöstä. Se toki, että lämmittää ensin illalla ja heti 2.11 puolella uudestaan.

Itse sammutin manuaalisesti nuo iltatunnit, kun huomasin että aamuyöstä parin tunnin päästä on melkein ilmaista
 

Mikki

Hyperaktiivi
Eikös tuo ole ihan ”oikein” eilen oli poikkeuksellisssti illalla halvemmat tunnit, kuin aamuyöstä. Se toki, että lämmittää ensin illalla ja heti 2.11 puolella uudestaan.
Jimillä oli lämmittänyt 00:00 - 00:59 ja sitten 03:00 - 05:59. Eli neljä tuntia.

Toki tässä tuli samalla mieleen, että mikäs arvo on PriceAlwaysAllowed? Sehän on 0 oletuksena, että se olisi voinut poimia sen yhden lisätunnin. On nämä erikoisia ongelmia pohdittavaksi kun tuotteita myydään nolla-hintaan tai joskus miinuksellakin :)
 
Back
Ylös Bottom