(forked from https://github.com/custom-components/nordpool)
Important
This is a work in progress and not yet ready for use.
This repository is only sporadically maintained. Breaking API changes will be maintained on a best efforts basis.
SEMOpx is a service provider that operates an electricity market and power system services, including the exchange of electricity in ROI and Northern Ireland.
This integration provides the spot market (hourly) electricity prices for ROI and Northern Ireland.
The Semopx sensor provides the current price with today's and tomorrow's prices as attributes. Prices become available around 13:00.
ApexCharts card is recommended for visualization of the data in Home Assistant.
Installation
Usage
Other
Troubleshooting
- Video tutorial: variable energy prices in HA by Smart Home Junkie
- Written guide: Semopx and ApexChart by Creating Smart Home
- Community: Semopx integration on Home Assistant Community
- Cheapest hours sensor: Cheapest Energy Hours to create an sensor with the cheapest hours
-
Restart Home Assistant
or
-
Go to
HACS
->Integrations
, -
Select
+
, -
Search for
semopx
and install it, -
Restart Home Assistant
Download the latest release
cd YOUR_HASS_CONFIG_DIRECTORY # same place as configuration.yaml
mkdir -p custom_components/semopx
cd custom_components/semopx
unzip semopx-X.Y.Z.zip
mv semopx-X.Y.Z/custom_components/semopx/* .
Configuration | Required | Description |
---|---|---|
Region | yes | Country/region to get the energy prices for. See Country/region codes below for details. |
Currency | no | Default: local currency Currency used to fetch the prices from the API. |
Include VAT | no | Default: true Add Value Added Taxes (VAT) or not. |
Decimal precision | no | Default: 3 Energy price rounding precision. |
Low price percentage | no | Default: 1 Percentage of average price to set the low price attribute. IF hour_price < average * low_price_cutoff THEN low_price = True ELSE low_price = False |
Price in cents | no | Default: false Display price in cents in stead of (for example) Euros. |
Energy scale | no | Default: kWh Price displayed for MWh, kWh or Wh. |
Additional Cost | no | default {{0.0|float}} Template to specify additional cost to be added. See Additional Costs for more details. |
- Go to
Settings
->Devices & Services
- Select
+ Add Integration
- Search for
semopx
and select it - Fill in the required values and press
Submit
Tip: By default, the integration will create a device with the name semopx_<energy_scale>_<region>_<currency>_<some-numbers>
. It is recommended to rename the device and all its entities to semopx
. If you need to recreate your sensor (for example, to change the additional cost), all automations and dashboards keep working.
Set up the sensor using in configuration.yaml
.
sensor:
- platform: semopx
region: "NO1"
sensor:
- platform: semopx
# Country/region to get the energy prices for.
region: "NO1"
# Override HA local currency used to fetch the prices from the API.
currency: "EUR"
# Add Value Added Taxes (VAT)?
VAT: True
# Energy price rounding precision.
precision: 3
# Percentage of average price to set the low price attribute
# low_price = hour_price < average * low_price_cutoff
low_price_cutoff: 0.95
# Display price in cents in stead of (for example) Euros.
price_in_cents: false
# Price displayed for MWh, kWh or Wh
price_type: kWh
# Template to specify additional cost to be added to the tariff.
# The template price is in EUR, DKK, NOK or SEK (not in cents).
# For example: "{{ current_price * 0.19 + 0.023 | float}}"
additional_costs: "{{0.0|float}}"
See the SEMOpx region map for details
Country | Region code |
---|---|
Austria | AT |
Belgium | BE |
Denmark | DK1, DK2 |
Estonia | EE |
Finland | FI |
France | FR |
Germany | DE-LU |
Great-Britain | Not yet available in this version |
Latvia | LV |
Lithuania | LT |
Luxenburg | DE-LU |
Netherlands | NL |
Norway | Oslo (NO1) Kr.sand (NO2) Tr.heim / Molde (NO3) Tromso (NO4) Bergen (NO5) |
Poland | Not yet available in this version |
Sweden | SE1, SE2, SE3, SE4 |
The idea behind additional_costs
is to allow the users to add costs related to the official price from Semopx:
- Add simple or complex tariffs
- Calculate VAT
There are two special special arguments in that can be used in the template (in addition to all default from Homeassistant):
now()
: this always refer to the current hour of the pricecurrent_price
: price for the current hour. This can be used for example be used to calculate your own VAT or add overhead cost.
Note: When configuring Semopx using the UI, things like VAT and additional costs cannot be changed. If your energy supplier or region changes the additional costs or taxes on a semi-regular basis, the YAML configuration or a helper (example 4) work best.
Add 1,3 cents per kWh overhead cost to the current hour's price
{{ 0.013 | float }}
Add 19 % VAT of the current hour's price
{{ (current_price * 0.19) | float }}
Add 1,3 cents per kWh overhead cost, 0.002 flat tax and 19% VAT to the current hour's price
{{ (0.013 + 0.002 + (current_price * 0.19)) | float }}
Add 21% tax and overhead cost stored in a helper
'''{{ (current_price * 0.21) + states('input_number.additionele_kosten') | float(0) }}'''
{% set s = {
"hourly_fixed_cost": 0.5352,
"winter_night": 0.265,
"winter_day": 0.465,
"summer_day": 0.284,
"summer_night": 0.246,
"cert": 0.01
}
%}
{% if now().month >= 5 and now().month < 11 %}
{% if now().hour >= 6 and now().hour < 23 %}
{{ s.summer_day + s.hourly_fixed_cost + s.cert | float }}
{% else %}
{{ s.summer_night + s.hourly_fixed_cost + s.cert|float }}
{% endif %}
{% else %}
{% if now().hour >= 6 and now().hour < 23 %}
{{ s.winter_day + s.hourly_fixed_cost + s.cert | float }}
{% else %}
{{ s.winter_night + s.hourly_fixed_cost + s.cert | float }}
{% endif %}
{% endif %}
average
: An average of every todayoff_peak_1
: Off peak 1 refers to the average price of the time period from midnight to 8amoff_peak_2
: Off peak 2 refers to the average price of the time period from 8pm to midnightpeak
: Peak refers to the average price of the period from 8am to 8pmmin
: Lowest value todaymax
: Highest value todaymean
: Actually just median of all valuesunit
: what that of Unit, eg: kWhcurrency
: What type of Currencycountry
: What Country data is fetched forregion
: The specific region of priceslow_price
: If price is below low_price_thresholdprice_percent_to_average
:today
: List of all valuestomorrow
: list of all valuestomorrow_valid
: If tomorow´s values is in yetraw_today
: Array of all valuesraw_tomorrow
: Array of valuescurrent_price
: What the current price isadditional_costs_current_hour
: If there is any additional costs this hourprice_in_cents
: Boolean if prices is in cents
Actions has recently been added. The action will just forward the raw response from the Semopx API so you can capture the value your are interested in.
Example for an automation that get the last months averge price.
alias: Example automation action call with storing with parsing and storing result
triggers: null
actions:
- action: semopx.yearly
data:
currency: NOK
area: NO2
year: "2024"
response_variable: np_result
- action: input_text.set_value
target:
entity_id: input_text.test
data:
value: "{{np_result.prices[0].averagePerArea.NO2 | float}}"
mode: single
Add this to your configuration.yaml
and restart Home Assistant to debug the component.
logger:
logs:
semopx: debug
custom_components.semopx: debug
custom_components.semopx.sensor: debug
custom_components.semopx.aio_price: debug