Gestion de la demande · Tibber · Nordpool · Tarif dynamique · KNX · 10 min de lecture

Intégration des tarifs dynamiques Tibber et Nordpool avec KNX

Connecter les prix d'électricité en temps réel de Tibber et Nordpool à KNX permet à la couche d'automatisation du bâtiment de déplacer automatiquement les charges flexibles — pompe à chaleur, chargeur VE, lave-vaisselle, charge de batterie — vers des fenêtres de prix bon marché, réduisant ainsi les coûts d'électricité sans sacrifier le confort des occupants.

API Tibber : point de terminaison GraphQL et requête de prix

Tibber fournit des prix d'électricité en temps réel et prévisionnels via une API GraphQL au point de terminaison https://api.tibber.com/v1-beta/gql. L'authentification utilise un jeton Bearer délivré depuis le portail développeur Tibber (developer.tibber.com). Le jeton est spécifique au compte et n'expire pas sauf s'il est révoqué.

La requête la plus utile pour l'intégration KNX récupère le prix de l'heure actuelle et la classification CHEAP/NORMAL/EXPENSIVE que Tibber calcule en fonction de la distribution des prix spot sur les 24 prochaines heures. Cette classification est prête à être mappée directement sur une adresse de groupe de niveau tarifaire KNX sans calcul de seuil supplémentaire.

Requête GraphQL Tibber — prix et niveau actuels

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_EXPENSIVE

Le champ total donne le prix tout compris dans la devise locale par kWh, y compris les frais de réseau, les taxes et la marge Tibber. Le champ level est la classification à utiliser pour la logique KNX — elle élimine le besoin d'étalonnage manuel des seuils par région. Fréquence d'interrogation : une fois par heure suffit car le prix change toutes les heures. Ajoutez un délai de 2 minutes après l'heure (interrogation à HH:02) pour garantir que Tibber a publié le nouveau prix avant que le système KNX ne le lise.

Pont Python sur Raspberry Pi : interrogation et écriture KNX

Un script Python s'exécutant sur un Raspberry Pi (tout modèle avec Ethernet) sert de pont entre l'API Tibber et le bus KNX. Le script utilise la bibliothèque knxpy pour écrire des télégrammes de groupe via une interface IP KNX (par exemple MDT SCN-IP100.02 ou Weinzierl KNX IP Interface 731) ou via un démon knxd sur le même Pi connecté à une interface USB KNX.

Pont Python — Tibber vers 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)

Le DPT 5.010 (octet non signé, compteur 8 bits) code le niveau tarifaire sous forme d'un entier simple : 1 pour PAS CHER, 2 pour NORMAL, 3 pour CHER. Cela se mappe proprement sur les entrées de comparateurs de blocs logiques KNX sans mise à l'échelle. Exécutez le script en tant que service systemd pour garantir son redémarrage lors du reboot du Pi.

Blocs logiques KNX : contrôle de charge basé sur le niveau tarifaire

Le contrôleur logique MDT SCN-LCRM.01 reçoit le niveau tarifaire DPT 5.010 sur une GA KNX et utilise des blocs comparateurs pour dériver des signaux de commande binaires pour chaque charge. Trois comparateurs comparent l'octet reçu aux seuils 1, 2 et 3, générant des télégrammes d'activation/désactivation pour les adresses de groupe configurées.

Niveau tarifaireActionAdresse de groupeDPT / Valeur
1 (PAS CHER)Activer la prise lave-vaisselle / lave-linge3/1/1DPT 1.001 / ON
1 (PAS CHER)SG Ready État 3 — PAC augmente le point de consigne3/1/2 + 3/1/3DPT 1.001 / OFF + ON
1 (PAS CHER)Charge forcée de la batterie via écriture Modbus3/1/4DPT 1.001 / ON
2 (NORMAL)Toutes les charges optionnelles fonctionnement normalAucun changement
3 (CHER)Désactiver la prise lave-vaisselle / lave-linge3/1/1DPT 1.001 / ARRÊT
3 (CHER)Recharge VE dans l'abri (écrire 0A sur le GA du chargeur)5/3/1DPT 5.010 / 0
3 (CHER)Décharge forcée de la batterie3/1/4DPT 1.001 / ARRÊT

Câblage de l'état SG Ready 3 : La logique MDT envoie simultanément DPT 1.001 ARRÊT au relais S1 GA et DPT 1.001 MARCHE au relais S2 GA. L'actionneur de relais MDT AKD-0800.01 convertit ces télégrammes KNX en fermeture de contact de relais 230V sur les bornes SG Ready de la pompe à chaleur. L'état 3 augmente généralement la consigne d'ECS de 3-5K et la consigne de chauffage des locaux de 2K.

Intégration des prix spot Nordpool : programmation day-ahead

Nordpool publie les prix spot day-ahead vers 13h00 CET chaque jour pour les 24 heures suivantes. Contrairement à Tibber (qui nécessite un abonnement et un compteur intelligent), les prix Nordpool sont disponibles via l'API publique Nordpool sans authentification pour la plupart des zones d'enchères, ou via l'API de la plateforme de transparence ENTSO-E (inscription gratuite requise sur transparency.entsoe.eu).

Script de prix day-ahead Nordpool — programmation KNX du jour suivant

# 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}&currency={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 schedule

The 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.

Visualisation des prix sur écran tactile KNX et retour sur investissement

Le niveau tarifaire actuel est affiché sur un écran tactile KNX (Gira X1 ou MDT Glastaster II) sous forme d'indicateur coloré : fond vert pour BON MARCHÉ (niveau 1), ambre pour NORMAL (niveau 2), rouge pour CHER (niveau 3). Un objet de scène KNX lié à l'AG du niveau tarifaire (5/0/1) change la couleur de fond de l'écran via une écriture de scène. L'écran affiche également le prix spot actuel sous forme de valeur DPT 9.002 en EUR/kWh dérivée du champ total de l'API Tibber, permettant aux occupants de prendre des décisions manuelles concernant les charges flexibles.

Calcul du retour sur investissement pour les marchés nordiques : une pompe à chaleur consommant 10 kWh/jour pour le chauffage des locaux déplacée des heures chères aux heures bon marché (écart de prix typiquement de 0,05 à 0,15 EUR/kWh en SE3/FI) permet d'économiser 0,50 à 1,50 EUR/jour, soit 180 à 550 EUR/an. Le Raspberry Pi, l'interface KNX IP et le contrôleur logique MDT totalisent environ 300 à 500 EUR de matériel — retour sur investissement en 1 à 2 ans. Sur les marchés à fort écart comme le Danemark (DK1/DK2) et l'Allemagne (DE-LU) avec des écarts dépassant 0,20 EUR/kWh, le retour sur investissement peut être inférieur à 12 mois.

Choix API Tibber vs Nordpool

Utilisez Tibber lorsque le bâtiment a déjà un contrat d'électricité Tibber – la classification CHEAP/NORMAL/EXPENSIVE est pré-calculée et inclut les frais de réseau. Utilisez Nordpool lorsque le bâtiment a un autre fournisseur mais souhaite suivre le prix spot – nécessite une classification manuelle des seuils selon la méthode des percentiles ci-dessus.

ENTSO-E comme alternative à Nordpool

L'API de la plateforme de transparence ENTSO-E (transparency.entsoe.eu/api) fournit les prix day-ahead pour toutes les zones d'enchères européennes. Inscrivez-vous pour obtenir un jeton API gratuit. Interrogez le point de terminaison des prix day-ahead (documentType=A44, in_Domain et out_Domain avec les codes de zone EIC). Utile pour les pays hors couverture Nordpool comme l'Espagne, l'Italie et la Pologne.

Besoin d'une armoire KNX avec intégration tarifaire dynamique et logique HEMS construite sur mesure ?

Nous concevons des armoires basse tension avec des ponts API Tibber/Nordpool, la programmation du contrôleur logique MDT, des sorties relais SG Ready et une documentation complète de mise en service – livrées testées sur votre site.

Demander un devis →
Chargement...
Retour en haut