Vaihdettiin kierros
97 käyttäjää paikalla
Muista katsoa myös paikallaolijat!
Etusivu | Haku | Käyttäjälista | Rekisteröidy | Ohjeet
Etusivu -> Yleinen keskustelu -> Kotinäyttö
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Kotinäyttö
Lähetetty: 16.9.2022 22:30 Muokattu viimeeksi: 15.1.2023 00:47 Tässä yhdistyvät lopulta seuraavat ketjut: Porakaivopumpun asennusta Sähkömittarin pulssien lukeminen Vesimittarin pulssien lukeminen Ilmalämpöpumpun asennus itse (kirjoittamatta vielä) Eiköhän pihavalotkin tähän ängetä jotenkin Lämmön talteenotto savukaasuista saunankiukaassa (kirjoittamatta vielä) Tuon softan jalostamista lienee hyvä jatkaa vain yhdessä ketjussa. Lisätty/työnalla: - Ilmalämpöpumpun ottotehon monitorointi (tehty) - Vesivaraajain/vessan patterin ohjaus yösiirtotariffin mukaan (tekeillä) (tehty) - Kattotuulettimen ohjaus triakilla tuvan lämpötilaerojen mukaan (tekeillä juuri nyt), luovuttu - Logitusta striimataan vain, jos on tullut uusi rivi - ei kaikkia rivejä uudestaan ja uudestaan (tehty) - Ulko/sisälämpötilojen monitorointi samaan graafiin ilmalämpöpumpun ottaman tehon kanssa (tekeillä) Ostin 25 kpl 1-wire antureita DS18B20 joltain saksalaiselta eBay myyjältä. Ihmettelin vain miksi se alkaa käryymään heti virtoihin laitettaessa. lopulta selvisi, ettei noita kannata ostaa halvinta laatua. Jossain kiinalaisessa hikipajassa väärennetään ja leimataan jostain ilmaisia perustransistoreja tuon leimoilla. Voi vittu nyt ![]() ![]() - Veden ulkokierto on poistettu käytöstä ja analoginen lämpömittarikin lähtee tässä jossain vaiheessa (tulee talvi ja kiinnostus loppu toistaiseksi) - Ilmalämpöpumpun ottaman tehon osuus kokonaistehosta eri värillä reaaliaikaisen tehon kulutuksen graafiin (äsken sain idean) - Laskennallinen COP: tiedetään ottoteho, sisäyksikön imuilman lämpö, puhalluslämpö, puhallusnopeus (valmistajan taulukosta), ilmankosteus (tehty, ilmankosteus saadaan kun opettelen dht22 anturin lukemisen ja käytön) Todennäköisesti tilaan seuraavat anturit kalliilla jostain suomalaisesta putiikista, en jaksa odottaa niitä taas ikuisuutta. Empä muutenkaan tarvitse aluksi kuin kolme: tuvan ylälämpö, tuvan alalämpö, ulkolämpö, no ehkä mahdollisesti ILPin puhalluksen lämpö eli neljä (4) kpl. Myös vesimittariketjussa oleva paineenalennusventtiilin asennus odottaa vielä. Molempien vesien mittarointi menee kanssa uusiksi ja toteutetaan hieman järkevämmällä tavalla. Vedän uuden kylmävesiputken saunasta lähtevälle kylmälle vedelle, sitä ennen on karkeasuodatus, paineenalennusventtiili ja haara kuumalle. ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 16.9.2022 23:00 |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 15.1.2023 00:02 Tämmöinen näkymä on nykyään. Poistin tuulettimen ohjauksen tyystin kokonaan - käytännössä sen on oltava täysillä jatkuvasti tai sitten keksittä'vä toisenlainen tuuletin... Varaajaa ohjataan lataustilanteen ja kellonajan mukaan, jos varaajan lataus laskee alle 30 % päiväsähkön aikana, laitetaan se päälle automaattisesti ja päälläolo jatkuu aina seuraavaan päivään. (päällepakotuksen voi myös perua painamalla sitä uudestaan). Mielenkiintoista tässä on nyt vain tuo hyvinkin vääristynyt suhde yö/päiväsähköllä. Kirjaimellisesti tuosta nähdään, etttä persnettoa tulee jatkuvasti ![]() ![]() Näiden kirjoitusten teko on hyvinkin terapeuttista, kun edellistä kappaletta kirjoittaessani hoksasinkin mikä tässä nyt mättää: Kun innostuin yösähköstä ja laskeskelin toteutunutta kulutusta PenaSäätiöiden laskurilla, tein sen ainoastaan siirtohinnoilla. Nivos Oyn hinnasto on jotain 4 snt / 2.6 snt yö/päivä. 1-aika tariffilla hinta on sama kuin päivällä. Tämän pakan sekoittaa kuitenkin nyt myös tuo energian myynti 2-tariffilla ja siinä hinnasto onkin astetta ovelampi. Yön hinta on n. 14.9 snt, päivähinta on 22.9 snt, suht huima ero! MUTTA! 1-aika mittauksen jatkuva hinta olisikin ollut vain n. 19 snt / kWh. Tämä nostaa hintaa yöllä ja laskee hintaa päivisin. Kuitenkin päivästunteja on 15 kpl ja yötunteja 9 kpl ![]() ![]() Jos pelkkä siirto olisi kyseessä, siinä tulisi pientä säästöä jo mutta energian myyntihinnan erot vetää koko homman pakkaselle ja kovaa! Pyytänen jossain vaiheessa sähkönmyyjää vaihtamaan takaisin 1-aika mittaukseen. Voi kyllä olla mahdollista, ettei vaihtoa anneta tehdä, kun edellisestä vaihdosta on alle vuosi. Siinä tilanteessa ei voi mittään! Harrastukset maksaa ![]() Mutta parasta tässä on nyt kaikki puitteet kuormanohjaukseen myös tunneittain, jos pörssisähköön on siirtyminen takaisin joskus. Tuosta kuvasta nähdäänkin että joulun ja uudenvuoden jälkeen pörssisähkön hinta on ollut niin alhainen, jotta siitäkin tulee vielä lisää persnettoa! Untitledfyyrtlzt.png ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 15.1.2023 00:09 Muokattu viimeeksi: 15.1.2023 04:59 Graafi ilmalämpöpumpun kulutuksesta ja sähkön hinta, kiinteä hinta ja kulutus. ILP kulutusta seurataan muistaakseni tunneittain rullaavalta 7 päivältä. Hifistelyn vuoksi myös keskimääräinen teho lasketaan ja piirretään, joka havainnollistaa hieman paremmin meneekö nyt "paljon vai vähän". Ennen joulua vielä tuo kiinteän käyrä oli niin ihastuttavan halpa verrattuna spot-hintoihin, tämän vuoden puolella on ollut aivan toisin ja se näkyykin rullaavissa laskureissakin. tein juuri äsken tuon päivitetyn yö/päivä vertailun, koodia meni uusiksi suht paljon, mutta nyt on järkesitetty hieman niitä energian hintojen käsittelyä koodissa. Otsakkeen alla lukeva euromäärä tulee vielä pelkästä päivätarffin hinnasta. Aiemmassa kuvassa oleva ilmalämpöpumpun laskennallinen lämmitysteho tulee imu ja puhallusilman delta T ![]() Laskennallinen lämmitysteho: // Puhallusteho m3/h 800/720/570/620/560/500/450 (((obj['sisa_puhallus'] - obj['parvi']) * 800 * 1.25) / 3600).toFixed(2) Kehityssuuntana ohjelmalle olen siirtynyt hiljaksiin minimoimaan backend puolella yksiköiden laskemisen ja pyrin ennemmin tarjoilemaan datan mahdollisimman raakana selaimelle, jossa vasta tehdään laskutoimitukset ja muut hommat raa'oista pulssien lukumääristä. Mutta voitte vain kuvitella miten suuri sekamelska tämä on, kun tuo aatesuuntaus on tullut vasta pitkällä kehityksen edettyä. Lisäksi tietyt arvot ovat pakko laskea palvelimen puolella, jottei niiden logittaminen olisi riippuvainen selaimen päälläolosta Untitledzkvbbiob.png ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 21.1.2023 08:12 Muokattu viimeeksi: 21.1.2023 09:15 Voehan perseen suti!Huomasin sattumalta, etten ollut 1-aika tariffiin summannut ollenkaan siirtohintaa - vain pelkän energian hinnan! ![]() ![]() Nyt uusista luvuista voidaan nähdä, että tämä 2-aika systeemi sittenkin säästää hieman! ![]() Mutta pörssisähköön verraten persnettoa tulee ja kovvaa! ![]() Untitledctcmxgve.png ![]() Tarkkasilmäiset saattavat huomata, ettei yö+päivä != Kumulatiivinen kulutus, pohdiskelin tämän syytä ja lopulta totesin koodissa, jossa ajetaan toiminnot tunnin vaihtuessa, siellä on kokonaislaskurin ja päivä/yö laskurin välillä yksi logitusrivi. Logitusrivissä on muistaakseni sekunnin sleeppi, joten uskoisin siihen katoavan n. 0.5 kWh pitkällä aikavälillä. Toisaalta myös kokonaiskulutus kaikkinensa ja yö+päivä lasketaan molemmat eri mekanismeilla ... Mutta tämä on kyllä niin monimutkainen soppa ettei mitään jakoa ![]() Tuossa esimerkki kuvaamaan hyvin kuinka sekava koko vitun soppa on: ulosta('kulutusajakauma', "<span style='color: OrangeRed;'>Päivätunnit: <b>" + (obj['pulssit_paiva'] / 10000).toFixed(1) + "</b> kWh, <b>" + ((obj['pulssit_paiva'] / 10000) * kokonaishinta_paiva).toFixed(2) + "</b> EUR</span>, <span style='color: blue;'>Yötunnit: <b>" + (obj['pulssit_yo'] / 10000).toFixed(1) + "</b> kWh, <b>" + ((obj['pulssit_yo'] / 10000) * kokonaishinta_yo).toFixed(2) + "</b> EUR, </span><span style='color: magenta;'>== <b>" + ((obj['pulssit_paiva'] / 10000) + (obj['pulssit_yo'] / 10000) + (obj['piirturi_pulssit'] / 10000)).toFixed(1) + "</b> kWh (<b>" + (((obj['pulssit_paiva'] / 10000) * kokonaishinta_paiva) + ((obj['pulssit_yo'] / 10000) * kokonaishinta_yo)).toFixed(2) + "</b> EUR </span>" + ",<br /><span style='color: " + paivaVaiYo_color + "'>Kuluvalta " + paivaVaiYo + ": <b>" + (obj['piirturi_pulssit'] / 10000).toFixed(3) + "</b> kWh, <b>" + ((obj['piirturi_pulssit'] / 10000) * energian_hinta_nyt).toFixed(2) + "</b> EUR</span>, hinta 1-aikamittauksella: <b>" + ((obj['pulsseja_laskettu'] / 10000) * (kokonaishinta_yksAika)).toFixed(2) + "</b> EUR" ![]() no se pretagihan hajottaa tän sivun noin pitkällä rivillä... ei voi käyttää ![]() Sit esim. tuo tehonäyttö joka siis oli ensimmäinen asia jota tällä tein, jos tekisin sen nyt, puskisin SSE:n kautta vaan mittarin pulssiväliä (eli taajuutta), josta hetkellinen teho saadaan laskettua selaimen puolella, enkä kuten nyt, eli laske ja loggaa pitkää litanijaa, jota lähetetään kilowatteina verkon ylitse. Muuten kyllä käsittelen sähköä ja vettä pulsseina sen minkä pystyy ja muutan vasta selaimessa human-readableksi. Sit pitäis ehkä miettiä myös jotain tablettia tai muuta laitetta jonka voisin laittaa seinälle näyttämään tuon jatkuvasti. Kosketusnäyttö on oltava, jotta selaimeen voi tehdä lisää käyttöliittymää. Kuumanveden kuutiohinta näyttää pyörivän siinä 18 euron kieppeillä, tosin jos vertailee hintoja kerrostalon tai muun kaukolämmön vesihinnastoon, on niissä usein kuutiohinta 65 asteisen veden mukaan, mutta itse elämme ja totumme tämän kanssa tarkoituksella 85 asteiseen veteen. Varaajain suhteen yksi asia mikä pitäisi kyllä tehdä, voisin sinne sittenkin vetää aivan ehdan 5x1.5 syöttöjohdon. Otan kaikki vastukset käyttöön viimeistään, jos tuota pitää alkaa suoraan pörssituntien mukaan ohjaamaan. Se onkin mielenkiintoista tehdä älyä siihen huomioimaan: latausasteen varaajassa, kriittiset pisteet pakkokäytölle, laskemaan monenko tunnin lämmitys tarvitaan esim. 50 % latauksesta täyteen 3 kW teholla, tuntien hinnan jakauman vuorokauden sisällä ja päätös lämmitystunneista, siirtohinnan tariffin päättäminen .. päätös lämmitystunneista ei olekaan aivan niin yksiselitteinen asia kuin äkkiseltään luulisi. ![]() Parhaimmillaan tunnit saa oikeana vuorokauden aikana tietää seuraavaksi 1.5 vuorokaudeksi, tällöin on punnittava kuinka tyhjäksi varaajan antaa laskea odottaessa niitä halvimpia tunteja jotka siintää kaukana. Sen lisäksi, voi yrittää miettiä siihenkin älyä ylläpitää esim. vain 50 % latausta "takuuvettä" ja tehdä lopullinen täyteen lataus vasta aivan halvimman tunnin kohdalla. Itse asiassa nyt kun ajatukset lentää, niin voisinhan miettiä siihen tuon 5-7 kW vastuksen vaihtamista. 7 kW vastuksella varaaja latautuisi tyhjästä --> täyteen kahdessa (!) tunnissa! Vastuksia saan työni puolesta kaikenlaisia erinlaisia ja varmasti istumaan paikoilleen. Parametrejä ohjaukseen voisi olla: max_alaraja, riskin oton määrän suuruus latauksen vajavaisuuteen, agressiivisuus halvimpiin tunteihin/veden riittävyyden takaamisen suhde ja näiden kaikkien edellä mainittujen parametrien suhde hinnan vaihteluun X määrästä halvimpia tunteja. Eli ei anneta 1 halvimmalle tunnille painoarvoa yhtään, jos halvimman ja viiden halvimman tunnin hintaero on esim. alle 10 %, tällöin todennäköisyys astuu peliin ja pelaa varman päälle varsinkin jos lataus on alhainen. Myös toimintastrategiaa voi muuttaa näytöltä, esimerkiksi saunapäivänä voidaan klikata moodi päälle, jossa - latauksen ollessa tietyn verran alle tietyn määrän - sallitaan kalliimman sähkön käyttäminen turvaamaan pitkät suihkuttelut. Se on tietysti harmillista, ettei euroissa mitattavaa säästöä saa kovinkaan kummoisesti, vaikka kuinka kikkailee. Kulutus vaan yksinkertaisesti on niin alhaista. Mut sit voin laittaa sen kuution pöntön pihalle ja siihen ladataan koko päivän lämmöntarve yhden tunnin aikana! ![]() ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 21.1.2023 09:32 Pistetään nyt vielä tämän hetkinen koodi kokonaisuudessaan, tosin luulen ettei se kovin monia taida kiinnostaa mutta pysyypä sit tallessa itsellänikin.. paremmin .. ja nyt käytän poikkeuksellisesti kolmannen osapuolen palvelua, jotta saan syntax hightlightingin siihen ![]() Selaimen puoli: https://pastebin.com/bB5wYLfQ Palvelinpuoli: https://pastebin.pl/view/096bdf21 Ja pastebiniin ei sitten saannutkaan tuota toista, varmaan johtuen kirosanoista ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 21.1.2023 23:59 Muokattu viimeeksi: 22.1.2023 00:05 Tulikin tässä koko päivä tehtyä tätä edelleen. Nyt tuossa on mobiililaitteen näyttöön soveltuva html asettelu/teksti ja muut skaalautuu esim. taplettiin mainiosti. Plottly vaihtui chartJS:ään, alkoi vituttaa sen plotlyn hitaus ja se, että suurin osa siihen liittyvästä keskustelusta ja ohjeistuksesta puidaan pythonin päälle rakennettuihin graafeihin - javascriptiä, jota itse käytän, on huomattavasti harvinaisempaa. Lisäksi tuo on jotenkin paljon paremmin istuvan näköinen noin. Tosin en tiedä miten tuo ulkoasu tulee muuttumaan vielä jatkossa. Lisäksi tässä chartJSssähän on käsittääkseni - jos ei nyt aivan ominaisuutena, niin ainakin melkein reaaliaikaisen grafiikan piirto SSE:n kautta. Ulkoanturin 1-wire pätkii vielä kovin, en ole tehnyt sille mitään, vähän heilutellut johtoja. 1-wirekin tahtoo olla hieman nirso, jos dataväylä on kovin epäsynmetrisesti tehty ja täällä se on tehty. Jatkossa myöskään ilmalämpöpumpun puhalluslämpöä ei tarvitse logittaa, on tullut jo selväksi että lämpötila otetaan hyvin pienellä lämpötilaerolla ja energia siirtyy ennemmin suuren ilmavolyymin ansiosta ilmasta pumppuun. N. 1 aste on suunnilleen aina sen pumpun puhaltama ilma kylmempää kuin ulkoima. Tämä taas johtuu pyrkimyksestä minimoida huurtuminen ja sulatusjaksot. Anturit on ulkoyksikön imu ja puhalluspuolella. Sit myös, ulos menevien antureiden lukeminen saa joskus ILPin energiamittariin haamupulsseja, jolloin tehonkulutus nousee hetkellisesti 45 kW tasolle ![]() Untitledanibuxqs.png ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 5.2.2023 05:08 On tämä taas ollut työmaa saatana! Olen tunti kaupalla opetellut JS:n buttoneiden käyttämistä muokkaamaan piirretyn grafiikan tietoja sekä kolunut ChartJS saloja. Olen kyllä hieman pettynyt siihen, syntaksi on vaihtunut jossain versiomuutoksessa ja oisko 50 % netin syövereistä löytyvistä ohjeista vääriä??? ![]() ![]() Mut en nyt lähe hevillä vaihtamaan sitä, mutta kyllähän sen käyttö tuntuu olevan aivan saatanan hankalaa, varsinkin jos on vajaaälyinen kuten minä. (lapsuudessa saatu lausunto psykiatriselta osastolta) Myös muita muutoksia on tehty front-endin teknisessä toteutuksessa. Aiemmin olin alkanut tallentaa ILP:n hetkellistä ottotehoa palvelimen puolella, jonka voin sujauttaa tuohon lämpötilagraafin yhteyteen, vaan tulipas sellainen mieleen: kodin_hengetär() ajaa itsensä suunnilleen kerran sekunnissa. Voisin luoda temparrayn, johon poimin niitä hetkellisen ottotehon lukemia. heartbeat() kun ajaa itsensä minuutin välein ja kirjoittaa mittauksen aikana listaan hetkellisen ottotehon, voisi se mielestäni taustalla jatkuvasti laskea rullaavaa keskiarvoa joka sitten kirjoitetaan spot-ottotehon taulukkoon minuutin hetkellisenä keskiarvona. Vaihtoehtoinen tapa on laskea keskiarvoa minuutti minuutilta, eli joka sydämmensykkeen tullessa kirjoittaa saadun keskiarvon ylös ja sen jälkeen nollaa temppiarrayn. En oikein tiedä kummalla menetelmällä pääsee parempaan lopputulokseen, vaikkakaan tää koko homma tuntuu muutenkin pyörivän pelkkien likiarvojen ympärillä, ettei turhaan tarkkuuteen kannata varmaan muutenkaan pyrkiä. Siihen aiheeseen liittyen voisin vielä mainita minkä ajatuksen siemen on päässäni itänyt heartbeat()iin liittyen, voisin ensinnäkiksi ottaa odotusajan pyöristämisen pois, jotta tapahtumat menisi aivan täysin minuutin sykronissa ja sen lisäksi mielenkiintoinen lukuarvo pitkällä aikavälillä olisi aikapoikkeaman mittaaminen, toisin sanoen siis heartbeat() aikaa lasketaan ja verrataan oikeaan kelloon, ja lopulta saadaan sille jättämän tai edistyksen ajallinen suuruus. Mahdollisesti voidaan esim. päivittäin pakottaa synkroniin oikean kellon kanssa. Tämän ajatuksen sain sähköverkosta, jossa myös mitataan taajuuden vaihtelusta aiheutuvaa aikapoikkeamaa ja sitä kuinka paljon verkko on edellä tai jäljessä oikeaa kellonaikaa. Untitledvoeevtoz.png ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 19.2.2023 07:52 Muokattu viimeeksi: 19.2.2023 07:53 Lasketaan keskimääräinen liittymäteho; kokonaispulssit / käyttötunnit. Muutetaan header-palkin väriä ja läpikuultavuutta hetkellisen tehon suhteessa keskimääräiseen tehoon: let teho_keskimaarin = ((obj['pulsseja_laskettu'] * 0.0001) / (obj['meta']['tuntilaskuri'] + (d.getMinutes() / 60))).toFixed(3); // huomioidaan kuluvan tunnin minuutit mukaan keskiarvon pituuteen //let teho_keskimaarin = 0.25; let vari, r = 0, g = 0, b = 0, t = 0.5; if (obj['realTimeMonitorLog'] < teho_keskimaarin) { t = precise(1 - (obj['realTimeMonitorLog'] / teho_keskimaarin), 2); g = 255; } if (obj['realTimeMonitorLog'] >= teho_keskimaarin) { t = precise(1 - (teho_keskimaarin / obj['realTimeMonitorLog']), 2); r = 255; } if (t > 1) { t = 1; } if (t <= 0) { t = 0.02; } vari = `rgba(${r}, ${g}, ${b}, ${t})`; console.log(vari); 0 ja keskitehon välinen alue = vihreän läpinäkyvyys vihreästä valkoiseen, keskitehon ja 2* keskitehon välinen alue punaisen peittävyys tehon noustessa ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 3.3.2023 23:35 Muokattu viimeeksi: 3.3.2023 23:52 Luonnostelin jotain seuraavan kaltaista ohjaamaan varaajaa: hinnat_tanaan = [5,6,6,6,10,10,10,10,10,10,10,10,10,10,10,10,1,10] hinnat_huomenna = [32.0,2.1,11,99999,1] tunti = 0 kaytettavatHinnat = hinnat_tanaan[tunti:-1] + hinnat_huomenna[0:-1] print(kaytettavatHinnat) ka = sum(kaytettavatHinnat) / len(kaytettavatHinnat) tuntienTarve = 12 lammitysteho = 1.9 kayntitunnit = [] varaajan_latausaste = 10 for i in range(len(kaytettavatHinnat)): if kaytettavatHinnat[i] < 10: print("Päällä: tunti = " + str(i) + " hinnalla: " + str(kaytettavatHinnat[i])) kayntitunnit.append(i) continue if kaytettavatHinnat[i] < min(kaytettavatHinnat) * 1.2: print("Päällä: tunti = " + str(i) + " hinnalla: " + str(kaytettavatHinnat[i])) kayntitunnit.append(i) continue for i in range(len(kaytettavatHinnat)): if i in kayntitunnit: #print("Skipataan tunti: " + str(i)) continue if len(kayntitunnit) < tuntienTarve and kaytettavatHinnat[i] < ka * 0.5: print("Kalliilla -50ka: tunti = " + str(i) + " hinnalla: " + str(kaytettavatHinnat[i])) kayntitunnit.append(i) continue if len(kayntitunnit) < tuntienTarve and kaytettavatHinnat[i] < ka: print("Kalliilla: tunti = " + str(i) + " hinnalla: " + str(kaytettavatHinnat[i])) kayntitunnit.append(i) continue print(kayntitunnit) print("KA: " + str(ka)) Ideana on ensin käydä lävitse montako tuntia tietyn raja-arvon alempia hintoja löytyy. Esim kaikki alle 10 c (siirtoineen veroineen) tunnit voidaan lämmittää varaajaa. Samoin kaikki tunnit, jotka ovat max. 20 % suurempia kuin halvin tunti. Varaajan lämmitystarve on koko ajan tiedossa ja se elää käytön ja lämmityksen mukaan. Jos vuorokaudessa on 3 tuntia varmaa lämmitystä eikä vettä käytetä ollenkaan, varaaja käy vain ne tunnit. Jos taasen käytetään varaaja kerrallaan puolilleen, nousee lämmitystuntien tarve ja otetaan pykälittäin käyttöön kalliimpia. Lämmitettäessä seuraavien lämmitystuntien määrä pienenee, jolloin kalliimmat tunnit taasen skipataan. Näin äkkiseltään ilmaistuna toimintaperiaate on mielestäni aika pommin varma. Lisäksi siinä on kuin natiivina ominaisuutena sammuttaa lämmitys heti, kun se ei ole enään tarpeen (= kun raakakoodatut halvimmat tunnit riittävät lämmittämään varaajan) Aikaperiodia katsotaan vain tulevaisuuteen sen verran kuin tiedetään - menneet tunnit eivät vaikuta käyttäytymiseen muulla tavoin kuin aiemmin lämmitettynä se pienentää tulevaisuuden lämmitystuntien tarvemäärää. Lisää pykäliä voi lisätä tietysti looppeihin. continue ehdon sisällä on avainsana toimintaan ![]() Suurin hankaluus vaan on integroida tämä siihen nykyiseen systeemiin, kun se on niin huonosti tehty ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 4.3.2023 00:01 pi@raspberrypi:~/php $ python3 varaajan_hallinta.py [8, 8, 8, 8, 10, 10, 12, 12, 19, 50, 45, 12, 6, 32.0, 2.1, 11, 99] Päällä: tunti = 0 hinnalla: 8 Päällä: tunti = 1 hinnalla: 8 Päällä: tunti = 2 hinnalla: 8 Päällä: tunti = 3 hinnalla: 8 Päällä: tunti = 12 hinnalla: 6 Päällä: tunti = 14 hinnalla: 2.1 Kalliilla -50ka: tunti = 4 hinnalla: 10 Kalliilla -50ka: tunti = 5 hinnalla: 10 [0, 1, 2, 3, 12, 14, 4, 5] KA: 20.711764705882356 pi@raspberrypi:~/php $ python3 varaajan_hallinta.py [10, 10, 12, 12, 19, 50, 45, 12, 6, 32.0, 2.1, 11, 99] Päällä: tunti = 8 hinnalla: 6 Päällä: tunti = 10 hinnalla: 2.1 Kalliilla -50ka: tunti = 0 hinnalla: 10 Kalliilla -50ka: tunti = 1 hinnalla: 10 Kalliilla -50ka: tunti = 2 hinnalla: 12 Kalliilla -50ka: tunti = 3 hinnalla: 12 Kalliilla: tunti = 4 hinnalla: 19 Kalliilla -50ka: tunti = 7 hinnalla: 12 [8, 10, 0, 1, 2, 3, 4, 7] KA: 24.623076923076926 pi@raspberrypi:~/php $ python3 varaajan_hallinta.py [10, 10, 12, 12, 19, 50, 45, 12, 6, 32.0, 2.1, 11, 99] Päällä: tunti = 8 hinnalla: 6 Päällä: tunti = 10 hinnalla: 2.1 Kalliilla -50ka: tunti = 0 hinnalla: 10 [8, 10, 0] KA: 24.623076923076926 pi@raspberrypi:~/php $ ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 4.3.2023 00:15 Muokattu viimeeksi: 4.3.2023 00:39 Lisäksi, sähkö kun nyt on pörsisidonnaisella hinnalla suunnittelin muuttavani hinta ja kulutuslaskurin kokonaan erillaisiksi. Eli meillä olis 24 tunnin array, jokaiselle tunnille summataan tunneittain kulutettu energia, toiseen arrayhyn tunneittain kulutettu euromäärä, kolmanteen ja neljänteen keskimääräinen teho ja keskimääräinen hinta. Kokonaiskulutusta ei tarvitse edes mitata, sillä se saadaan summaamalla 24 tuntia yhteen, samoin toteutunut hinta. 2-aika tariffi, pörssisähkön marginaali ja sähkövero summataan toisiinsa jo hinnastoa muodostettaessa. Selaimessa ei eritellä siirron ja energian osuutta, vaan käsitellään ja esitetään sähkön kokonaishinta. Erikseen hinnastoon asetetaan vielä ns. pohjahinnat vastaamaan todellisuutta: paivaHinta = 4.08 + 2.79372 + 0.22 yoHinta = 2.67 + 2.79372 + 0.22 sahkonKiinteaOsa = { 0 : yoHinta, 1 : yoHinta, 2 : yoHinta, 3 : yoHinta, 4 : yoHinta, 5 : yoHinta, 6 : yoHinta, 7 : paivaHinta, 8 : paivaHinta, 9 : paivaHinta, 10: paivaHinta, 11: paivaHinta, 12: paivaHinta, 13: paivaHinta, 14: paivaHinta, 15: paivaHinta, 16: paivaHinta, 17: paivaHinta, 18: paivaHinta, 19: paivaHinta, 20: paivaHinta, 21: paivaHinta, 22: yoHinta, 23: yoHinta } Jotenkin tolla tavalla Tämän ansiosta tulee natiivisti huomioiduksi myös yösähkön alennettu hinta "älyn" suunnitellessa varaajan käyttöä. Joskushan voi olla ihan päivälläkin yksittäinen tunti paljon halvempi kuin ympärillä olevat, sitä ei saisi käyttöön pelkästään kellonajan mukaan ohjaamalla. Vaan sitäkin odotan (kauhulla ![]() Myös ilmalämpöpumpun pyyntiä voisi laskea kalleimpien tuntien aikana, mutta en toistaiseksi ole löytänyt tapaa saada tätä liitettyä mitenkään pumppuun. MQTT protokolla on varmaan avainsana, mutta sekin pitäisi opetella alusta pitäen ja olen todella huono opettelemaan mitään uutta. Ehkä helpompi lähestymistapa itselleni olisi nauhoittaa eri lämpötilojen IR viestit kaukosäätimesta ja ohjata IR lediä antamaan pumpulle sopivia käskyjä. Uskon myös pian alkavan ADD-lääkityksen auttavan motivaatio-ongelmiin. ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 4.3.2023 01:25 Tässä onkin nyt vielä oikein hankala pähkinä purtavaksi; täytyy tehdä hyvin toimiva virheiden ja poikkeuksien käsittely. Se on ohjelmoinnin aihealue, joka ei ole kauheasti kiinnostanut koskaan, mutta tässä tapauksessa se on ehdoton. Lähinnä se mitä tapahtuu jos hinnastoja ei saada NordPoolista syystä tai toisesta. Toinen ehdoton asia on joko varmistaa "mekaanisesti" ettei varaaja voi jäädä koodin vuoksi rullaamaan nopeaa on/off sykliä tai tehdä funktioiden avulla oma rajapinta varaajan ohjaamiseen, joka natiivina rajoittaa lähdön tilan muutokset vaikka max 1 kerta / 10 min. ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 4.3.2023 02:41 tunti = int(((datetime.datetime.today()).strftime('%-H'))) kaytettavatHinnat = hinnat_tanaan[tunti:-1] Tossa kusee nyt joku... enkä keksi mikä ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 4.3.2023 02:48 Jooh, eli kaytettavatHinnat indeksointi alkaa nollasta eikä meneillään olevasta tunnista. Mitenköhän helposti deletoisin indeksit 0 - nykyisen tunnin välillä tai vaihtoehtoisesti aloittaisin arrayn indeksinumeroinnin nykyisestä tunnista. ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 4.3.2023 04:56 Muokattu viimeeksi: 4.3.2023 04:56 No vittu vihdoinkin!def varaajan_hoitaja(): global data huominen = (datetime.datetime.today()+datetime.timedelta(days=+1)).strftime('%d-%m-%Y') #hinnat_tanaan = hae_sahkonhinta() hinnat_tanaan = data['sahko_hinta_tanaan'] tunti = int(((datetime.datetime.today()).strftime('%-H'))) kaytettavatHinnat = [] #Kopioidaan taulukko, otetaan huomioon vain tästä tunnista eteenpäin hinnat,viimeinen indeksi on pvm sitä ei otetea kaytettavatHinnat = data['sahko_hinta_tanaan'][tunti:-1].copy() #Onko huomisen hintoja vielä tullut if sum(data['sahko_hinta_huomenna']) > 1: kaytettavatHinnat += data['sahko_hinta_huomenna'][-1] print(kaytettavatHinnat) print("TUNTI NAYTTAA: " + str(tunti)) ka = sum(kaytettavatHinnat) / len(kaytettavatHinnat) #Keskiarvo kaikista tulevista hinnoista #Muutetaan varaajan kapasiteetti ja latausaste kilowateiksi: data['sahko']['varaajan_tarve'] = ((data['vesi']['varaajan_kapasiteetti'] / 60 / 11) * 80 * 4.2) / 3600 - ((data['vesi']['varaajan_status'] / 60 / 11) * 80 * 4.2) / 3600 #Käyntitunnit kerrotaan lämmitysteholla, jotta saadaan oikea lukema esim. 2 kW teholla tunnissa varaaja latautuu 2 kW/h lammitysteho = data['vesi']['varaajan_lammitysteho'] kayntitunnit = [] #Lasketaan montako tuntia voidaan pitää varaajaa päällä raaoilla hintarajoilla for i in range(len(kaytettavatHinnat)): if kaytettavatHinnat[i] < 10: print("Päällä: tunti = " + str(i + tunti) + " hinnalla: " + str(kaytettavatHinnat[i])) kayntitunnit.append(i + tunti) continue if kaytettavatHinnat[i] < min(kaytettavatHinnat) * 1.2: print("Päällä: tunti = " + str(i + tunti) + " hinnalla: " + str(kaytettavatHinnat[i])) kayntitunnit.append(i + tunti) continue #Toinen kierros, sallitaan kalliimpia hintoja jos varaajan kilowattitarve on kasvanut for i in range(len(kaytettavatHinnat)): if i in kayntitunnit: #Skippaa tunnit jotka on jo raaoilla arvoilla #print("Skipataan tunti: " + str(i)) continue #Jos varaajan lämmöntarve on suurempi kuin hinnaston ka. sallitaan lämmitystunti #hinnalla joka on max. 50 % kaikkien hintojen keskiarvosta if (len(kayntitunnit) * lammitysteho) < data['sahko']['varaajan_tarve'] and kaytettavatHinnat[i] < ka * 0.5: print("Kalliilla -50ka: tunti = " + str(i) + " hinnalla: " + str(kaytettavatHinnat[i])) kayntitunnit.append(i + tunti) continue #Jos ei edellinenkään riitä, sallitaan varaajan käynnistyä max. keskiarvon hintaisilla tunneilla if (len(kayntitunnit) * lammitysteho) < data['sahko']['varaajan_tarve'] and kaytettavatHinnat[i] < ka: print("Kalliilla: tunti = " + str(i) + " hinnalla: " + str(kaytettavatHinnat[i])) kayntitunnit.append(i + tunti) continue data['varaajan_kayntitunnit'] = kayntitunnit Siinä on suht valmiina varaajan hoitaminen. Vielä pohdin mihin kohtaan sijoitan manuaalisen pakotusmekanismin ja kuinka tahtoisin sen käyttäytyvän. En vielä laita varaajaa tämän armoilla toimimaan, tarkkailen ensin toistaiseksi tuon käyttäytymistä. ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 4.3.2023 05:20 Muokattu viimeeksi: 4.3.2023 05:22 Johan oli vittu säätö. Sain jokseenkin toimimaa nuo kooditagit tällä palstalla. Olen ollu joskus niin kaukaa viisas, että palstalle on koodattu toimimaan oma tyylityedosto, joka siis on irrallaan kaikesta muusta sivustosta. Ai niin ja kuuman veden mittari hajosi/irtosi/tai jotain kävi koodissa, sieltä ei enään tule lukemia ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
PenaItse Liittynyt: 11.5.2012 18:55 ![]() |
Vs: Kotinäyttö
Lähetetty: 4.3.2023 07:13 def varaajan_hallinta(arg): global data, varaajan_last_timestamp #Aina pitää olla kulunut 60*5 sekunttia ennen kuin varaajan kärkitilaa voi muuttaa if arg == 'varaaja_paalle' and (time.time() - varaajan_last_timestamp) > 60 * 5: varaajan_last_timestamp = time.time() logi("Varaaja käynnistettiin!" ![]() GPIO.output(25, 1) return 0 if arg == 'sammuta_varaaja' and (time.time() - varaajan_last_timestamp) > 60 * 5: varaajan_last_timestamp = time.time() GPIO.output(25, 0) logi("Varaaja sammutettiin!" ![]() return 0 Voihan tuotakin kutsua tosi muodikkaaksi rajapinnaksi - melkeimpä ![]() ---------------------------------------- olen pena ja lisäksi vitun homo seniili mulkkuperse joka tuunaa 106 vetoakselia perslävellään soinia soimaten pusikon piinaavassa uutteruudessaan ![]() |
Sinun pitää kirjautua sisään tai rekisteröityä osallistuaksesi keskusteluun!
Copyright © PenaNetworks säätiöt 2006 - 2023