Tibber un Nordpool dinamisko tarifu integrācija ar KNX
Reālā laika elektrības cenu no Tibber un Nordpool savienošana ar KNX ļauj ēkas automatizācijai automātiski pārvietot elastīgās slodzes — siltumsūkni, EV lādētāju, trauku mazgājamo mašīnu, akumulatoru — uz lētām stundām, samazinot elektrības rēķinus, nezaudējot komfortu.
Tibber API: GraphQL galapunkts un cenas vaicājums
Tibber nodrošina reālā laika un prognozētās elektrības cenas caur GraphQL API galapunktā https://api.tibber.com/v1-beta/gql. Autentifikācija izmanto Bearer tokenu, kas iegūts Tibber izstrādātāju portālā (developer.tibber.com). Tokens ir piesaistīts kontam un nebeidzas, ja vien netiek atsaukts.
Visauglīgākais vaicājums KNX integrācijai iegūst pašreizējās stundas cenu un CHEAP/NORMAL/EXPENSIVE klasifikāciju, ko Tibber aprēķina, pamatojoties uz cenu sadalījumu nākamajās 24 stundās. Šī klasifikācija ir gatava tiešai kartēšanai uz KNX tarifa līmeņa grupas adresi bez papildu sliekšņu aprēķiniem.
Tibber GraphQL vaicājums — pašreizējā cena un līmenis
POST https://api.tibber.com/v1-beta/gql
Authorization: Bearer <your-tibber-token>
Content-Type: application/json
{
"query": "{ viewer { homes { currentSubscription { priceInfo { current { total level } } } } } }"
}
Response:
{
"data": {
"viewer": {
"homes": [{
"currentSubscription": {
"priceInfo": {
"current": {
"total": 0.1842,
"level": "CHEAP"
}
}
}
}]
}
}
}
Possible level values: VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVELauks total dod pilnu cenu vietējā valūtā par kWh, ieskaitot tīkla maksas, nodokļus un Tibber uzcenojumu. Lauks level ir klasifikācija KNX loģikai — tas novērš nepieciešamību manuāli kalibrēt sliekšņus katram reģionam. Aptaujas biežums: reizi stundā, jo cena mainās katru stundu. Pievienojiet 2 minūšu aizkavi pēc stundas (vaicājums HH:02), lai Tibber būtu publicējis jauno cenu pirms KNX sistēma to nolasa.
Python tilts uz Raspberry Pi: aptauja un rakstīšana KNX
Python skripts, kas darbojas uz Raspberry Pi (jebkurš modelis ar Ethernet), kalpo kā tilts starp Tibber API un KNX kopni. Skripts izmanto knxpy bibliotēku, lai sūtītu grupas telegrammas caur KNX IP interfeisu (piemēram, MDT SCN-IP100.02 vai Weinzierl KNX IP Interface 731) vai caur knxd dēmonu uz tā paša Pi, kas savienots ar KNX USB interfeisu.
Python tilts — Tibber uz KNX DPT 5.010
#!/usr/bin/env python3
import requests, time, schedule
import knxpy
TIBBER_TOKEN = "your-tibber-token"
KNX_IP = "192.168.1.50" # KNX IP Interface address
TARIFF_GA = "5/0/1" # DPT 5.010 — tariff level GA
LEVEL_MAP = {
"VERY_CHEAP": 1,
"CHEAP": 1,
"NORMAL": 2,
"EXPENSIVE": 3,
"VERY_EXPENSIVE": 3,
}
def get_tibber_level():
query = '{"query":"{ viewer { homes { currentSubscription { priceInfo { current { level } } } } } }"}'
r = requests.post(
"https://api.tibber.com/v1-beta/gql",
headers={"Authorization": f"Bearer {TIBBER_TOKEN}", "Content-Type": "application/json"},
data=query, timeout=10
)
level = r.json()["data"]["viewer"]["homes"][0]["currentSubscription"]["priceInfo"]["current"]["level"]
return LEVEL_MAP.get(level, 2)
def update_knx_tariff():
level = get_tibber_level()
knx = knxpy.KNXIPTunnel(KNX_IP, 3671)
knx.connect()
knx.group_write(TARIFF_GA, [level], dpt="DPT_Value_1_Ucount")
knx.close()
print(f"KNX tariff level written: {level}")
schedule.every().hour.at(":02").do(update_knx_tariff)
update_knx_tariff() # run on startup
while True:
schedule.run_pending()
time.sleep(30)DPT 5.010 (bez zīmes baits, 8 bitu skaitītājs) kodē tarifa līmeni kā veselu skaitli: 1 — CHEAP, 2 — NORMAL, 3 — EXPENSIVE. Tas tieši atbilst KNX loģikas bloku komparatoru ieejām bez mērogošanas. Palaidiet skriptu kā systemd pakalpojumu, lai tas automātiski restartētos pēc Pi pārstartēšanas.
KNX loģikas bloki: slodžu vadība pēc tarifa līmeņa
MDT SCN-LCRM.01 loģikas kontrolieris saņem DPT 5.010 tarifa līmeni uz KNX GA un izmanto komparatoru blokus, lai iegūtu bināros vadības signālus katrai slodzei. Trīs komparatori salīdzina saņemto baitu ar sliekšņiem 1, 2 un 3, ģenerējot ieslēgšanas/izslēgšanas telegrammas konfigurētajām grupas adresēm.
| Tarifa līmenis | Darbība | Grupas adrese | DPT / Vērtība |
|---|---|---|---|
| 1 (LĒTI) | Ieslēgt trauku/veļas mazgājamās mašīnas kontaktligzdu | 3/1/1 | DPT 1.001 / IESLĒGTS |
| 1 (LĒTI) | SG Ready Stāvoklis 3 — siltumsūkņa iestatījuma paaugstināšana | 3/1/2 + 3/1/3 | DPT 1.001 / IZSLĒGTS + IESLĒGTS |
| 1 (LĒTI) | Piespiedu akumulatora uzlāde caur Modbus | 3/1/4 | DPT 1.001 / IESLĒGTS |
| 2 (NORMĀLI) | Visas papildu slodzes darbojas normāli | — | Bez izmaiņām |
| 3 (DĀRGI) | Izslēgt trauku/veļas mazgājamās mašīnas kontaktligzdu | 3/1/1 | DPT 1.001 / IZSLĒGTS |
| 3 (DĀRGI) | Atvienot EV uzlādi (ierakstīt 0A lādētāja grupas adresē) | 5/3/1 | DPT 5.010 / 0 |
| 3 (DĀRGI) | Piespiedu akumulatora izlāde | 3/1/4 | DPT 1.001 / IZSLĒGTS |
SG Ready Stāvoklis 3 pieslēgums: MDT loģika vienlaikus nosūta DPT 1.001 IZSLĒGTS uz S1 releja grupas adresi un DPT 1.001 IESLĒGTS uz S2 releja grupas adresi. MDT AKD-0800.01 releja izpildmehānisms pārvērš šīs KNX telegrammas 230V releja kontaktu aizvēršanā uz siltumsūkņa SG Ready spailēm. Stāvoklis 3 parasti paaugstina karstā ūdens iestatījumu par 3-5K un telpu apkures iestatījumu par 2K.
Nordpool cenu integrācija: nākamās dienas grafiks
Nordpool publicē nākamās dienas cenas aptuveni plkst. 13:00 CET katru dienu nākamajām 24 stundām. Atšķirībā no Tibber (nepieciešams abonements un viedais skaitītājs), Nordpool cenas ir pieejamas caur Nordpool publisko API bez autentifikācijas lielākajai daļai cenu zonu vai caur ENTSO-E Transparency Platform API (nepieciešama bezmaksas reģistrācija transparency.entsoe.eu).
Nordpool nākamās dienas cenu skripts — KNX grafiks nākamajai dienai
# Runs at 13:30 daily — downloads next-day prices and creates KNX schedule
import requests, json
from datetime import date, timedelta
BIDDING_ZONE = "SE3" # Sweden zone 3 — change per country
CURRENCY = "SEK"
def fetch_nordpool_prices():
tomorrow = (date.today() + timedelta(days=1)).strftime("%Y-%m-%d")
url = f"https://dataportal-api.nordpoolgroup.com/api/DayAheadPrices?market=N2EX_DayAhead&deliveryArea={BIDDING_ZONE}¤cy={CURRENCY}&date={tomorrow}"
r = requests.get(url, timeout=15)
return r.json()["multiAreaEntries"]
def classify_price(price_eur, prices_list):
sorted_prices = sorted(prices_list)
p33 = sorted_prices[len(sorted_prices) // 3]
p66 = sorted_prices[2 * len(sorted_prices) // 3]
if price_eur <= p33:
return 1 # CHEAP
elif price_eur <= p66:
return 2 # NORMAL
else:
return 3 # EXPENSIVE
# Output: list of 24 (hour, level) tuples written to KNX time-scheduled GA
# Use MDT SCN-LCRM.01 weekly timer or Home Assistant KNX time scheduleThe classification thresholds (33rd and 66th percentile of tomorrow's 24 prices) ensure that approximately 8 hours are classified as CHEAP, 8 as NORMAL, and 8 as EXPENSIVE each day — balanced regardless of absolute price level. This is preferable to fixed EUR/kWh thresholds that may become stale as energy markets evolve. The resulting 24-entry schedule is written to a KNX time program on the MDT logic controller, replacing the current-hour Tibber poll for installations without a Tibber contract.
KNX skārienpanela cenu vizualizācija un atmaksāšanās
Pašreizējais tarifa līmenis tiek parādīts KNX skārienpanelī (Gira X1 vai MDT Glastaster II) kā krāsu kodēts indikators: zaļš fons LĒTAM (1. līmenis), dzintara NORMĀLAM (2. līmenis), sarkans DĀRGAM (3. līmenis). KNX ainas objekts, kas piesaistīts tarifa līmeņa GA (5/0/1), maina paneļa fona krāsu, izmantojot ainas ierakstu. Panelis arī parāda pašreizējo tūlītējo cenu kā DPT 9.002 vērtību EUR/kWh, kas iegūta no Tibber API total lauka, ļaujot iedzīvotājiem pieņemt manuālus lēmumus par elastīgām slodzēm.
Atmaksāšanās aprēķins Ziemeļvalstu tirgiem: siltumsūknis, kas patērē 10 kWh/dienā telpu apsildei, pārcelts no dārgām uz lētām stundām (cenu starpība parasti 0,05-0,15 EUR/kWh SE3/FI) ietaupa 0,50-1,50 EUR/dienā jeb 180-550 EUR/gadā. Raspberry Pi, KNX IP interfeiss un MDT loģikas kontrolleris kopā veido aptuveni 300-500 EUR aparatūras — atmaksāšanās 1-2 gados. Tirgos ar lielu starpību, piemēram, Dānijā (DK1/DK2) un Vācijā (DE-LU), kur starpība pārsniedz 0,20 EUR/kWh, atmaksāšanās var būt mazāka par 12 mēnešiem.
Tibber vs Nordpool API izvēle
Izmantojiet Tibber, ja ēkai jau ir Tibber elektroenerģijas līgums — LĒTS/NORMĀLS/DĀRGS klasifikācija ir iepriekš aprēķināta un ietver tīkla maksas komponentes. Izmantojiet Nordpool, ja ēkai ir cits piegādātājs, bet tā vēlas sekot tūlītējām cenām — nepieciešama manuāla sliekšņu klasifikācija pēc iepriekš aprakstītās procentiļu metodes.
ENTSO-E kā Nordpool alternatīva
ENTSO-E pārredzamības platformas API (transparency.entsoe.eu/api) nodrošina nākamās dienas cenas visām Eiropas cenu zonām. Reģistrējieties bezmaksas API tokenam. Pieprasiet Day Ahead Prices galapunktu (documentType=A44, in_Domain un out_Domain, izmantojot EIC apgabalu kodus). Noderīgs valstīm ārpus Nordpool pārklājuma, piemēram, Spānijai, Itālijai un Polijai.
Vai jums nepieciešams KNX panelis ar dinamiskā tarifa integrāciju un HEMS loģiku pēc specifikācijas?
Mēs projektējam zemsprieguma paneļus ar Tibber/Nordpool API tiltiem, MDT loģikas kontrollera programmēšanu, SG Ready releju izejām un pilnu nodošanas ekspluatācijā dokumentāciju — piegādājam pārbaudītus uz jūsu objektu.
Pieprasīt cenu →