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

Sammypiru

Vakionaama
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ä:

katso liitettä 82472
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.

Toista Shellyä ohjataan etsimään kuusi halvinta tuntia, jolloin VILP käynnissä demand control 100% ja huoneiden ja lattiapiirien lämpötilatavoitteet ”normaalissa”.

Jos kumpikaan ei toteudu, kuusi halvinta tai kaksitoista kalleinta, VILP käy demand control 10% ja lattiapiirien veden lämpötilaa pudotetaan muutama aste.
 

riku

Aktiivinen jäsen
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.
joo tuli jotai väkerettyä, jaan koodia tänne jos joku muu haluaa kopsailla:
Toi on raaka-versio, testiin menossa. pitää lisätä viel et se puhuu noi asiat kämpän keskuskuulutukseen jos tulee muutos. jnejne

Koodi:
#!/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

edit: koodia korjattu ääkkösiä hieman poistettu ym
 
Viimeksi muokattu:

Mikki

Hyperaktiivi

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?

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

Sammypiru

Vakionaama
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ä.
Nyt näyttää paremmalta ja lämpötilaennusteen desimaalit hyvä olla esillä
 

Cold

Jäsen
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.
 

Mikki

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

Siis on Shelly, jossa ei voi ajaa skriptejä? Mutta tuohan on siis "GET" requesti, eikä "POST". Siis noissa mun skripteissä tehdään jo GET requesteja, niin katsele näkisitkö siitä mallia.
 

Cold

Jäsen
Syy siihen että ajattelin että yksi Shelly ohjaa tota toista on se, että olen muuttanut aikaisempaa 'sulake' scriptiä niin, että jos sähkön yö-, tai päivähinta ylittää tietyn rajan, pysäytetään pörssisähköscripti ja käynnistetään pellettipoltin. Toki siinä polttimen Shellyssä voisi olla oma scripti, mutta sitten joutuisin laittamaan noi samat rajahinnat molempiin Shellyihin.
Juu se "GET" oli oikein ja sillä toimii. Vielä olen yrittänyt löytää missä Shellyn 'user'-nimi annetaan salasanan olen kyllä löytänyt.
Kiitos avusta ja nopeasta vastauksesta!!
 

mobbe

Vakionaama
Olisiko apua tuosta skriptistä jossa ip osoitteessa 192.168.1.101 oleva shelly kytkeytyy on/off toisen shellyn ohjauksella .Käytän tätä aurinkosähkön siirtoon varaajan vastuksille kun tietyt ehdot täyttyy

let REMOTE = {
ip: '192.168.1.101',
relay: '0'
};
// CONFIG END

// no need to change anything below this line..

Shelly.addEventHandler(
function (event, user_data) {
if (typeof event.info.state !== 'undefined') {
if (event.info.id === 0 && event.info.state === true) {
Toggle(REMOTE.ip, REMOTE.relay, 'on');
}

if (event.info.id === 0 && event.info.state === false) {
Toggle(REMOTE.ip, REMOTE.relay, 'off');
}
} else {
return true;
}
},
);

function Toggle (ip, relay, command) {
Shelly.call(
"http.get",
{ url: 'http://' + ip + '/relay/'+ relay + '?turn=' + command},
function (response, error_code, error_message, ud) {
print(JSON.stringify(response));
},
null
);
};
 

kayttajatunnus

Aktiivinen jäsen
Meni nyt itsellä jäihin tämä projekti maalämmön osalta kun ei Nibestä löydy järkevää tapaa skipata tunteja ja kun on kiinteähintainen sopimus, keskityn toistaiseksi energiankäytön pienentämiseen. Palaan säätöjen pariin keväällä 24 kun soppari loppuu

IV-koneessa toki pyörii kalleimpien tuntien skippaus kotona/poissa kytkimen kautta.

Tässä on kuitenkin tehty sen verran hyvää duunia että mielellään testailen Shellyllä aina kun tulee uusia versioita.
 

RauskiH

Vakionaama
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
 

Sammypiru

Vakionaama
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

11 astetta pakkasta nostaa tuon alkuperäisen rankin 3 noilla prosenteilla 9 tuntiin eli 3+11x17% = 8,61h minun ymmärryksen mukaan.

Tällä voit tarkastaa mikä on adjusted rank juuri tällä hetkellä, juuri tällä tarkastushetkellä näyttäisi olevan 10 tuntia ulkolämpötilaennusteen ollessa -14,44'C.
 

Sammypiru

Vakionaama
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?

12.12.22.jpg
 

Mikki

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

Sammypiru

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

Ei tämä taida se ihan uusin olla?


let SETTINGS_1 =
{
RelayIsInUse: true, // Change this to true/false depending if you want to use this relay or not
RankAtZeroDegrees: "13", // "Rank" (number of cheapest hours) when outdoor temperature is 0°C
RankAdjusterPercentage: "8", // Percentage how much "Rank" is adjusted when outdoor temperature changes by one degree
MinimumRank: "12", // Minimum 'Rank' when temperature goes above zero and Rank is getting smaller
PriceAlwaysAllowed: "3", // "Allow always cheap prices". Price when relay is always ON.
PostalCode: "32700", // Postal code (Finnish), which area temperature is used in calculations
BackupHours: ["99"], // 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: "Kalliit tunnit", // Whatever name for this relay. Used in debug logging mostly.
};

// ***********************************
// SETTINGS for RELAY 2 - change these
// ***********************************
let SETTINGS_2 =
{
RelayIsInUse: false, // Change this to true/false depending if you want to use this relay or not
RankAtZeroDegrees: "5", // "Rank" (number of cheapest hours) when outdoor temperature is 0°C
RankAdjusterPercentage: "15", // Percentage how much "Rank" is adjusted when outdoor temperature changes by one degree
MinimumRank: "3", // Minimum 'Rank' when temperature goes above zero and Rank is getting smaller
PriceAlwaysAllowed: "3", // "Allow always cheap prices". Price when relay is always ON.
PostalCode: "00100", // Postal code (Finnish), which area temperature is used in calculations
BackupHours: ["00", "01", "02", "03", "20", "21"], // Backup hours if API is not answering or Internet connection is down.
BoosterHours: "20,23", // During these hours relay is always ON.
Relay: "0", // Number of the relay within Shelly. Make sure this is correct
RelayName: "Big boiler", // Whatever name for this relay. Used in debug logging mostly.
};

// ***********************************
// SETTINGS for RELAY 3 - change these
// ***********************************
let SETTINGS_3 =
{
RelayIsInUse: false, // Change this to true/false depending if you want to use this relay or not
RankAtZeroDegrees: "5", // "Rank" (number of cheapest hours) when outdoor temperature is 0°C
RankAdjusterPercentage: "15", // Percentage how much "Rank" is adjusted when outdoor temperature changes by one degree
MinimumRank: "3", // Minimum 'Rank' when temperature goes above zero and Rank is getting smaller
PriceAlwaysAllowed: "3", // "Allow always cheap prices". Price when relay is always ON.
PostalCode: "00100", // Postal code (Finnish), which area temperature is used in calculations
BackupHours: ["00", "01", "02", "03", "20", "21"], // Backup hours if API is not answering or Internet connection is down.
BoosterHours: "20,23", // During these hours relay is always ON.
Relay: "0", // Number of the relay within Shelly. Make sure this is correct
RelayName: "Livingroom", // Whatever name for this relay. Used in debug logging mostly.
};


// **************************************
// MAIN SCRIPT - NO NEED TO TOUCH USUALLY
// **************************************

// Variables needed to control execution
let currentHour = "";
let Relay_1_Executed = false;
let Relay_2_Executed = false;
let Relay_3_Executed = false;

// Main timer, which calls the API to decide actions on relays
// Only one successful execution per hour per relay is done.
Timer.set(60000, true, function (ud) {

// Calling the status to get the current time
Shelly.call("Shelly.GetStatus", "", function (res) {

// Check if hour has changed
let hour = res.sys.time.slice(0, 2); // f.ex. "21:34"
if (currentHour !== hour)
{
currentHour = hour;

// Force relay "executed" if it is not in use
if (SETTINGS_1.RelayIsInUse === true) { Relay_1_Executed = false } else { Relay_1_Executed = true; };
if (SETTINGS_2.RelayIsInUse === true) { Relay_2_Executed = false } else { Relay_2_Executed = true; };
if (SETTINGS_3.RelayIsInUse === true) { Relay_3_Executed = false } else { Relay_3_Executed = true; };
}

// Do not run anymore if execution has been successfull for all relays
if (Relay_1_Executed === true && Relay_2_Executed === true && Relay_3_Executed === true)
{
print("Already executed this hour successfully.");
return;
}

// First relay control is executed
if (Relay_1_Executed === false)
{
Shelly.call("HTTP.GET", { url: GetDynamicUrl(SETTINGS_1) }, function (res, error_code, error_msg, ud)
{
print("Performing control for relay: " + SETTINGS_1.RelayName);
let result = RunResponse(error_code, error_msg, res.code, SETTINGS_1.Relay, SETTINGS_1.RelayName, SETTINGS_1.BackupHours);
if (result === true) Relay_1_Executed = true;
}, null);
}

// Second relay control is executed
if (Relay_2_Executed === false)
{
Shelly.call("HTTP.GET", { url: GetDynamicUrl(SETTINGS_2) }, function (res, error_code, error_msg, ud)
{
print("Performing control for relay: " + SETTINGS_2.RelayName);
let result = RunResponse(error_code, error_msg, res.code, SETTINGS_2.Relay, SETTINGS_2.RelayName, SETTINGS_2.BackupHours);
if (result === true) Relay_2_Executed = true;
}, null);
}

// Third relay control is executed
if (Relay_3_Executed === false) {
Shelly.call("HTTP.GET", { url: GetDynamicUrl(SETTINGS_3) }, function (res, error_code, error_msg, ud) {
print("Performing control for relay: " + SETTINGS_3.RelayName);
let result = RunResponse(error_code, error_msg, res.code, SETTINGS_3.Relay, SETTINGS_3.RelayName, SETTINGS_3.BackupHours);
if (result === true) Relay_3_Executed = true;
}, null);
}
}, null);
}, null);


// This controls the relay actions based on the result from the API call
function RunResponse(errorCode, errorMessage, responseCode, relay, relayName, backupHours)
{
// Network errors
if (errorCode !== 0)
{
print("Network error occurred: " + errorMessage);
print(errorCode);
RunBackupHourRule(backupHours, relay, relayName);
return false;
}

if (responseCode === 200)
{
print("Relay '" + relayName + "' OFF");
Shelly.call("Switch.Set", "{ id:" + relay + ", on:false}", null, null); // Relay OFF
return true;
}
else if (responseCode === 400)
{
print("Relay '" + relayName + "' ON");
Shelly.call("Switch.Set", "{ id:" + relay + ", on:true}", null, null); // Relay ON
return true;
}
else
{
print("Executing backup rule for relay: " + relayName);
RunBackupHourRule(backupHours, relay, relayName);
return false;
};
}

// This is executed if API did not respond properly. This is NOT considered as successful execution
function RunBackupHourRule(backupHours, relay, relayName)
{
let currentHourIsListed = false;
for (let i = 0; i < backupHours.length; i++)
{
if (backupHours === currentHour) { currentHourIsListed = true; }
}

if (currentHourIsListed)
{
print("Error situation. Turn relay '" + relayName + "' ON during backup hours.");
Shelly.call("Switch.Set", "{ id:" + relay + ", on:true}", null, null); // Error situation. Relay ON.
}
else
{
print("Error situation. Turn relay '" + relayName + "' OFF outside backup hours");
Shelly.call("Switch.Set", "{ id:" + relay + ", on:false}", null, null); // Error situation. Relay OFF.
}
}

// Builds URL to call the API
function GetDynamicUrl(settingsNow)
{
let url = "https://api.spot-hinta.fi/JustNowRankDynamic";
url += "?rankAtZeroDegrees=" + settingsNow.RankAtZeroDegrees;
url += "&rankAdjusterPercentage=" + settingsNow.RankAdjusterPercentage;
url += "&minimumRank=" + settingsNow.MinimumRank;
url += "&priceAlwaysAllowed=" + settingsNow.PriceAlwaysAllowed;
url += "&postalCode=" + settingsNow.PostalCode;
url += "&boosterHours=" + settingsNow.BoosterHours;
return url;
}
 

Mikki

Hyperaktiivi
Kyllä tuo uusin on. Mutta onko ollut sähkökatkoja tänään? Se aloittasi uudestaan ohjauksen kun Shelly käynnistyy uudestaan.

Meillä oli kolme lyhyttä katkoa tänään. Caruna Espoon alueelle Kirkkonummella ja Siuntiossa pätki.
 

Sammypiru

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

Mikki

Hyperaktiivi
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.
Hmm... Onko internetyhteyden monitorointi päällä? Tuo uusi wifi voisi selittää jotain toki ja jos monitorointi buuttasi shellyn?
 

haraldh

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

mobbe

Vakionaama
Shellyn käyttöliittymän ulkoasu muuttui uusimman firmware päivityksen 12.0 jälkeen melkoisesti ensinäkemältä että mitä vi..enkä löytänyt hyödylilisiä uusia ominaisuuksia käytettäväksi mutta tuohon ohjattavaan kuormitukseen valitsin relay kun se uutta on eikä oletuksena ollut en tiedä miksi on noin paljon vaihtoehtoja.
 

Liitteet

  • firmw.JPG
    firmw.JPG
    41,7 KB · Katsottu: 158
Viimeksi muokattu:

Mikki

Hyperaktiivi
Skripti-editori ainakin vaikuttaa toimivan paremmin... eli teksti ei "katkea" ja vaakaskrolli toimii paremmin. UI ihan selkeän oloinen on.. mutta tosiaan aika iso muutos näin yllättäen.
 

seppos

Jäsen
@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
 

Sammypiru

Vakionaama
@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

Ohjaan scriptillä yhtä relettä ja jos on vain yksi rele, niin tuossa kaiketi voi olla nolla.
 

Mikki

Hyperaktiivi
Uusissa skripteissä on se parametri jolla rele otetaan käyttöön. Oletuksena kaikki on poissa päältä.

1671133452571.png
 
Viimeksi muokattu:

Mikki

Hyperaktiivi
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 :D
Erikoinen heitto stadin lämmöissä tosiaan. Ihan lähelle kirkkonummella siis eroa ei ennusteissa juuri ollut.

Mutta säästöähän tuo oli.. keli leutonee nyt :)
 

Sukke

Aktiivinen jäsen
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 :D

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.
 

Temez

Aktiivinen jäsen
Ilmatieteen laitokseltahan saisi ennusteita myös avoimena datana. Oliko havainnot siis niin, että FMI antaisi parempaa dataa kuin Yr.no?
 

tet

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

Liitteet

  • trendit_3vrk.png
    trendit_3vrk.png
    75,9 KB · Katsottu: 93

kayttajatunnus

Aktiivinen jäsen
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.
Ei tuota ohjausta voi mielestäni liian tiukallekaan vetää ettei ala kämppä kylmenemään.
 

Mikki

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

Sukke

Aktiivinen jäsen
Ilmatieteen laitokseltahan saisi ennusteita myös avoimena datana. Oliko havainnot siis niin, että FMI antaisi parempaa dataa kuin Yr.no?

Tuossa mitatut lämpötilat ja yr.no ennustamat lämpötilat. Mitatut taitaa olla 15 minuutin aikavälillä ja ennustetut yr.no sen hetkinen ennustettu lämpötila (1 h ennustelämpötila). Näissä 15. ja 16.12. pudotuksissa FMI ennusti muistaakseni vielä vähän mitattuja kovempiakin pakkasia, jolloin ennusteiden välillä on jo jonkinmoinen ero pahimmillaan. Voi olla, että yr.no ennustettu lämpötila on ajoittain enintään tunnin pielessä - en muista jaksoinko viilata ennustetta ihan kohdilleen nykyhetkeen. Käyttäisin FMIn tietoja, mutta osaaminen niiden hyödyntämiseksi taisi loppua kesken tai en ymmärtänyt lukemaani.

mitatut_ennustetut_lampotilat – kopio.jpg
 

Temez

Aktiivinen jäsen
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.
Joo. FMI:llä(kin) taitaa olla nykyään 2,5km hilakoko HARMONIE-mallissa, joten aivan totta, että järkevää ymmärtää mallien rajat.

(Ihan sivumainintana, että täällä FMI:n numeerisista sääennustemalleista: https://www.ilmatieteenlaitos.fi/saamallit-ryhma )
 

Mikki

Hyperaktiivi
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 :)
 

Sukke

Aktiivinen jäsen
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 :)

Juu, eihän noissa lopulta isoa eroa tule ja tuskin vaikuttaa merkittävästi ohjauksiin. Aika paljon hajontaa ja vaihtelua luultavasti muistakin lähteistä koko prosessissa. Mielenkiintoista kuitenkin nähdä minkälaisia eroja on ennusteen ja pihalta mitatun välille tulee.

Kun muistelen FMIn ennustetta vielä tarkemmin, taisi olla vieläpä niin, että ns. perusennuste (mediaani) oli aikalailla yr.no-mukainen. Eroa oli enemmän FMIn käyttämän "metereologin lämpötilaennuste" mukaiseen käyrään - tämä voi selittää ajoittaisia eroja ennustissa. Käyrä on nähtävissä ainakin paikkakuntakohtaisissa 15 vrk ennusteissa.

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.
 

Mikki

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

Lappanen

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

Täällä omalla postinumerolla api ilmoittaa -9,4C ja todellinen -11,3C eli ei mikään paha heitto. Itse menen tosin pelkällä kiinteällä rank-määrällä + halvalla hintarajalla, mutta ehkä pakkasten kirratessa pidempään voisi tuota lämpötilasäätöäkin kokeilla.
 
Back
Ylös Bottom