Spot-hinta.fi - Yksinkertainen ohjelmistorajapinta (API) sähkön pörssihinnan hakemiseen

-Teme-

Aktiivinen jäsen
Shellyllä on tosiaan rollout menossa Gen2 laitteille 1.0.0 firmikseen.
Se on suunnilleen puolella välissä, joten kestänee vielä n.2vk että saataville kaikille laitteille.
Laitteille EI ole saatavana rollback / tietyn firmisversion valintaa
 

Lappanen

Vakionaama
Mulla tämmöset lämmitykselle ja käyttövedelle (2 kpl Shelly Plus 1), oli puhetta että "vanhat" scriptit ei uusimmalla firmiksellä ehkä toimisi niin viitsisikö joku tsekata onko tämä "vanhaa" mallia vai pitäisikö pelittää normaalisti FW:n päivityksenkin jälkeen?

let CONFIG = { Paivitystaajuus: 2 * 60000, }; // kaksi minuuttia

function Ohjaus(){
Shelly.call("HTTP.GET", { url: "https://api.spot-hinta.fi/JustNowRank/6/3"},
function (res, error_code, error_msg, ud)
{
if (res.code === 200){
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); // Rele pois
}
else if (res.code === 400) {
Shelly.call("Switch.Set","{ id:0, on:true}", null,null); // Rele päälle
}
else {
Shelly.call("Switch.Set","{ id:0, on:false}", null,null); // Virhetilanne. Mitä tehdään?
};
}, null);
}

Timer.set(CONFIG.Paivitystaajuus, true, function (ud) { Ohjaus(); }, null);

let CONFIG = {
Paivitystaajuus: 1 * 60000,
};
function Valvonta(){
Shelly.call("Script.GetStatus", { id:"1"},
function (res, error_code, error_msg, ud)

{
if (res.running === true){
print("Scripti toimii");
}
else {
print("Scripti EI toimi");
Shelly.call("Script.Start", { id:"1"}, null, null);

};
},
null); }

Timer.set(
CONFIG.Paivitystaajuus,
true,
function (ud) {
Valvonta();
},
null
);
 

Mikki

Hyperaktiivi
Mulla tämmöset lämmitykselle ja käyttövedelle (2 kpl Shelly Plus 1), oli puhetta että "vanhat" scriptit ei uusimmalla firmiksellä ehkä toimisi niin viitsisikö joku tsekata onko tämä "vanhaa" mallia vai pitäisikö pelittää normaalisti FW:n päivityksenkin jälkeen?

On nuo vanhaa mallia. Mutta kyllä sekin taitaa 1.0.0 versiolla periaatteessa toimia. Mutta uusin vastaava skripti, mitä tässä testailen vielä ennen lopullista julkaisua, on täällä. Tämä siis toimii vain firmware 1.0.0 versiosta eteenpäin:


Jos siihen laittaisi samat tuntimäärät ja hintarajat, niin suunnilleen näin asetukset pitäisi olla. Eli kuusi halvinta tuntia ja kolmen sentin aina sallittu raja. Nuo varatunnit tietty ei ole pakollisia.
1692943112647.png
 

Mikki

Hyperaktiivi
Pientä päivitystä vielä skripteihin (ja rajapintaan). Eli tuohon "PriceAlwaysAllowed" parametriin voi nyt antaa arvoksi myös "average", eli käytännössä hintarajaksi päivittäisen keskiarvohinnan.

Skriptit ovat vielä täällä:

Ja kuten Twitteriin/X:ään pistin, aion tehdä uuden version ulkolämpötilaohjatusta skriptistä. Haluan eroon siitä prosentti-säädöstä, kun se on melko hankala käsittää. Pistän siihen monipisteohjauksen, kun suora lämmityskäyrä ei toimi oikein sujuvasti aina.
 

Mikki

Hyperaktiivi
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.
 

Nippis

Tulokas
Miten Shelly-Monitoring.js scriptin pitäisi toimia. Testasin tänään siten, että sisäverkko oli kunnossa mutta katkaisin yhteyden internettiin.
Ohjelma ilmoitti. että kaikki hyvin.
Onko ohjelma tarkoitettu bootata shelly silloin kun "mokkulalla" ei ole yhteyttä lähiverkkoon vaikka lähiverkko olisikin kunnossa?

T. Nippis
 

Mikki

Hyperaktiivi
Miten Shelly-Monitoring.js scriptin pitäisi toimia. Testasin tänään siten, että sisäverkko oli kunnossa mutta katkaisin yhteyden internettiin.
Ohjelma ilmoitti. että kaikki hyvin.
Onko ohjelma tarkoitettu bootata shelly silloin kun "mokkulalla" ei ole yhteyttä lähiverkkoon vaikka lähiverkko olisikin kunnossa?

T. Nippis

Eli kaikki on hyvin jos skriptit pyörii mitä se valvoo. Jos internet yhteys on valvonnassa niin se katsoo on laitteella yhteys auki shelly cloudiin. Ja se ei heti buuttaaa shellyä jos yhteys on katki vaan siinä on periaatteessa minuuttilaskuri kuinka kauan odotetaan yhteyttä.
 

Samuvaan

Tulokas
Jos haluaa laittaa hinnaksi 0,1 eurosenttiä niin laitetaanko muotoon 0,1 vai 0.1 (piste vai pilkku)?

PriceAllowed = "0,1"; // Heating is always on, when price is below this (Euro cents). Use "-99" if not wanted
vai
PriceAllowed = "0.1"; // Heating is always on, when price is below this (Euro cents). Use "-99" if not wanted
 

Mikki

Hyperaktiivi
Jos haluaa laittaa hinnaksi 0,1 eurosenttiä niin laitetaanko muotoon 0,1 vai 0.1 (piste vai pilkku)?

PriceAllowed = "0,1"; // Heating is always on, when price is below this (Euro cents). Use "-99" if not wanted
vai
PriceAllowed = "0.1"; // Heating is always on, when price is below this (Euro cents). Use "-99" if not wanted

Tuossa taitaa nyt olla itseasiassa niin, että vain kokonaissentti toimii. Voin kyllä vilkaista onnistuisiko helposti desimaalienkin salliminen. Aika pienistä eroista toki rahassa puhutaan onko 0,1 vai 0 senttiä. Tuhannessa kWh:ssa ero tekee euron. :)
 

shellypm

Jäsen
käytän omaa softaa sellyssä ja olen pyörittänyt sitä tällä:

tässä kuitenkin ongelma omiin vaatimuksiin.
hinta ohittaa rank arvon.

voisiko tehdä esim uuden api komennon?
esim:
tähänä säännöksi että molemmat ehdot, rank sekä price pitää täyttyä jotta saa ohjauksen?

tarkoitus on käyttää vain halpoja rank tunteja jos hinta niissä alle rajan.
6h riittää ja pienempikin kun tehoa kytketään 15kw kun tarve.
eli edes jokapäivä en tarvitse lämpöä kun varaajaa on niin iso.
omalla koodilla tämä ei nyt toimi aivan oikein.
helpottaisi ohjelmaani...
 

Mikki

Hyperaktiivi
käytän omaa softaa sellyssä ja olen pyörittänyt sitä tällä:

tässä kuitenkin ongelma omiin vaatimuksiin.
hinta ohittaa rank arvon.

voisiko tehdä esim uuden api komennon?
esim:
tähänä säännöksi että molemmat ehdot, rank sekä price pitää täyttyä jotta saa ohjauksen?

Hmm.... kävisiköhön niin onnellisesti, että tämä toimisi tuohon:

Eli tuo "maxPrice" parametri samaksi kuin priceAlwaysAllowed. Jos hinta on yli tuon 3 senttiä, niin tulee aina "400"-response. Huolimatta rankista. Itseasiassa veikkaan että logiikka toimii :)
 

shellypm

Jäsen
Hmm.... kävisiköhön niin onnellisesti, että tämä toimisi tuohon:

Eli tuo "maxPrice" parametri samaksi kuin priceAlwaysAllowed. Jos hinta on yli tuon 3 senttiä, niin tulee aina "400"-response. Huolimatta rankista. Itseasiassa veikkaan että logiikka toimii :)
ei toimii, ohjaa päälle vaikka rank nyt 12.. hinta ohjaa yli.
hinta ei saisi ohjata yli..
 

shellypm

Jäsen
yksi keino olisi erottaa api kutsut koodiin rank ja price mukaan erikseen mutta tämä tuplaisi palvelimen kuormituksen turhilla kyselyillä
 

shellypm

Jäsen
toinen yleinen ongelma näissä scripteissä on jos yhteys katkeaa niin script kaatuu ja jättää ohjauksen päälle.
scripti kaatuu jos ei saa api tietoa.
siksi siirsin vikatila katkaisun koodin alkuun.
toimii hyvin jos käyttää relettä, mutta suoralle kuormalle en tuota suositte tai kohta on shellyn rele palanut
 

shellypm

Jäsen
Ei tuollaiset kyselyt vaikka kerran tunti missään tunnu. Anna palaa vaan.
tästä päästään siihen kun hinta voi pomppia 5c -->30c.
siksi käytän 3min päitystä, joilloin max 5% tunnista voi mennä kovalle hinnalle.
15kw kovalla hinnalla maksaaa jo talven aikana euroja...
 

Mikki

Hyperaktiivi
tästä päästään siihen kun hinta voi pomppia 5c -->30c.
siksi käytän 3min päitystä, joilloin max 5% tunnista voi mennä kovalle hinnalle.
15kw kovalla hinnalla maksaaa jo talven aikana euroja...
Jos sinulla on Shelly jo firmwaressa 1.0.0, niin siinä on Date objekti suoraan, että voit loopata ja katsoa milloin tunti vaihtuu ja tehdä sitten kyselyt kun tunti vaihtuu. Katso vaikka minun uusista koodeista jos saat idean siitä kiinni.

Kun et tee kyselyjä palvelimelle välillä, niin sitten ei serveri kuormitu yhtään liikaa.
 

shellypm

Jäsen
on uusin. pitää tutkia kun vasta asensin sen.
kaksi shellyä käytös nyt kahes lämmitysjärjestelmässä, eli puhutaa 30kw yhteis tehosta jota ohjataan...
 

Niksula

Tulokas
Päivitin Shellyn uusimpaan tarjolla olevaan (beta-versioon) ja lisäilin sinne scriptikirjastoon osoitteen, mutta se antaa tällaisen virheilmoituksen:
1693931377805.png

Johtuukohan tämä nyt beta-versiosta vai jostain muusta?
Versio on 1.0.2-beta1, eikä tähän jostain syystä nyt muuta versiota edes tarjota vanhan 0.14.1 jälkeen.
1693932149267.png
 

tk-

Aktiivinen jäsen
Päivitin Shellyn uusimpaan tarjolla olevaan (beta-versioon) ja lisäilin sinne scriptikirjastoon osoitteen, mutta se antaa tällaisen virheilmoituksen:
katso liitettä 88284
Johtuukohan tämä nyt beta-versiosta vai jostain muusta?
Versio on 1.0.2-beta1, eikä tähän jostain syystä nyt muuta versiota edes tarjota vanhan 0.14.1 jälkeen.
katso liitettä 88285
Tästä olikin eilen puhetta tuolla facebookin Shelly-ryhmän skriptichatissa.

1.0.2-kirjasto käyttää semmoista uutta json-muotoista tiedostoa pohjana, eli tilanne korjaantuu kun Mikki ehtii semmoisen tuonne rakentaa. Url pitää sitten vain päivittää. Skriptin saanee sitä odotellessa copypastella paikalleen.
 

Mikki

Hyperaktiivi
Päivitin Shellyn uusimpaan tarjolla olevaan (beta-versioon) ja lisäilin sinne scriptikirjastoon osoitteen, mutta se antaa tällaisen virheilmoituksen:

Johtuukohan tämä nyt beta-versiosta vai jostain muusta?
Versio on 1.0.2-beta1, eikä tähän jostain syystä nyt muuta versiota edes tarjota vanhan 0.14.1 jälkeen.

Joo, täytyy korjata homma kun Shelly tekee tämmöisen pikkuisen yllärimuutoksen taas. Joka tietenkään ei ole taaksepäin yhteensopiva.
Mennee tässä hetki, mutta tuolta voi hakea skriptit: https://github.com/Spot-hinta-fi/Shelly/tree/main/Scripts

Ja sitten on vielä se "kiva" homma, että Shelly porrastelee mihin laitteisiin saa uuden version. Eipä näytä nyt saavan minun laitteisiin uusinta versiota. Mutta tiedän kyllä mitä pitää tehdä.
 

tk-

Aktiivinen jäsen
Joo, täytyy korjata homma kun Shelly tekee tämmöisen pikkuisen yllärimuutoksen taas. Joka tietenkään ei ole taaksepäin yhteensopiva.
Mennee tässä hetki, mutta tuolta voi hakea skriptit: https://github.com/Spot-hinta-fi/Shelly/tree/main/Scripts

Ja sitten on vielä se "kiva" homma, että Shelly porrastelee mihin laitteisiin saa uuden version. Eipä näytä nyt saavan minun laitteisiin uusinta versiota. Mutta tiedän kyllä mitä pitää tehdä.
Se hyvä puoli tässä sentään on, että uuteen kirjastoon ei tartte lisätä ennen 1.0.0 -yhteensopivia skriptejä.

Mutta olisi näistä jotain virallisempaakin kautta mukava saada tietoa…
 

shellypm

Jäsen
Hmm.... kävisiköhön niin onnellisesti, että tämä toimisi tuohon:

Eli tuo "maxPrice" parametri samaksi kuin priceAlwaysAllowed. Jos hinta on yli tuon 3 senttiä, niin tulee aina "400"-response. Huolimatta rankista. Itseasiassa veikkaan että logiikka toimii :)
tämä ongelma korjaantui.
kysely toimii nyt ok ja kaikki vakaa.
joko api heitti false tietoa tai selain jolla testasin lagasi tiedoissa, mutta api komento toimii nyt ja ohjaa kuten pitää
 

shellypm

Jäsen
okkei..
katos mikä kusee.. ei vaikuta scriptiin:



Varoitus: mahdollinen tietoturvariski

Firefox havaitsi mahdollisen turvallisuusuhan, eikä jatkanut sivustolle sahko.tk. Jos käyt tällä sivustolla, henkilökohtaisia tietojasi kuten salasanoja, sähköpostiviestejä tai luottokorttitietoja saatetaan yrittää varastaa.

Mitä voit tehdä?

Ongelma johtuu todennäköisesti sivustosta, etkä voi korjata sitä itse. Voit ilmoittaa ongelmasta sivuston ylläpitäjälle.

Suojatun yhteyden muodostaminen Firefoxilla epäonnistui​


--
siis turvallista, mutta herjaa.
 

Mikki

Hyperaktiivi
Siis tuo sahko.tk ei liity mitenkään tähän Spot-hinta.fi hommaan. Se on täysin eri systeemi.

Mutta ei tuolla sivulla nopeasti katsottuna muuta ole kuin sertifikaatti ongelma. Oliskohan vaihtamassa domain nimeä tms.
 

tet

Hyperaktiivi
joo..

lisään viel toistona et ei liity api palvelimeen

Aina jaksaa hämmästyttää, miksi ääkkösiä sisältäviä nimiä ei käytetä, onhan fi-domainissa toimineet ääkköset jo iät ja ajat. Eli osoite "sähkötutka.fi" olisi aivan mahdollinen mutta jostain syystä tuostakin on haluttu tehdä sähkötutkan sijasta sahkotutka.
 

tk-

Aktiivinen jäsen
Aina jaksaa hämmästyttää, miksi ääkkösiä sisältäviä nimiä ei käytetä, onhan fi-domainissa toimineet ääkköset jo iät ja ajat. Eli osoite "sähkötutka.fi" olisi aivan mahdollinen mutta jostain syystä tuostakin on haluttu tehdä sähkötutkan sijasta sahkotutka.
Ehkä tässä halutaan vähän säästää, domain maksaa kuitenkin vähän. Käytännössä pitää kuitenkin olla myös tuo ääkkösetön vaihtoehto olemassa, kun se on niin iskostunut ajatus, että niin sen kuuluu olla. Ja lisäksi jos koneluentaa tarjoaa, niin ääkkösten kanssa ehkä joutuu vähän enemmän tekemään töitä noissa erilaisissa rajapintakutsuissa.

Meillä on sekä ääkkösellinen että ääkkösetön versio, mutta tuo ääkkösellinen vain uudelleenohjaa tuohon perinteiseen. Spot-hinta on brändätty hyvin kun koko asiaa ei tarvitse miettiä!
 
Viimeksi muokattu:

Jimi

Jäsen
priorityHours parametrilla saat suunnilleen tuon mitä haluat. Voit asentaa tuon rank-price skriptin kahteen kertaan ja laitat päälle kolme sääntöä samaan releeseen. Kaksi toisesta skriptistä ja yhden toisesta.

Listaat vain eri priorityHours niihin ja sitten säännöt mitä haluat. Sellainen huomio tähän tosin että kun ajanjakso vaihtuu on ensimmäinen tunti vähän epämääräinen kun skriptien suoritusjärjestys ei ole taattu.

Minulla on kehityslistalla tämän ongelman poistoon "executionHours" mikä yksinkertaistaisesti ohittaa suorituksessa ei listatut tunnit. Silloin tuo ensimmäinenkään tunti ei ole epämääräinen.
”Voit asentaa tuon rank-price skriptin kahteen kertaan ja laitat päälle kolme sääntöä samaan releeseen. Kaksi toisesta skriptistä ja yhden toisesta.”

Tuo ei tullut edes mieleen.
Miten asennetaan koko scripti useaan kertaan ? kopioidaan koodi peräkkäin ??
 

Mikki

Hyperaktiivi
”Voit asentaa tuon rank-price skriptin kahteen kertaan ja laitat päälle kolme sääntöä samaan releeseen. Kaksi toisesta skriptistä ja yhden toisesta.”

Tuo ei tullut edes mieleen.
Miten asennetaan koko scripti useaan kertaan ? kopioidaan koodi peräkkäin ??
Ei laiteta koodia peräkkäin, vaan ihan samalla tavalla kuin lisäät ensimmäisen skriptin, laitat toisenkin.

Joko sen kirjaston kautta tsi lisää-skripti napilla.

Shellyssä voi olla max. Kolme erillistä skriptiä ajossa yhtäaikaa.
 

Mikki

Hyperaktiivi
Kirjoittelin uusiksi "minimal" vedenlämmitysskriptin ja yhdistin siihen myös yötuntilämmityksen mahdollisuutena. Skriptistä on versio täällä testattavaksi:


Erityisen iloinen olen, että tämä alkaa olemaan nimensä veroinen... siis MINIMAL. Tuossa koko tiedostossa on vain 33 riviä, sisältäen kommentit ja muut. Ei ole enää pitkä... puolet lähti edellisen version koodista pois :)
 

Mikki

Hyperaktiivi
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.
 

Sammypiru

Vakionaama
Mielestäni selkeä.

- Onko -/+ 10, 20, ja 30 lukittava vai onko mahdollista saada nekin säädettäviksi?
- Onko mahdollista tehdä scriptiä niin, että jos -/+ 10, 20 ja 30 lämmitettävien tuntien määrän kohdalle kirjoittaa vaikka 99, niin ko. pistettä ei käytetä. Ei jos koku haluaisi ohjata lämmitystä vaikka vain kolmella pisteellä niin se olisi myös mahdollista?
 

Mikki

Hyperaktiivi
Mielestäni selkeä.

- Onko -/+ 10, 20, ja 30 lukittava vai onko mahdollista saada nekin säädettäviksi?
- Onko mahdollista tehdä scriptiä niin, että jos -/+ 10, 20 ja 30 lämmitettävien tuntien määrän kohdalle kirjoittaa vaikka 99, niin ko. pistettä ei käytetä. Ei jos koku haluaisi ohjata lämmitystä vaikka vain kolmella pisteellä niin se olisi myös mahdollista?
Ajattelin pitää nuo pisteet kiinteänä. Siksi laitoin ne seitsemän ohjauspistettä. Tuota en ole miettinyt, että voisi jonkun pisteen jättää välistä.... olisikohan sille tarvetta kun on aika helppo arvoida mitä se tuntimäärä keskimmäisessä pisteessä olisi. Mutta kun koodailen serveriä, niin voin pitää tätä ajatusta mielessä jos tulisi helposti.
 

shellypm

Jäsen
lyhyt kuin voi:

function Vesi(){
Shelly.call("HTTP.GET", { url: "https://api.spot-hinta.fi/JustNowRa...,8,9,10,11,12&priceAlwaysAllowed=3&maxPrice=6"},
function (res, error_code, error_msg, ud){
Shelly.call("Switch.Set","{ id:0, on:false}", null,null);
if (res.code === 200){
Shelly.call("Switch.Set","{ id:0, on:true}", null,null);
print("Power on!");
};
}, null); }
Timer.set(5 * 60000, true, function (ud) { Vesi(); }, null);


peruspohjaa jos joku haluaa soveltaaa omaa scriptiä ni tossa hyvä alku

älä käytä ilman apurelettä!
 
Viimeksi muokattu:

tet

Hyperaktiivi
Ajattelin pitää nuo pisteet kiinteänä. Siksi laitoin ne seitsemän ohjauspistettä. Tuota en ole miettinyt, että voisi jonkun pisteen jättää välistä.... olisikohan sille tarvetta kun on aika helppo arvoida mitä se tuntimäärä keskimmäisessä pisteessä olisi. Mutta kun koodailen serveriä, niin voin pitää tätä ajatusta mielessä jos tulisi helposti.

Saattaa tulla Kittilästä kitinää, että mihinkäs ne -40 C ja -50 C pisteet ovat unohtuneet. :p
 
Back
Ylös Bottom