Open HannuTJ opened 1 week ago
Moro, laitatko kuvan asetuksista vielä selvennykseksi
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: @.***>
Huomenta! Ei tainnut kuva tulla perille sähköpostin kautta. Saatko laitettua githubiin?
Tulisiko nyt.
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ä:
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
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.
Joo toiminta on juurikin toisin päin. Maksimihinta on rajoittava tekijä.
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.
Tai siis niin, että korkeampi näistä kahdesta rajoittaa.
Täytyypä miettiä läpi. Skripti ollut jo yli vuoden monella käytössä niin ettei rikkoisi mitään olemassaolevaa.
Hyvä, toivotaan että onnistuu
@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ää.
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.
Mitä jos käyttäisi vaan hintaraja-tilaa ja laittaisi rajaksi avg? Tällöin 24 tunnista kaikki keskiarvon alla on päällä.
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.
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ä.
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.
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.
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.