Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ceny včetně všech poplatků dle aktuálního ceníku a nové entita včetně daně #10

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
7 changes: 7 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"[python]": {
"editor.defaultFormatter": "ms-python.autopep8"
},
"python.formatting.provider": "none",
"python.analysis.typeCheckingMode": "basic"
}
53 changes: 30 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,32 +48,39 @@ Repozitář by se vám měl zobrazit mezi ostatními repozitáři.

## Sensory

| ID | Popis |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `current_market_price` | Současná tržní cena elektřiny. |
| `current_consumption_price` | Tržní cena pro spotřebu po odečtení poplatku za služby obchodu ve výši 350 Kč/MWh bez DPH. |
| `current_production_price_with_nano` | Tržní cena pro výkup přebytků při současném odběru elektřiny od Nano Green po odečtení poplatku za služby obchodu ve výši 600 Kč/MWh bez DPH. |
| `current_production_price_without_nano` | Tržní cena pro výkup přebytků při odběru elektřiny od jiného dodavatele po odečtení poplatku za služby obchodu ve výši 900 Kč/MWh bez DPH. |
| `today_base_cheapest_hour` | Dnešní nejlevnější hodina za celý den. |
| `today_peak_cheapest_hour` | Dnešní nejlevnější hodina v energetické špičce. |
| `today_offpeak_cheapest_hour` | Dnešní nejlevnější hodina mimo energetickou špičku. |
| `today_base_second_cheapest_hour` | Dnešní druhá nejlevnější hodina za celý den. |
| `today_peak_second_cheapest_hour` | Dnešní druhá nejlevnější hodina v energetické špičce. |
| `today_offpeak_second_cheapest_hour` | Dnešní druhá nejlevnější hodina mimo energetickou špičku. |
| `is_currently_cheapest_hour` | Binární sensor. Zapnutý, pokud je nejlevnější hodina elektřiny z celého dne. |
| `is_currently_second_cheapest_hour` | Binární sensor. Zapnutý, pokud je druhá nejlevnější hodina elektřiny z celého dne. |
| `is_currently_third_cheapest_hour` | Binární sensor. Zapnutý, pokud je třetí nejlevnější hodina elektřiny z celého dne. |
| `is_currently_fourth_cheapest_hour` | Binární sensor. Zapnutý, pokud je čtvrtá nejlevnější hodina elektřiny z celého dne. |
| `is_currently_fifth_cheapest_hour` | Binární sensor. Zapnutý, pokud je pátá nejlevnější hodina elektřiny z celého dne. |
| `is_currently_sixth_cheapest_hour` | Binární sensor. Zapnutý, pokud je šestá nejlevnější hodina elektřiny z celého dne. |
| `is_currently_in_two_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna ze dvou nejlevnějších hodin elektřiny z celého dne. |
| `is_currently_in_three_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna ze tří nejlevnějších hodin elektřiny z celého dne. |
| `is_currently_in_four_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna ze čtyř nejlevnějších hodin elektřiny z celého dne. |
| `is_currently_in_five_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna z pěti nejlevnějších hodin elektřiny z celého dne. |
| `is_currently_in_six_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna z šesti nejlevnějších hodin elektřiny z celého dne. |
| ID | Popis |
| ------------------------------------ | ----------------------------------------------------------------------------------- |
| `current_market_price` | Současná tržní cena silové elektřiny. |
| `current_consumption_price` | Spotřební cena silové el. po odečtení poplatků podle aktuálního ceníku, bez DPH. |
| `current_consumption_price_incl_vat` | Spotřební cena silové el. po odečtení poplatků podle aktuálního ceníku, včetně DPH. |

<!-- TODO špatný text, přidat s daní -->

| `current_production_price_with_nano` | Výkupní cena silové el. při současném odběru elektřiny od Nano Green po odečtení poplatku za služby obchodu ve výši 600 Kč/MWh bez DPH. |
| `current_production_price_without_nano` | Výkupní cena silové el. při odběru elektřiny od jiného dodavatele po odečtení poplatku za služby obchodu ve výši 900 Kč/MWh bez DPH. |
| `today_base_cheapest_hour` | Dnešní nejlevnější hodina za celý den. |
| `today_peak_cheapest_hour` | Dnešní nejlevnější hodina v energetické špičce. |
| `today_offpeak_cheapest_hour` | Dnešní nejlevnější hodina mimo energetickou špičku. |
| `today_base_second_cheapest_hour` | Dnešní druhá nejlevnější hodina za celý den. |
| `today_peak_second_cheapest_hour` | Dnešní druhá nejlevnější hodina v energetické špičce. |
| `today_offpeak_second_cheapest_hour` | Dnešní druhá nejlevnější hodina mimo energetickou špičku. |
| `is_currently_cheapest_hour` | Binární sensor. Zapnutý, pokud je nejlevnější hodina elektřiny z celého dne. |
| `is_currently_second_cheapest_hour` | Binární sensor. Zapnutý, pokud je druhá nejlevnější hodina elektřiny z celého dne. |
| `is_currently_third_cheapest_hour` | Binární sensor. Zapnutý, pokud je třetí nejlevnější hodina elektřiny z celého dne. |
| `is_currently_fourth_cheapest_hour` | Binární sensor. Zapnutý, pokud je čtvrtá nejlevnější hodina elektřiny z celého dne. |
| `is_currently_fifth_cheapest_hour` | Binární sensor. Zapnutý, pokud je pátá nejlevnější hodina elektřiny z celého dne. |
| `is_currently_sixth_cheapest_hour` | Binární sensor. Zapnutý, pokud je šestá nejlevnější hodina elektřiny z celého dne. |
| `is_currently_in_two_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna ze dvou nejlevnějších hodin elektřiny z celého dne. |
| `is_currently_in_three_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna ze tří nejlevnějších hodin elektřiny z celého dne. |
| `is_currently_in_four_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna ze čtyř nejlevnějších hodin elektřiny z celého dne. |
| `is_currently_in_five_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna z pěti nejlevnějších hodin elektřiny z celého dne. |
| `is_currently_in_six_cheapest_hours` | Binární sensor. Zapnutý, pokud je jedna z šesti nejlevnějších hodin elektřiny z celého dne. |

Vysvětlení:

Kromě silové elektřiny ještě platíte za distribuci podle vašeho distribučního území ČEZ, PRE nebo EG.d a distribučního tarifu. Některé tarify mají dvě ceny NT/VT (nesouvisí s časy Peak/OffPeak spotu).
Distribuce se platí pro nákup elektřiny k vám.

PEAK LOAD (8:00 - 20:00)

OFFPEAK LOAD (0:00 - 8:00, 20:00 - 24:00)
Expand Down
12 changes: 12 additions & 0 deletions custom_components/nanogreen/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,15 @@
CONF_LANGUAGE = "language"
UPDATE_LISTENER = "update_listener"
PLATFORMS = [Platform.SENSOR]
VAT = 1.21 # DPH 21%

# Fees per kWh, VAT excluded
CONSUMPTION_KWH_FEE = (350 + 28.3 + 113.53)/1000
PRODUCTION_KWH_FEE = (450)/1000

ATTR_API_CURRENT_MARKET_PRICE = "current_market_price"
ATTR_API_CURRENT_CONSUMPTION_PRICE = "current_consumption_price"
ATTR_API_CURRENT_CONSUMPTION_PRICE_INCL_VAT = "current_consumption_price_incl_vat"
ATTR_API_CURRENT_PRODUCTION_WITH_NANO_PRICE = "current_production_price_with_nano"
ATTR_API_CURRENT_PRODUCTION_WITHOUT_NANO_PRICE = "current_production_price_without_nano"
ATTR_API_TODAY_BASE_CHEAPEST_HOUR = "today_base_cheapest_hour"
Expand All @@ -27,7 +32,9 @@
ATTR_API_TODAY_PEAK_SECOND_CHEAPEST_HOUR = "today_peak_second_cheapest_hour"
ATTR_API_TODAY_OFFPEAK_SECOND_CHEAPEST_HOUR = "today_offpeak_second_cheapest_hour"
ATTR_API_TODAY_HOURLY_PRICES = "today_hourly_prices"
ATTR_API_TODAY_HOURLY_CONSUMPTION_PRICES_INCL_VAT = "today_hourly_consumption_prices_incl_vat"
ATTR_API_TOMORROW_HOURLY_PRICES = "tomorrow_hourly_prices"
ATTR_API_TOMORROW_HOURLY_CONSUMPTION_PRICES_INCL_VAT = "tomorrow_hourly_consumption_prices_incl_vat"


SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
Expand All @@ -41,6 +48,11 @@
name="Current consumption price [CZK/kWh]",
native_unit_of_measurement="CZK/kWh",
),
SensorEntityDescription(
key=ATTR_API_CURRENT_CONSUMPTION_PRICE_INCL_VAT,
name="Current consumption price including VAT [CZK/kWh]",
native_unit_of_measurement="CZK/kWh",
),
SensorEntityDescription(
key=ATTR_API_CURRENT_PRODUCTION_WITH_NANO_PRICE,
name="Current production price (consumption with Nano) [CZK/kWh]",
Expand Down
14 changes: 12 additions & 2 deletions custom_components/nanogreen/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
DOMAIN,
ATTR_API_CURRENT_MARKET_PRICE,
ATTR_API_CURRENT_CONSUMPTION_PRICE,
ATTR_API_CURRENT_CONSUMPTION_PRICE_INCL_VAT,
ATTR_API_CURRENT_PRODUCTION_WITH_NANO_PRICE,
ATTR_API_CURRENT_PRODUCTION_WITHOUT_NANO_PRICE,
ATTR_API_IS_CURRENTLY_CHEAPEST_HOUR,
Expand All @@ -31,7 +32,12 @@
ATTR_API_TODAY_PEAK_CHEAPEST_HOUR,
ATTR_API_TODAY_PEAK_SECOND_CHEAPEST_HOUR,
ATTR_API_TODAY_HOURLY_PRICES,
ATTR_API_TODAY_HOURLY_CONSUMPTION_PRICES_INCL_VAT,
ATTR_API_TOMORROW_HOURLY_PRICES,
ATTR_API_TOMORROW_HOURLY_CONSUMPTION_PRICES_INCL_VAT,
CONSUMPTION_KWH_FEE,
PRODUCTION_KWH_FEE,
VAT,
)

_LOGGER = logging.getLogger(__name__)
Expand Down Expand Up @@ -71,8 +77,9 @@ async def _convert_response(self, response):
return {
# non binary sensors
ATTR_API_CURRENT_MARKET_PRICE: current_price,
ATTR_API_CURRENT_CONSUMPTION_PRICE: current_price + 0.35,
ATTR_API_CURRENT_PRODUCTION_WITH_NANO_PRICE: current_price - 0.6,
ATTR_API_CURRENT_CONSUMPTION_PRICE: current_price + CONSUMPTION_KWH_FEE,
ATTR_API_CURRENT_CONSUMPTION_PRICE_INCL_VAT: (current_price + CONSUMPTION_KWH_FEE) * VAT,
ATTR_API_CURRENT_PRODUCTION_WITH_NANO_PRICE: current_price - PRODUCTION_KWH_FEE,
ATTR_API_CURRENT_PRODUCTION_WITHOUT_NANO_PRICE: current_price - 0.9,
ATTR_API_TODAY_BASE_CHEAPEST_HOUR: data.get("todayBaseCheapestHour"),
ATTR_API_TODAY_BASE_SECOND_CHEAPEST_HOUR: data.get(
Expand All @@ -87,7 +94,10 @@ async def _convert_response(self, response):
"todayPeakSecondCheapestHour"
),
ATTR_API_TODAY_HOURLY_PRICES: data.get("todayHourlyPrices", []),
ATTR_API_TODAY_HOURLY_CONSUMPTION_PRICES_INCL_VAT: list(map(lambda x: (x + CONSUMPTION_KWH_FEE) * VAT, data.get("todayHourlyPrices", []))),
ATTR_API_TOMORROW_HOURLY_PRICES: data.get("tomorrowHourlyPrices", []),
ATTR_API_TOMORROW_HOURLY_CONSUMPTION_PRICES_INCL_VAT: list(map(lambda x: (x + CONSUMPTION_KWH_FEE) * VAT, data.get("tomorrowHourlyPrices", []))),

# binary sensors
ATTR_API_IS_CURRENTLY_CHEAPEST_HOUR: data.get(
"isCurrentlyCheapestHour", None
Expand Down
2 changes: 1 addition & 1 deletion custom_components/nanogreen/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
"codeowners": [],
"requirements": [],
"iot_class": "cloud_polling",
"version": "0.0.1",
"version": "0.2.1",
"config_flow": true
}
8 changes: 8 additions & 0 deletions custom_components/nanogreen/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@

from .const import (
ATTR_API_TODAY_HOURLY_PRICES,
ATTR_API_TODAY_HOURLY_CONSUMPTION_PRICES_INCL_VAT,
ATTR_API_TOMORROW_HOURLY_PRICES,
ATTR_API_TOMORROW_HOURLY_CONSUMPTION_PRICES_INCL_VAT,
BINARY_SENSOR_TYPES,
DOMAIN,
ENTRY_COORDINATOR,
Expand Down Expand Up @@ -94,9 +96,15 @@ def extra_state_attributes(self):
ATTR_API_TODAY_HOURLY_PRICES: self._coordinator.data.get(
ATTR_API_TODAY_HOURLY_PRICES
),
ATTR_API_TODAY_HOURLY_CONSUMPTION_PRICES_INCL_VAT: self._coordinator.data.get(
ATTR_API_TODAY_HOURLY_CONSUMPTION_PRICES_INCL_VAT
),
ATTR_API_TOMORROW_HOURLY_PRICES: self._coordinator.data.get(
ATTR_API_TOMORROW_HOURLY_PRICES
),
ATTR_API_TOMORROW_HOURLY_CONSUMPTION_PRICES_INCL_VAT: self._coordinator.data.get(
ATTR_API_TOMORROW_HOURLY_CONSUMPTION_PRICES_INCL_VAT
),
}


Expand Down