jisotalo / shelly-porssisahko

Nordpool-pörssisähköohjaus Shelly-releisiin
https://jisotalo.fi/shelly-porssisahko
GNU Affero General Public License v3.0
40 stars 13 forks source link

Aina päällä rajan toiminta #31

Open HannuTJ opened 1 week ago

HannuTJ commented 1 week ago

Tämmöinen omituisuus: Kun maksimihinnaksi on asetettu avg ja päivän pörssikeskihinta on alle asetetun aina päällä rajan niin ohjaus noudattaa kuitenkin avg rajaa niin, että jos tuntihinta >avg mutta alle aina päällä rajan niin ohjaus menee pois päältä vaikka toteutumassa ohjaus näyttäisi olevan päällä mutta "Ohjaus nyt:POIS" ja "Ohjauksen selite: Hinta yli maksimirajan". Oheisessa kuvassa 16.11 päivän tila klo 10, aina päällä rajaksi asetettu 2c/kWh. Tämä tapahtuu joka tunnille missä tuo em mainittu ehto toteutuu.

Screenshot 2024-11-16 at 10 55 09
jisotalo commented 1 week ago

Moro, laitatko kuvan asetuksista vielä selvennykseksi

HannuTJ commented 1 week ago

Terve, tässä vastaava asetussivu -Hannu

la 16. marrask. 2024 klo 21.11 Jussi Isotalo @.***) kirjoitti:

Moro, laitatko kuvan asetuksista vielä selvennykseksi

— Reply to this email directly, view it on GitHub https://github.com/jisotalo/shelly-porssisahko/issues/31#issuecomment-2480742072, or unsubscribe https://github.com/notifications/unsubscribe-auth/BM7MKBWRO7DXLYC7ZYV7FSD2A6KGPAVCNFSM6AAAAABR4US37CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOBQG42DEMBXGI . You are receiving this because you authored the thread.Message ID: @.***>

jisotalo commented 1 week ago

Huomenta! Ei tainnut kuva tulla perille sähköpostin kautta. Saatko laitettua githubiin?

HannuTJ commented 1 week ago

Tulisiko nyt.

Screenshot 2024-11-16 at 23 29 23
jisotalo commented 1 week ago

Jes katsoin vähän tätä ja tosiaan on bugi, minkä johdosta tuossa ohjaustaulukossa näytetään väärin. Kiitos raportoinnista!

Jos tunnin hinta on alle aina päällä -rajan, ei tuota maksimihintaa tarkasteltu. Ohjauspuolella se toimi kuitenkin oikein, eli maksimihinta on aina rajoittava tekijä.

Tämä bugin sai siis selville näin, missä ei ole varsinaisesti mitään järkeä: image

Mutta tietysti käyttäessä avg maksimina se onkin yhtäkkiä mahdollinen skenaario.

Julkaisen korjauksen 3.0.1 -versiona, mutta täytyy ensin vähän aikaa testata. Jos haluat heti kokeilla itse niin tästä löytyy: https://gist.githubusercontent.com/jisotalo/93ed12ad87dd50f883cd2bf48cba08a6/raw/d43d76ff8e6ffc900955f6dc8bff0f08f5a47b5e/shelly-porssisahko.js

HannuTJ commented 1 week ago

Nyt ohjaustaulukko on maksihinnan mukainen mutta odotin että korjaus muuttaisi ohjauksen niin että aina päällä raja olisi rajoittava tekijä kun maksimihinta on pienempi kuin aina päällä hinta näin ei kuitenkaan edelleenkään ole.

jisotalo commented 1 week ago

Joo toiminta on juurikin toisin päin. Maksimihinta on rajoittava tekijä.

HannuTJ commented 1 week ago

Alkuperäinen bugi raporttini yritti kuvata sitä, että ohjaustaulukko näytti oikein sen mukaan miten oletin ko tilanteessa ohjauksen toimivan eli aina päällä rajan mukaan ja todellinen ohjaus olikin mielestäni väärin. Eikös tähän voisi lisätä "if -lauseketta" niin että kyseisessä tapauksessa aina päällä hinta on rajoittava, muutoin halpoina päivinä käy usein niin että keskipäivän aikaan ohjaus saattaa olla 6-8 peräkkäistä tuntia pois päältä kun avg hinta ylittyy.

HannuTJ commented 1 week ago

Tai siis niin, että korkeampi näistä kahdesta rajoittaa.

jisotalo commented 1 week ago

Täytyypä miettiä läpi. Skripti ollut jo yli vuoden monella käytössä niin ettei rikkoisi mitään olemassaolevaa.

HannuTJ commented 1 week ago

Hyvä, toivotaan että onnistuu

jisotalo commented 6 days ago

@HannuTJ koitin miettiä ja en oikein tiedä tästä. Minkä takia maksimihinta pitää rajoittaa keskiarvoksi, jos sitä ei kuitenkaan toteltaisi?

Eikö olisi parempi jättää maksimihinta pois. Tällöin otetaan halvimmat tunnit, oli kallista tai ei (eli sama lopputulos aika lailla). Ei tulisi taukoja keskelle päivää.

HannuTJ commented 6 days ago

Useimmiten avg huitelee jossain paljon korkeammalla kuin haluttu aina päällä hinta, esim 2c/kWh ja silloin tietysti avg-maksimihintaa totellaan. Jos jätän maksimihinnan pois niin silloin ohjaus on kaiken aikaa päällä kun tuntimäärä on 24h. Lämmityksen ohjauksessa käytän mielelläni mahdollisimman montaa tuntia mutta avg rajoittaisi että kaikkein kalleimmat tunnit siivotaan pois. Eli korkeampi näistä kahdesta rajoittavana: maksimi vs aina päällä toimisi loogisesti aina oikein.

jisotalo commented 6 days ago

Mitä jos käyttäisi vaan hintaraja-tilaa ja laittaisi rajaksi avg? Tällöin 24 tunnista kaikki keskiarvon alla on päällä.

HannuTJ commented 6 days ago

Ei toteuta tilannetta kun halpoina päivinä pörssisähkä on vaikkapa koko päivän 1c/kWh tai alle niin haluasin että ohjaus ei mene pois päältä kun avg ylittyy jos aina päällä raja 2c/kWh toteutuu, sehän tuon aina päällä rajan tarkoitus nimensä mukaisesti on vaikka tuntimääräksi olisi laitettu vaikka 8h.

HannuTJ commented 4 days ago

No niin, tänään 24.11 ohjaus pois klo 10-21 asetuksilla max=avg ja aina päällä 2c/kWh. Kommentoit, että toimii kuten suunniteltu mutta mielestän logiikka pettää kun aina päällä rajoituksen pitäisi olla absoluuttinen eikä riippua siitä miten max on asetettu. No täytynee elää tällä.

jisotalo commented 3 days ago

Koitappa pistää tämä skriptin //end jälkeen. Toimisiko siten miten ajattelit?


/**
 * Nostaa maksimihinnan vähintään aina päällä -rajaan
 */
//Alkuperäiset
let originalMax = [0, 0, 0];

function USER_CONFIG(inst, initialized) {
  if(inst < 0) {
    return;
  }

  //Vähän apumuuttujia
  const state = _;
  const config = state.c.i[inst];

  //Jos asetuksia ei vielä ole, skipataan (uusi asennus)
  if (typeof config.m2 == "undefined") {
    console.log("Tallenna asetukset kerran käyttäjäskriptiä varten");
    return;
  }

  //Tallenentaan alkuperäiset asetukset muistiin
  if (initialized) {
    originalMax[inst] = config.m2.m;

    console.log("Alkuperäinen max. hinta (#" + inst + "):", originalMax[inst]);
  }

  //Nostetaan maksimihinta aina päällä -rajaan
  config.m2.m = Math.max(
    config.m2.l == "avg" ? _.s.p[0].avg : config.m2.l, //aina päällä
    originalMax[inst] == "avg" ? _.s.p[0].avg : originalMax[inst] //max.
  );

  console.log("Käytetty max. hinta (#" + inst + "):", config.m2.m);
  state.si[inst].str = "Käytetty max. hinta: " + config.m2.m + " c/kWh";
}

Tämä vaan muuttaa asetussivulla sen maksimiarvon, eli jos tallentaa asetuksia pitää muistaa laittaa uusiksi avg siihen.

HannuTJ commented 2 days ago

Mahtavaa, näyttäisi toimivat kuten toivoin, täytyy vielä seurata eri asetuksilla ja päivien vaihtumista, toistaiseksi ok. Huomisen päivän toteuma on tietysti metsässä kun vertaa väärään maksimiin mutta korjaantuu oikeaksi kun vuorokausi vaihtuu, näin ainakin tapahtui eilisestä tähän päivään.