Jak přidat spotové ceny do Home Assistant

máte tam hodně sensorů můžete to prosím popsat co se v nich očekává za hodnoty? abych to lépe aplikoval na můj kod?
raději bych ale právě uvítal aby přímo nanogreen posílal data o té konečné ceně s distribucí a s dph :slight_smile:

czk_price_per_kwh je OTE cena v Kč, nakup_elektriny_poplatky je poplatek Nanogreen, zbytek jsou regulované poplatky jak jsou na vyúčtování (nakup_elektriny_distribuce, nakup_elektriny_systemove_sluzby, nakup_elektriny_podpora_oze). Každé z toho je pomocník číslo, takže se to při změně snadno zadává.

no ale czk_price_per_kwh nakup_elektriny_poplatky berete odkud? to nejsou pomocníci asi…

Aplikace dalších poplatků · Issue #5 · nanogreencz/homeassistant-integrations · GitHub tady je na to požadavek už dlouho :frowning:

Je to Input Number - Home Assistant, hodnotu zadám ručně.

umíte někdo prosím modifikovat aby v sensorech sensor.is_currently_in_two_cheapest_hours, sensor.is_currently_in_three_cheapest_hours, …
se počítalo také s tím že od 22 hodin do 6 hodin je jiná cena distribuce a to o hodně. Rozdíl je třeba 0,5 Kč za kwh VS 2 Kč za kwh.
Když je teď v poslední době silová složka prakticky levná v průměru za celý den tak bohužel sensor se zapíná třeba ve dne kdy mám pekelně drahou distribuci a je to potom na nic :frowning:

1 Like

Mam staticke VT/NT a tak jsem to vyresil tim, ze jsem si v NodeRedu vytvoril real price sensor. Flow vypada takhle:

[{"id":"e50aed3eab1112d0","type":"api-current-state","z":"b939cfccc04f66c5","name":"current price","server":"6bec9d55.e00e34","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.current_market_price_czk_kwh","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":310,"y":1080,"wires":[["a06004e071a1ce84"]]},{"id":"a3201b9d3aed610d","type":"inject","z":"b939cfccc04f66c5","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"300","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":1080,"wires":[["e50aed3eab1112d0"]]},{"id":"a06004e071a1ce84","type":"function","z":"b939cfccc04f66c5","name":"real price","func":"var inputPrices = msg.data.attributes.today_hourly_prices;\nvar distributionFeeHigh = 0.648;\nvar distributionFeeLow = 0.438;\nvar ozeFee = 0.495;\nvar providerFee = 0.35;\nvar tax = 1.21;\n\nvar modifiedPrices = inputPrices.map(function (price, index) {\n    var distributionFee;\n\n    if (\n        (index >= 0 && index <= 6) ||   // Hodiny 00:00 - 06:00\n        (index >= 10 && index <= 13) || // Hodiny 10:00 - 13:00\n        (index >= 17 && index <= 24)    // Hodiny 17:00 - 24:00\n    ) {\n        // Použij distributionFeeLow pro určené hodiny\n        distributionFee = distributionFeeLow;\n    } else {\n        // Použij distributionFeeHigh pro všechny ostatní hodiny\n        distributionFee = distributionFeeHigh;\n    }\n\n    var totalPrice = (price + distributionFee + ozeFee + providerFee) * tax;\n\n    return totalPrice.toFixed(2); // Zaokrouhleno na 2 desetinná místa\n});\n\nvar currentHour = new Date().getHours();\nvar currentPrice = modifiedPrices[currentHour];\n\nvar today_hourly_prices = modifiedPrices.join(', '); // Spojení hodnot do řetězce odděleného čárkami\n\nvar sensorData = {\n    payload: {\n        // payload: currentPrice,\n        state: currentPrice,\n        data: { \n            entity_id: \"sensor.real_market_price_czk_kwh\",\n            state: currentPrice,\n            attributes: {\n                today_hourly_prices: today_hourly_prices\n            },\n            unit_of_measurement: \"CZK/kWh\",\n            friendly_name: \"Real market price [CZK/kWh]\"            \n        }\n    }\n};\n\nvar mqttMsg = {\n    topic: \"topic/sensor_real_price\", // Změňte na správný MQTT topic\n    payload: JSON.stringify(sensorData.payload)\n};\n\nreturn [sensorData, mqttMsg];\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":1080,"wires":[["089de8054dc51f60"]]},{"id":"089de8054dc51f60","type":"mqtt out","z":"b939cfccc04f66c5","name":"","topic":"topic/sensor_real_price","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"541f6f06c1c46029","x":710,"y":1080,"wires":[]},{"id":"6bec9d55.e00e34","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true},{"id":"541f6f06c1c46029","type":"mqtt-broker","name":"broker","broker":"192.168.1.123","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]

a pak jsem si v HA vytvoril mqtt senzor do ktereho se to odesila:

mqtt:
  sensor:
    - name: "Real Price CZK/kWh"
      state_topic: "topic/sensor_real_price"
      unit_of_measurement: "CZK/kWh"
      value_template: "{{ value_json.state }}"
      json_attributes_topic: "topic/sensor_real_price"
      json_attributes_template: >
        {% set values = value_json.data.attributes.today_hourly_prices.split(', ') %}
        {"today_hourly_prices": {{ values | tojson }}}

Rozhodnuti, jestli je nejlevnejsi hodina nebo ne pak delam zase v nodeRed pres function node. ChatGPT vetsinou rychle vyresi za me :slight_smile:

Já to teď dodělal složitěji, nemám statické VT/NT. Na stav HDO mám integraci EGD Distribuce CZ, kde je i příklad sensoru ceny za distribuci.
Pak jsem si dodělal pomocníky (input_number) s cenami POZE, systémové služby a měsíční poplatky (tuto cenu jako jedinou nemám přesně, prostě jsem použil dlouhodobý průměr kWh za den a přepočítal to). Pak už jen value template sensor, který mi to sečte a vynásobí 1,21, abych měl cenu s daní. A rázem je z krásných 2,38 Kč/kWh částka 5,5 Kč/kWh.

Je to “skvělý”, jak to ta regulovaná část pošle úplně někam jinam… :frowning: Do budoucna se ale chystá přesun za distribuci do fixní platby (ala jističe), takže se poplatky za kWh pravděpodobně budou snižovat a bude vznikat i nějaký day-ahead ceny za distribuci. Což neznamená, že budeme platit někde mít - u distribuce to bude vždycky jen stoupat :smiley: jen to bude schovaný někde jinde.

to je špatná zpráva pro všechny majitele FVE pač paušál je největší zlo od března do prosince :slight_smile:

Díky za návod. Udělal jsem si druhý graf, kde počítám vůči předpoklásané ceně virtuálky a vůči ceně tepla z plynu vs. TČ
obrazek

Musel jsem trochu upravit ten graf. “y” osa byla škálovaná od nuly, takže to nezobrazovalo záporné ceny, které jsou pro mne, jako pro solárního barona, docela kritické. :slight_smile: