Varaajan ohjaus minimi hinnoin
PenaPedia
Tässä on yksi osa uudelleen kirjoitettua kotinäyttöversiota johon aloin miettiä vielä parempaa ja ohjelmallisesti järkevänpää mekanismia.
- Todennäköisesti käyttämäni tietorakenteet jo alkuunsa ovat aivan surkeasti valittuja eikä kontekstista irroitettu koodi varmasti monelle kerro mitään, mutta en ole vaan missään enkä koskaan muualla törmännyt varaajan ohjaamiseen sähkön hinnalla siten, että todellinen lämmityksen tarve huomioidaan ja sen mukaan mennään halvimpien tuntien (tai varttien) mukaan.
- Koska veden poistuvaa määrää varaajasta mitataan pulssittavalla vesimittarilla, saadaan siten tietää kauanko varaajaan on syötettävä tietyllä sähköteholla energiaa, jotta se saavuttaisi termostaatin pyytämän lämpötilan (= varaaja täynnä).
- Tätä on toistaiseksi testailtu ja kehitetty vain simuloimalla, tässä vaiheessa oli sopiva hetki tulla selvittämään ajatuksia PenaPedian puolelle...
- Etenkin tuo mittarilta saatujen pulssien ja tehon välinen suhde voi ehkä jota kuta auttaa. Muistan kun pari vuotta aiemmin pähkäilin pääni puhki ja simuloin monella eri tavalla varmistaakseni että kaava on oikein
- Toiminta on ajateltu niin, että tuota kutsutaan vaikka kerran minuutissa ja se päättää varaajan päälläoloajasta niin monen tunnin (tai vartin) tiedoilla kuin onkaan saatavilla.
Tätä kannattaa ajatella ohjeellisena pseudokoodina kaikenkaikkiaan
def saatana(e): return e['hinta'] def suunnittele_varaaja(): myMin = min(d['hinta'] for d in hinnat) #print(myMin) kapasiteetti = data['lvesi']['varaajanKap'] # MONTAKO PULSSIA ON 150 LITRAA lammitysteho = data['lvesi']['varaajanTeho'] # (kW) havioteho = data['lvesi']['varaajanHavioteho'] # (kW) # 85 - 4 = veden lämpötilan noston määrä 4c ---> 85 c # luku 11 on vesimittarin mukana tullut kerroin f/11 vai oliko se 11/f, 4.2 = veden ominaislämpökapasiteetti haviotehoPulssia = ((havioteho * 60) / (85 - 4) / 4.2) * 11 * 60 * 60 status = data['lvesi']['varaajanStatus'] heatPulsesPerHour = ((lammitysteho * 60) / (85 - 4) / 4.2) * 11 * 60 * 60 lammitysTarvePulssia = kapasiteetti - status lammitysTarveTuntia = round(lammitysTarvePulssia / heatPulsesPerHour) hinnat = sorted(hinnat, key=saatana) i = 0 for x in hinnat: print(x) tila = False status -= haviotehoPulssia # SALLITAAN KAIKKI HINNAT KÄYTTÖÖN, JOTKA OVAT ALLE 1.5 x PIENIN HINTA # KÄYTÄNNÖN KOKEMUS AUTTAA HIERTOMAAN HARD LIMITTEJÄ KUNTOON SITTEN PAREMMIN if i < lammitysTarveTuntia or x['hinta'] < myMin * 1.5: tila = True #status += heatPulsesPerHour tmpArr = {'hinta' : x['hinta'], 'status' : round(status), 'tila' : tila} suunnitelma[x['tunti']] = tmpArr i += 1 #print(pprint.pformat(suunnitelma, indent=1,sort_dicts=False))
Katso myös
- Kotinäyttö - Ilman Home Assistanttia!