- Keskustelun aloittaja
- #641
Kiitos testauksesta @kayttajatunnus. Mietinkin että skripti toimii kovemmilla lihaksilla kuin UI asetukset.
Follow along with the video below to see how to install our site as a web app on your home screen.
Huomio: This feature may not be available in some browsers.
Viime yöstä tällä neuvolla ollut toinen Shelly ohjauksessa ja sytyttämässä ledin, jonka sytyttyä Cozify tunnistaa 12 vuorokauden kalleinta tuntia (+0 asteessa) ja ohjaa VILPin sammuksiin ja lämmönpudotukset huoneisiin ja lattiapiireihin päälle.Ei ole vaikea muutos.... vaihdat nämä kaksi riviä toisinpäin (merkattu keltaisella), niin homma toimii noin kun haluat. Mutta sitten pitää ajatella myös "Rank" toisinpäin. Eli jos haluat vaikka neljä kalleinta tuntia releen päälle, niin asetat rankiksi 20.
Näin sitten kun on kallis tunti, API palauttaa 400 statuksen, mutta rele meneekin päälle. Ja jos Rank on vaikka 5, niin rajapinta palauttaa 200 ja sitten rele menee pois päältä.
Ja siis kyse näistä uusimmista versioista skriptiä:
![]()
Shelly/Shelly - Rank and Price limit.js at main · Spot-hinta-fi/Shelly
Shelly smart relay scripts to utlize api.spot-hinta.fi API's - Shelly/Shelly - Rank and Price limit.js at main · Spot-hinta-fi/Shellygithub.com
![]()
GitHub - Spot-hinta-fi/Shelly: Shelly smart relay scripts to utilize api.spot-hinta.fi API's
Shelly smart relay scripts to utilize api.spot-hinta.fi API's - Spot-hinta-fi/Shellygithub.com
katso liitettä 82472
joo tuli jotai väkerettyä, jaan koodia tänne jos joku muu haluaa kopsailla:Kiitoksia @riku.
Itse lähtisin rakentamaan ideaa cronilla ajetun bash skriptin varaan. Tämän tyyppisellä skriptillä hakisi 200/400 statustiedon.
![]()
Ja kutsu skriptissä tähän APIin:
(3 halvinta tuntia tai alle 5c hinta)
Jos skriptillä kutsuu sitten säätöä suoraan niin ei tarvisi oikeastaan muuta. Cronilla kerran tunnissa skrptin ajo.
#!/bin/bash
#pörssisähkön ohjaus järjestelmään versio 0.1 Riku B.
# lähd https://lampopumput.info/foorumi/threads/yksinkertainen-ohjelmistorajapinta-api-s%C3%A4hk%C3%B6n-p%C3%B6rssihinnan-hakemiseen.33938
#
# asetukset
#
#RANK: 1-24 rankki 24h kellon mukaan, minkä alle täytyy mennä, jotta ohjaus käynnistyy.
RANK=15
#HINTA: PRICE, minkä alle täytyy mennä, jotta ohjaus käynnistyy. HINTA SENTTEIN?^?
PRICE=30
# boosterHours, Tunnit, milloin ohjaus makaa päällä, ohittaa kaiken muun.
# pikku eroitetaan %2C esim 1,2,3 = 1%2C2%2C3
BOOSTERHOURS=2%2C3%2C4%2C5%2C6
# lokitiedostn sijainti
LOKITIEDOSTO="/tmp/porssisahko.log"
#yrityskerrat, kun tulee error:
laskuri=3
KELLO=$(date "+%d-%m-%Y %H:%M:%S")
countteri=1
until [ $countteri -gt $laskuri ]
do
STATUS=$(curl -s -o /dev/null -w '%{http_code}' https://api.spot-hinta.fi/JustNowRank/$RANK/$PRICE?boosterHours=$BOOSTERHOURS -H "accept: text/plain")
if [ $STATUS -eq 200 ]; then
echo "$KELLO Hinta on alle asetetun rajan, lyodaan varaaja paalle"
echo "$KELLO Hinta on alle asetetun rajan, lyodaan varaaja paalle" >> $LOKITIEDOSTO
sqlite3 /var/www/koti.db "UPDATE laitteet SET arvo=0 WHERE 5 = id"
break
elif [ $STATUS -eq 400 ]; then
echo "$KELLO Sahkon hinta ylittaa raja-arvon, ei kytketa varaajaa paalle talla kertaa."
echo "$KELLO Sahkon hinta ylittaa raja-arvon, ei kytketa varaajaa paalle talla kertaa." >> $LOKITIEDOSTO
sqlite3 /var/www/koti.db "UPDATE laitteet SET arvo=1 WHERE 5 = id"
break
else
echo "$KELLO Tuli error ei kytketä ohjauksa."
echo "$KELLO Tuli error ei kytketä ohjauksa.">> $LOKITIEDOST
fi
sleep 20
((countteri++))
done
Mites toi säätöprosentti meni? Asetetut tunnit 6 ja säätöprosentti 3 ja sääenneste -3. 6+(3x3%)=6,54 mutta AdjustedRank pysyy arvossa 6. Missä kohtaa pyöristyy seitsemään?
Nyt näyttää paremmalta ja lämpötilaennusteen desimaalit hyvä olla esilläSehän meni pieleen.... oli pyöristysvirhe koodissa. Korjasin sen mielestäni nyt. Ja on tuotannossa. Samalla lisäsin debug viestiin lämpötilaan desimaalit, kun laskenta menee oikeastaan tuon tarkemman lämpötilakeskiarvon mukaan.
Katsos näyttääkö nyt järkevämmältä.
Mnkälaisella Shellyn script riveillä shellyn saisi 'potkaisemaan' naapuri shellyn kytkimen päälle?
selaimeen kirjoitettuna se onnistuu rivillä
eli syntaxi on
http://[deviceIP]/relay/[channel]?[command]&[command]
Toi javascript on itselle täysin tuntematon maa. Jotain shelly.call("HTTP.POST",{.... ehkäpä??
Tarkoitus olisi tehdä viritys jossa porssisähkö Shelly käynnistäisi pellettipolttimen Shellyn, jos pörssisähkön hintaraja ylittää tietyn raja-arvon.
Minäkin jouduin pakon edessä vaihtamaan pörssisähköön reilu kuukausi sitten. Talo on ilmalämpöpumpulla ja sähkövastuksilla lämpiävä. Kulutuksia on ohjailtu yösähkön ja lämpöpumpun ajastuksilla yötunneille. Kun shellyjen avulla saa kuitenkin tarkkuutta ohjaukseen ja Mikin loistavalla APIlla tämä on tehty mahdolliseksi myös meille joilla koodaustaito on olematon niin innostuin tilaamaan nipun shellyjä itsellekin. Pienten alkukankeuksien jälkeen sain scriptit pelaamaan ja ne ovat parissa shellyssä napsutelleet releitä jatkoroikan perässä viime yöstä lähtien. Homma näyttää järkevältä muuten mutta pientä ihmetystä aiheuttaa toisen releen pitkä 9h vetoaika ao. scriptillä. Rele oli vetäneenä välin 00-01 ja 02-10. Laskeeko tuo "RankAdjusterPercentage" suoraan joka asteelle saman korotuksen
3h+0,17*3h*T
esim T=-7 -> 3+,17*3*7=6,57h
Vaiko "korkoa korolle"
3h*1,17^T
T=-7 -> 3*1,17^7=9h
Luulen tuon ensimmäisen vaihtoehdon olevan oikea ja ilmeisesti eilinen ennuste oli sen verta kylmä että parametrit tuotti 9 h vetoajan.
let SETTINGS_1 =
{
RelayIsInUse: true, // Change this to true/false depending if you want to use this relay or not
RankAtZeroDegrees: "3", // "Rank" (number of cheapest hours) when outdoor temperature is 0°C
RankAdjusterPercentage: "17", // Percentage how much "Rank" is adjusted when outdoor temperature changes by one degree
MinimumRank: "1", // Minimum 'Rank' when temperature goes above zero and Rank is getting smaller
PriceAlwaysAllowed: "1", // "Allow always cheap prices". Price when relay is always ON.
PostalCode: "96190", // Postal code (Finnish), which area temperature is used in calculations
BackupHours: ["00", "01", "02", "03", "04", "05", "06", "07", "23"], // Backup hours if API is not answering or Internet connection is down.
BoosterHours: "99", // During these hours relay is always ON.
Relay: "0", // Number of the relay within Shelly. Make sure this is correct
RelayName: "warehouses", // Whatever name for this relay. Used in debug logging mostly.
Inverted: false, // If "true", relay logic is inverted
Onkos sinulla uudet skriptit jotka ohjaa kerran tunnissa? Vanhemmat skriptit haki tiheämmin tiedon. Tuo rankin muutos on siksi mahdollinen kun esim tänään taitaa lämpö nousta lumisateen ajaksi, nostaen keskilömpöennustetta.Pohdiskelin että mikäs rajapintaa tai Shellyjä oikein vaivaa kun VILP sammuu tai käynnistyy kesken tunnin eikä tasatunnein pörssisähkön hinnan noustessa tai laskiessa. Ilmeisesti sääennuste päivittyy muulloin kuin tasatunnein ja dynaamisessa scriptissä voi AdjustedRank muuttua kesken tunnin niin että vastaus muuttuu 200/400 välillä?
@Mikki Onko mitään tehtävissä ettei tule tilannetta jossa Shelly pyytää esim. VILPiä käymään alle tunnin jakson?
katso liitettä 82762
Onkos sinulla uudet skriptit jotka ohjaa kerran tunnissa? Vanhemmat skriptit haki tiheämmin tiedon. Tuo rankin muutos on siksi mahdollinen kun esim tänään taitaa lämpö nousta lumisateen ajaksi, nostaen keskilömpöennustetta.
Hmm... Onko internetyhteyden monitorointi päällä? Tuo uusi wifi voisi selittää jotain toki ja jos monitorointi buuttasi shellyn?Ei ole tiedossa että olisi katkoja ollut. Eilen lisäsin talooni MESH -verkon, ei kai Shelly siitä ota nokkiinsa jos vaihtaa välillä tukiasemasta toiseen?
Tosin vaimo on ollut tänään yksin kotona, niin mistä sitä tietää vaikka olis vähän sähköt katkonutkin.
Shelly ei oletuksena käytä roamingia. Sitä ei saa edes päälle apista, vaan pitää surffailla Shellyn ip-osoitteeseen ja säätää roaming päälle. Huomasin että asentamani Shellyt jäivät roikkumaan testaus- tai asennuspaikan lähellä olevaan AP:hen kiinni.Ei ole tiedossa että olisi katkoja ollut. Eilen lisäsin talooni MESH -verkon, ei kai Shelly siitä ota nokkiinsa jos vaihtaa välillä tukiasemasta toiseen?
Tosin vaimo on ollut tänään yksin kotona, niin mistä sitä tietää vaikka olis vähän sähköt katkonutkin.
@Sammypiru
Etkös sinä ohjaa koko ajan samaa relay output?
Kaikissa näkyy olevan 0
Relay: "0", // Number of the relay within Shelly. Make sure this is correct
@Mikki voisi muuttaa githubiin relay id 0-3.
Tosin pitää huomata, että jos onkin esim Pro 2, scipti kaatunee
Oli Foreca tällä kertaa oikeammassa. YR.no näytti eilen että käy alimmillaan -8C ja Foreca -17C. Yöllä oli alimmillaan -15C ja pumpulla on aikamoinen lämmitysvelka kuitattavanaNyt muuten heittää yr.no ja Foreca ennusteet Helsinkiin melkein 10 astetta. Saa nähdä kumpi on oikeassa![]()
Erikoinen heitto stadin lämmöissä tosiaan. Ihan lähelle kirkkonummella siis eroa ei ennusteissa juuri ollut.Oli Foreca tällä kertaa oikeammassa. YR.no näytti eilen että käy alimmillaan -8C ja Foreca -17C. Yöllä oli alimmillaan -15C ja pumpulla on aikamoinen lämmitysvelka kuitattavana![]()
Oli Foreca tällä kertaa oikeammassa. YR.no näytti eilen että käy alimmillaan -8C ja Foreca -17C. Yöllä oli alimmillaan -15C ja pumpulla on aikamoinen lämmitysvelka kuitattavana![]()
Liekö noiden ennuste sitten ihan samaan lokaatioon, mene ja tiedä. Pienelläkin matkalla voi olla suuria eroja, siksi ennustemallit ehkäpä ottavat huomioon maastonmuodot ym. noissa paikallisennusteissa. Itselläni tämän aamun alin noteeraus -14 C, työkaverilla 2,5 km päässä -23 C. Molemmat mittaukset noin 2 metrin korkeudelta maanpinnasta, samanlaisilla pilvipalveluun datansa tallentavilla mittareilla. Liitteenä viimeisen 3 vrk lämpötilakäyrät näiltä mittauspisteiltä.Vastaavaa tosin ehkä vähän pienempää heittoa olen huomannut Ilmatieteenlaitoksen ja yr.no välillä. Olikohan viime vai edellinen yö, kun ensimmäinen ennusti -16 asteen pakkasia ja jälkimmäinen vain -11 asteen.
Ei tuota ohjausta voi mielestäni liian tiukallekaan vetää ettei ala kämppä kylmenemään.Vastaavaa tosin ehkä vähän pienempää heittoa olen huomannut Ilmatieteenlaitoksen ja yr.no välillä. Olikohan viime vai edellinen yö, kun ensimmäinen ennusti -16 asteen pakkasia ja jälkimmäinen vain -11 asteen.
Puuhastelen tässä just pohjia mitattuun ja ennustettuun lämpötilaan perustuvaa ohjausta. Kyllähän tuo alkaa jo ohjaukseen vaikuttaa. Ehkä voisi ratkaista lähimmät tunnit siten, että esim. seuraavien kolmen tunnin ennustetta korjataan, jos ero nyt mitattuun arvoon on liian suuri.
Ilmatieteen laitokseltahan saisi ennusteita myös avoimena datana. Oliko havainnot siis niin, että FMI antaisi parempaa dataa kuin Yr.no?
Joo. FMI:llä(kin) taitaa olla nykyään 2,5km hilakoko HARMONIE-mallissa, joten aivan totta, että järkevää ymmärtää mallien rajat.Joo pitää muistaa että yksikään lämpötilaennuste miltään firmalta ei ota tarkasti huomioon paikallista olosuhdetta. Lämpötila voi vaihtua myös ihan lyhyelläkin etäisyydellä paljon kun mennään mäen päällä olevalta talolta 300 metrin päähän montun pohjalla olevan talon luokse.
Minusta YR.NO on hyvinkin luotettava lähde. Mutta toki tämä ei ole eksaktia tiedettä, eli jonain päivänä joku toinen voi olla parempi ennustuksessa ja toisena toinen. Aika vaikeaksi menee päättää että kumpaa kulloinkin noudattaisi.
Tai toisinpäin sanoen... JOS onnistuu yhdistämään YR.NO ja FMI malleista täydellisen ennustemallin, niin tuo on hiivatan kallis ja rahanarvoinen juttu. Ei kannata julkistaa opensourcena![]()
Home Assistantin oma yr.no-integraatio näyttää minulla todella virheellisiä lukemia. Esim. nyt iltapäivälle integraation ennuste on 0-2 astetta plussalla, kun yr.nosta suoraan koordinaateilla haettuna lämpötilat on luokkaa -7 astetta. Integraation paikkakunta on kuitenkin oikein.
Miltäs sinun postinumerolla ennuste näyttää tämän mun APIn kautta:
Että jotta laskeeko se paikkakuntaa paremminn sijainnin ja sitä kautta myös hakisi paremman ennusteen.