Kiitos tästä hienosta paketista. Hieman kehittelin tuossa, josko olisin saanut KSS-sähkön monimutkaisen
kausisähkön siirtomaksut mukaan tähän kokonaisuuteen. Eli riippuu ihan kellonajasta talvella, mikä hinta on. Pahoittelen, tulee pitkä selitys. Lopussa pari kyssäriä/huomiota.
Itsellä sitä varten oli jo tämmöinen sensori käytössä, jolla sitten syöttelin Energia-kojelautaan yhdessä vastaavanlaisen energiataksa sensorin kanssa.
{% set t = {'winter_day': 4.55,
'other_time': 1.38,
'maint_perf': 0.0161,
'ex_tax': 2.7776} %}
{% if now().month >= 4 and now().month <11 %}{{t.other_time+t.maint_perf+t.ex_tax|float}}
{% else %}
{% if now().isoweekday() <= 6 %}
{% if now().hour >=7 and now().hour <22 %}
{{t.winter_day+t.maint_perf+t.ex_tax|float}}
{% else %}
{{t.other_time+t.maint_perf+t.ex_tax|float}}
{% endif %}
{% elif now().isoweekday() == 7 %}
{{t.other_time+t.maint_perf+t.ex_tax|float}}
{% else %}
{{0}}
{% endif %}
{% endif %}
Nuo nyt mukana olevat shf_price1- ja shf_price2-numerosyöttäjät eivät ihan riitä tuohon KSS:n monimutkaiseen, niin yhdistelemällä ja apinoimalla muokkasin tuon electricity_price_now all_prices-koodin (rivit 46-55) vastaamaan tota aiempaa sensoriani.
For loopissa vertailaan sitä arrayssa olevaa aikaleimaa ja sen mukaan tulee hinta.
Laitoin vielä ylimmälle tasolle input_booleanin, että se käyttää tuota minun tekelettäni tai alkuperäistä price1/price2-koodia.
Lisäksi tein muutaman helpperin lisää, jolla annetaan nuo siirtomaksuun vaikuttavat arvot vaikka UI:ssä.
Hard koodasin kuukaudet ja kellonajat, ainakin vielä, tuonne koodiin.
all_prices: >
{% if is_state('input_boolean.shf_season_tariff','on') %}
{% set output = namespace(value=[]) %}
{% for value in (state_attr("sensor.shf_electricity_price_now", "data")) | map(attribute="PriceWithTax") | list %}
{% set t = {'winter_day': states('input_number.shf_price_slider_winterday')|float,
'other_time': states('input_number.shf_price_slider_othertime')|float,
'maint_perf': states('input_number.shf_price_slider_maint_assur')|float/100,
'ex_tax': states('input_number.shf_price_slider_ex_tax')|float,
'margin': states('input_number.shf_price_slider_margin')|float } %}
{% if as_datetime(state_attr("sensor.shf_electricity_price_now", "data")[loop.index-1].DateTime).month >= 4 and as_datetime(state_attr("sensor.shf_electricity_price_now", "data")[loop.index-1].DateTime).month <11 %}
{% set output.value = output.value + [ value + t.other_time+t.maint_perf+t.ex_tax+t.margin | float] %}
{% else %}
{% if as_datetime(state_attr("sensor.shf_electricity_price_now", "data")[loop.index-1].DateTime).isoweekday() <= 6 %}
{% if as_datetime(state_attr("sensor.shf_electricity_price_now", "data")[loop.index-1].DateTime).hour >=7 and as_datetime(state_attr("sensor.shf_electricity_price_now", "data")[loop.index-1].DateTime).hour <22 %}
{% set output.value = output.value + [ value + t.winter_day+t.maint_perf+t.ex_tax+t.margin | float] %}
{% else %}
{% set output.value = output.value + [ value + t.other_time+t.maint_perf+t.ex_tax+t.margin | float] %}
{% endif %}
{% elif as_datetime(state_attr("sensor.shf_electricity_price_now", "data")[loop.index-1].DateTime).isoweekday() == 7 %}
{% set output.value = output.value + [ value + t.other_time+t.maint_perf+t.ex_tax+t.margin | float] %}
{% else %}
{{0}}
{% endif %}
{% endif %}
{%endfor %}
{% else %}
{% set output = namespace(value=[]) %}
{% for value in (state_attr("sensor.shf_electricity_price_now", "data")) | map(attribute="PriceWithTax") | list %}
{% if ((loop.index - 1) % 24) >= state_attr("input_datetime.shf_price2_start", "hour") and ((loop.index - 1) % 24) < state_attr("input_datetime.shf_price2_stop", "hour") %}
{% set output.value = output.value + [ value + states('input_number.shf_price2_slider') | float] %}
{% else %}
{% set output.value = output.value + [ value + states('input_number.shf_price1_slider') | float] %}
{% endif %}
{% endfor %}
{% endif %}
{{ output.value if output.value | length > 0 else state_attr("sensor.shf_electricity_price_now", "all_prices") }}
Kaikki näyttäisi minusta toimivan ok. (Tai kaikki paitsi tuon Apexchartin otsikko näemmä.)
En ihan tarkaan kammannut läpi, että uusihinta on "alkuperäinen pörssihinta" + "ajakohdan siirtomaksu." Ainakin tuolla kehittäjän työkaluissa kaikki näytti vielä hyvältä, kun tarkkailin mitä siirtomaksua se arrayhin aina syöttää.
Sitten ne kysymykset/huomiot.
Ilmeisesti tuo voisi olla oikea kohta koodissa tehdä tuo muutos? Siihenhän tuo alkuperäinen koodi myös sijoittaa "lisämaksut?" Lähinnä niin, että Control Factorin laskennat menee niiden lisämaksujen kanssa.
Mutta, oli tavoitteena myös hyödyntää tuota Rank:iä tämän pohjalta, mutta sehän tuleekin api:sta ja ei huomioi näitä annettuja lisämaksuja.
