Vlákno názorů k článku Home Assistant: prodej elektřiny na spotovém trhu a automatizace od JiPy - Dobrý den, děkuji za článek a celou sérii. Mohu...

  • Článek je starý, nové názory již nelze přidávat.
  • 6. 3. 2024 11:17

    JiPy

    Dobrý den,
    děkuji za článek a celou sérii. Mohu poprosit o info, jak do toho ApexCharts dostat i ostatní poplatky jako máte ve Vaše screenshotu (POZE, distribuce atd). Jelikož mám sazbu D25d, potřeboval bych rozlišit cenu VT a NT, což se mi nedaří nastavit (ve Vašem případě vidím fixní cenu). Dokážete mi poradit či případně nasměrovat. Děkuji.

    6. 3. 2024, 11:18 editováno autorem komentáře

  • 6. 3. 2024 14:15

    Václav Steiner

    Dobrý den,

    ano, obrázek s grafem je s fixní distribucí, než jsem ji měnil za dvojtarifní. Takto jsem to zvolil čistě pro lepší přehlednost.

    Co se týká ostatních poplatků distribuce a vykreslení do ApexCharts, zkusím vás nasměrovat, jak dál.

    Jsou dvě možnosti:
    a) Vytvoříte si vlastní sensor pro každý poplatek, který bude mít v atributech (tj. attribute_tem­plates) informace o částce za každou hodinu. Buď mapou nebo celkem 24 atributů (takto to řeší integrace spotových cen p. Nováčka)
    b) Nebudete řešit žádný další sensor s atributi a jednoduše zkopírujete stejný předpis (celou sekci) entity pro spotové ceny a jen změníte hodnotu, která se má vypisovat v <i>data_genera­tor</i>.
    Tj. namísto

    data_generator: |
      return Object.entries(entity.attributes).map(([date, value], index) => {
        return [new Date(date).getTime(), value];
      });

    to změníte (pro POZE) value na pevnou hodnotu. Využijete tím již "namapované" hodiny, jen budete ignorovat cenu - value.

    data_generator: |
        return Object.entries(entity.attributes).map(([date, value], index) => {
          return [new Date(date).getTime(), 0.495];
        });

    Navíc samozřejmě upravíte barvy, popisek. Je to hodně ošklivé řešení, které se až stydím napsat. Ale bude vám to fungovat.

    Co se týká různé ceny distribuce v NT a VT. Zde to už musíte udělat tím správným a "hezkým" řešením. Takže template sensor a nadefinujete "attribute_tem­plate" podobně jako výše s mapou. A atribut, který bude obsahovat mapu s cenou, dle dané hodiny. Dílčí položky distribuce mám uložené ve vlastních pomocnících.

    Např. takto (nekomentovat prosím kód, není to moc hezké):

    attribute_templates:
       prices: |-
         {% set NT=states('input_number.cezd_nt')|float+states('input_number.cezd_dalsi_poplatky')|float+states('input_number.cezd_poze')|float %}
         {% set VT=states('input_number.cezd_vt')|float+states('input_number.cezd_dalsi_poplatky')|float+states('input_number.cezd_poze')|float %}
         {% set ns = namespace(output="[") %}
         {% for hour in range(0,24) %}
          {% if (hour >= 2 and hour <=5) or (hour >= 20 and hour <= 23) %}
            {% set ns.output=ns.output|string + NT|string + ", " %}
          {% else %}
            {% set ns.output=ns.output|string + VT|string + ", " %}
          {% endif %}
         {% endfor %}
         {{ ns.output[0:-2] |regex_replace(find='$', replace=']', ignorecase=False) }}

    Pro celkovou cenu elektřiny pak jednoduše uděláte podobný sensor, kde budete ceny z výše uvedené mapy sčítat s ostatními položkami a spotovou nebo silovou složkou ceny elektřiny. Budete potřebovat dva atributy, dnes a zítra, abyste dostal kompletní graf i na následující den. Zkrátka nasimulovat podobná data, jako nabízí integrace spotové ceny.