rnovacek / homeassistant_cz_energy_spot_prices

Home Assistant integration that provides current Czech electricity spot prices based on OTE.
Apache License 2.0
75 stars 17 forks source link

Additional sensors to quantify the current hour price - couple of ideas #5

Closed jirimissbach closed 2 months ago

jirimissbach commented 1 year ago

Pár nápadů pro senzory které se diskutovaly v jiné issue. Měl jsem to ve svých poznámkách v angličtině tak to tak nechávám.

Purchase price (total price)

Sell price (export)

Additional price sensors (updated when the next day data are available) This will allow the user to create flexible automation to control the consumption patterns

Bojkas1985 commented 1 year ago

@rnovacek ahoj, nějaký progres? 😁

Bojkas1985 commented 1 year ago

@rnovacek tak mě napadá, jestli by přeci jen ty atributy nebylo vhodnější řadit podle umístění, že by číslo umístění byl jako název atributu, momentálně je to "2022-12-27T03:00:00+01:00: 1, 0.07492", jestli by to nebylo lepší spíše "1:2022-12-27T03:00:00+01:00, 0.07492".

rnovacek commented 1 year ago

Omlouvám se za zpoždění, chtěl jsem s tím přes vánoce popojet, ale skolila nás celou rodinu nějaká rýmička. Nad atributy se zamyslím, je ten formát dosti omezený - musí to být serializovatelné do JSONu a chtěl bych to udržet tak, aby se to dalo rozumně používat v templatech.

Bojkas1985 commented 1 year ago

@rnovacek v pohodě. :) Taky nám to tu řádí. Myslím, že v těch templatech by jako název řádku bylo ideální to pořadí, takhle template musí prohledávat až hotové hodnoty, takže je to o dost složitější a né úplně pro začátečníky. Sám nevím, jak si s tím poradit, abych si vytáhl třeba druhou a třetí hodnotu v pořadí. Osobně bych se přikláněl jen ke změně pořadí v sensor.current_spot_electricity_hour_order a sensor.tomorrow_spot_electricity_hour_order. Senzor sensor.current_spot_electricity_price bych pak nechal tak, aby se to dalo zobrazovat v těch grafech.

LubosKovar commented 1 year ago

@rnovacek Moc díky za super práci. Integrace v HA funguje skvěle a s doplňky od kolegů výše lze jen souhlasit. Napadlo mě další vylepšení resp možná integrace nová ale stejný princip. Nešlo by něco podobného udělat i pro SPOT ceny plynu? Jsou na denní bázi, o to by to mohlo být jednodušší. Těším se na updaty:-)

Bojkas1985 commented 1 year ago

@rnovacek nějaké novinky? :)

rnovacek commented 1 year ago

Hey, I finally made some progress. I've added a couple of sensors for the "consecutive blocks" - X hours when the electricity is cheapest. Any testing feedback is welcome as I currently have no use for such sensors.

Bojkas1985 commented 1 year ago

@rnovacek ahoj, výborně, budu testovat. Jak tyto bloky fungují? To jsou ty, kde se zobrazuje on/off? Nešly by tam přidat parametry, ktere budou zobrazovat startovní i koncovou hodinu? Jestli to chápu dobře, tak ten výpočet už někde visí a změní stav v tu konkrétní hodinu, osobně bych to rád věděl předem v parametrech, abych nemusel spoléhat jen na ten on/off. Nebudeš dělat i na zítřejší den? :⁠-⁠) Každopádně, výborná práce, moc děkuju.

rnovacek commented 1 year ago

Přidal jsem popisy senzorů do README. Startovní a koncová hodina se zobrazuje jen, když je v budoucnu. Bude to vidět až se načtou hodnoty pro zítřek.

Zítřejší den by se přidat dal, asi jen do atributů. Extra senzor nedává moc smysl, protože by nebyl nikdy On. Otázka je, jak moc je to potřeba vzhledem k tomu, že to ukazuje následující nejlevnější interval v parametrech.

Bojkas1985 commented 1 year ago

Ach tak, takže při načtení zítřejších cen se do senzorů načte třeba 4h sekvence, která začne dnes ve 23h a končí zítra ve tři. Do atributů přibude čas začátku a konce a v tom rozmezí se nastaví stav na on, chápu to správně? :) Tím pádem by to bylo dokonalé. Když se to kouká do budoucnosti, znamená to, že ty časy se vygenerují nejdříve za dnešní den od 13h, kdy se generují ceny až do konce dalšího dne?

rnovacek commented 1 year ago

Je to přesně tak. Dneska už ty nejlevnější bloky byly v noci (kolem 3. ráno), proto tam v atributech nic není. Kdyby byly ty nejlevnější bloky až odpoledne, byly by hodiny v atributech. Takhle se musí čekat za ceny na zítřek.

jirimissbach commented 1 year ago

Thanks, I'll do some testing as soon as I'll get back home. Just a quick one in regards to

Spot Electricity Is Cheapest X Hours Block

Is the X is configurable or there are new sensors for each X representing the amount of consecutive hours?

rnovacek commented 1 year ago

The X is currently hardcoded to 2, 3, 4, 6, 8 hours.

LubosKovar commented 1 year ago

Asi úplně hloupá otázka. V HA se mi nehlásí integrace jako možný update. Jak prosím docílím možnosti updatu?

rnovacek commented 1 year ago

@LubosKovar jak jste integraci instaloval?

Bojkas1985 commented 1 year ago

@rnovacek tak to funguje naprosto skvěle! :) Padla 13h a vygenerovaly se atributy s časy. To on/off budu používat asi jen pro ověření. Naprosto skvělá práce, děkuji! image

LubosKovar commented 1 year ago

@LubosKovar jak jste integraci instaloval?

Právě to kdybych si pamatoval:-(...ale normálně ji vidím v přehledu integrací, zapnuto automatické updatování a nic...HA mám přímo jako OS, takže úplně se do něj přes terminál moc nedostanu image

Bojkas1985 commented 1 year ago

Jestli jste ji instaloval přes HACS, tak by v HACS měla někde svítit aktualizace. Pokud žádná aktualizace nesvítí, tak vlézt do HACS a postupovat podle obrázku, následný restart. image

jirimissbach commented 1 year ago

The X is currently hardcoded to 2, 3, 4, 6, 8 hours.

Perfect! Updated, and it works like a charm!

LubosKovar commented 1 year ago

HACS ji vůbec nevidím. A když dám HACS-Integrace-Přidat repozitář, tak vůbec nic nenajde...omlouvám se asi za amatérký dotaz:-) image

rnovacek commented 1 year ago

Integrace zatím není v HACS databázi, mám v plánu ji tam přidat. Myslím, že je potřeba dostat ji do HACS přímo přes Github URL.

Bojkas1985 commented 1 year ago

image image

LubosKovar commented 1 year ago

Super...tak to je ono...už vidím nové entity...moc díky image

mkh595 commented 1 year ago

Šlo by do atributů bloků vložit průměrnou cenu toho bloku? Součet se počítá, tak jen podělit příslušným počtem hodin. Zobrazil jsem si stav, ale to nemá moc smysl, protože Zapnuto bude víceméně v noci. Průměrná cena pro porovnání by byla lepší.

image

LubosKovar commented 1 year ago

máte také tuto chybu v HA? Po dnešním updatu HA mi hlásí tento error v logu image

rnovacek commented 1 year ago

@mkh595 Dobrý nápad, přidám.

@LubosKovar To není chyba, jen varování, že to přestane v příští verzi HA fungovat. Zkusím to opravit.

rnovacek commented 1 year ago

@LubosKovar varování je opraveno. Příště prosím vytvořte novou issue, ať se to dá lépe najít.

rnovacek commented 1 year ago

@mkh595 Přidal jsem Min, Max, Mean do atributů.

mkh595 commented 1 year ago

@mkh595 Přidal jsem Min, Max, Mean do atributů.

Funguje, díky.

image

mkh595 commented 1 year ago

Na dnešních cenách bloků, kdy delší bloky vycházejí nejlevněji přes den, jsem zjistil, že to nelze použít k automatizaci pokud jsou dvě sazby (VT/NT). V tomto případě se musí třídit podle koncové ceny včetně distribuce, ne spotové. Protože bloky 4h, 5h, 6h vyjdou v reálu levněji v noci, resp. v době NT sazby.

Blok  Spotová cena   Koncová cena
2h     3,11                  3,41
3h     3,24                  3,64
4h     3,29                  5,60
5h     3,31                  5,62
6h     3,36                  5,67

image

rnovacek commented 1 year ago

@mkh595 Tohle mám v plánu řešit. Půjde přidat 2 šablony (template), který ze spotové ceny udělá cenu pro nákup a cenu pro prodej. Tyhle bloky by určitě používaly cenu pro nákup, protože pro prodej nedávají smysl.

mkh595 commented 1 year ago

@mkh595 Tohle mám v plánu řešit. Půjde přidat 2 šablony (template), který ze spotové ceny udělá cenu pro nákup a cenu pro prodej. Tyhle bloky by určitě používaly cenu pro nákup, protože pro prodej nedávají smysl.

Tohle ale nemá s cenou pro prodej nic společného. Se sazbou VT/NT jsou dvě nákupní ceny. Přes den (VT) a spotu 3,00 Kč mám koncouvou cenu 5,31 Kč zatímco v noci (NT) a stejném spotu 3,00 Kč je koncová cena 3,40 Kč. Při dvojí sazbě (VT/NT) nemá smysl hledat nejlevnější blok podle spotové ceny. Při spotové ceně 4,50 Kč v noci mě nabíjení auta vyjde levněji než při spotové ceně 3,00 Kč přes den. Integrace by musela z HA dostat cenu distribuce VT a NT, intervaly, kdy je platný VT a kdy NT (nemusí být jeden blok v celku) a bloky hledat podle koncové ceny. Teď máme sice v atributu průměrnou cenu a můžeme přičíst distribuci, problém nastane, když část bloku bude VT a část NT.

rnovacek commented 1 year ago

Sorry asi to špatně vysvětluju.

Integrace bude mít v nastavení template, který se aplikuje na každou hodinu spotové ceny. V podstatě funkce, která bere dva argumenty: cenu na spotu a čas a vrací cenu pro prodej.

Něco jako

def cena_prodej(cena, cas):
    if cas.hour in [8, 9, 12, 14, 15, 18]: # hodiny vysokého tarifu
        distribuce = 1.5 # VT
    else:
        distribuce = 0.4 # NT
    return cena + distribuce

Bude to (jinja2) template ne python, ale pro ukázku to snad stačí. Tahle výsledná nákupní cena se pak bude používat těch blokových senzorech. Bude to fungovat pro váš usecase?

mkh595 commented 1 year ago

To je přesně ono. Mě zmátl ten prodej. Pro mne je to koncová nákupní cena. Pokud bude koncovou cenu s distribucí počítat po hodinách, tak zohlední případnou změnu VT/NT v průběhu bloku v ceně.

rnovacek commented 1 year ago

Pro prodej bude separátní template, aby se započítal poplatek distributorovi za prodej (fixní cena, žádné VT/NT).

rnovacek commented 1 year ago

BTW: integraci je teď možné instalovat přímo z HACS bez přidávání repozitáře.