From 51a62d712ff13c0f59e2ec7b742351a3fed44c36 Mon Sep 17 00:00:00 2001 From: Julian Pawlowski Date: Sun, 12 Apr 2026 15:02:27 +0000 Subject: [PATCH] feat(sensor): add next/previous/rolling-hour price rank sensors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename the three existing price rank sensors from price_rank_* to current_interval_price_rank_* to clarify they rank the current quarter-hour interval's price, not a daily aggregate — consistent with current_interval_price_level / current_interval_price_rating naming. Add 8 new rank sensors covering additional subjects and reference windows: - next_interval_price_rank_{today,today_tomorrow} - previous_interval_price_rank_{today,today_tomorrow} - current_hour_price_rank_{today,today_tomorrow} (5-interval rolling avg) - next_hour_price_rank_{today,today_tomorrow} (5-interval rolling avg) All new sensors are disabled by default. The volatility calculator gains a subject parameter (_get_subject_price / _get_subject_price_attr_key / _get_rolling_hour_avg_price) to select which price to rank. Sensor key routing in value_getters.py and attributes/__init__.py updated accordingly. No migration entries needed — the original price_rank_* sensors were never released to users. All 5 translation files updated. sensor-reference.md regenerated (129 entities). Impact: Users can now track price rank for the next interval (look-ahead), the previous interval (logging), and rolling hourly averages — for both same-day and two-day reference windows. --- .../tibber_prices/custom_translations/de.json | 1328 +++++++++-------- .../tibber_prices/custom_translations/en.json | 1328 +++++++++-------- .../tibber_prices/custom_translations/nb.json | 1328 +++++++++-------- .../tibber_prices/custom_translations/nl.json | 1328 +++++++++-------- .../tibber_prices/custom_translations/sv.json | 1328 +++++++++-------- .../sensor/attributes/__init__.py | 2 +- .../sensor/calculators/volatility.py | 107 +- .../tibber_prices/sensor/core.py | 18 +- .../tibber_prices/sensor/definitions.py | 100 +- .../tibber_prices/sensor/value_getters.py | 40 +- .../tibber_prices/translations/de.json | 42 +- .../tibber_prices/translations/en.json | 42 +- .../tibber_prices/translations/nb.json | 42 +- .../tibber_prices/translations/nl.json | 42 +- .../tibber_prices/translations/sv.json | 42 +- docs/user/docs/sensor-reference.md | 14 +- docs/user/docs/sensors-volatility.md | 103 +- 17 files changed, 3915 insertions(+), 3319 deletions(-) diff --git a/custom_components/tibber_prices/custom_translations/de.json b/custom_components/tibber_prices/custom_translations/de.json index 96640b2..6c36b9f 100644 --- a/custom_components/tibber_prices/custom_translations/de.json +++ b/custom_components/tibber_prices/custom_translations/de.json @@ -1,653 +1,693 @@ { - "apexcharts": { - "title_rating_level": "Preisphasen Tagesverlauf", - "title_level": "Preisniveau", - "hourly_suffix": "(Ø stündlich)", - "best_price_period_name": "Bestpreis-Zeitraum", - "peak_price_period_name": "Spitzenpreis-Zeitraum", - "notification": { - "metadata_sensor_unavailable": { - "title": "Tibber Prices: ApexCharts YAML mit eingeschränkter Funktionalität generiert", - "message": "Du hast gerade eine ApexCharts-Card-Konfiguration über die Entwicklerwerkzeuge generiert. Der Chart-Metadaten-Sensor ist aktuell deaktiviert, daher zeigt das generierte YAML nur **Basisfunktionalität** (Auto-Skalierung, fester Gradient bei 50%).\n\n**Für volle Funktionalität** (optimierte Skalierung, dynamische Verlaufsfarben):\n1. [Tibber Prices Integration öffnen](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Aktiviere den 'Chart Metadata' Sensor\n3. **Generiere das YAML erneut** über die Entwicklerwerkzeuge\n4. **Ersetze den alten YAML-Code** in deinem Dashboard durch die neue Version\n\n⚠️ Nur den Sensor zu aktivieren reicht nicht - du musst das YAML neu generieren und ersetzen!" - }, - "missing_cards": { - "title": "Tibber Prices: ApexCharts YAML kann nicht verwendet werden", - "message": "Du hast gerade eine ApexCharts-Card-Konfiguration über die Entwicklerwerkzeuge generiert, aber das generierte YAML **funktioniert nicht**, weil erforderliche Custom Cards fehlen.\n\n**Fehlende Cards:**\n{cards}\n\n**Um das generierte YAML zu nutzen:**\n1. Klicke auf die obigen Links, um die fehlenden Cards über HACS zu installieren\n2. Starte Home Assistant neu (manchmal erforderlich)\n3. **Generiere das YAML erneut** über die Entwicklerwerkzeuge\n4. Füge das YAML zu deinem Dashboard hinzu\n\n⚠️ Der aktuelle YAML-Code funktioniert nicht, bis alle Cards installiert sind!" - } - } + "apexcharts": { + "title_rating_level": "Preisphasen Tagesverlauf", + "title_level": "Preisniveau", + "hourly_suffix": "(Ø stündlich)", + "best_price_period_name": "Bestpreis-Zeitraum", + "peak_price_period_name": "Spitzenpreis-Zeitraum", + "notification": { + "metadata_sensor_unavailable": { + "title": "Tibber Prices: ApexCharts YAML mit eingeschränkter Funktionalität generiert", + "message": "Du hast gerade eine ApexCharts-Card-Konfiguration über die Entwicklerwerkzeuge generiert. Der Chart-Metadaten-Sensor ist aktuell deaktiviert, daher zeigt das generierte YAML nur **Basisfunktionalität** (Auto-Skalierung, fester Gradient bei 50%).\n\n**Für volle Funktionalität** (optimierte Skalierung, dynamische Verlaufsfarben):\n1. [Tibber Prices Integration öffnen](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Aktiviere den 'Chart Metadata' Sensor\n3. **Generiere das YAML erneut** über die Entwicklerwerkzeuge\n4. **Ersetze den alten YAML-Code** in deinem Dashboard durch die neue Version\n\n⚠️ Nur den Sensor zu aktivieren reicht nicht - du musst das YAML neu generieren und ersetzen!" + }, + "missing_cards": { + "title": "Tibber Prices: ApexCharts YAML kann nicht verwendet werden", + "message": "Du hast gerade eine ApexCharts-Card-Konfiguration über die Entwicklerwerkzeuge generiert, aber das generierte YAML **funktioniert nicht**, weil erforderliche Custom Cards fehlen.\n\n**Fehlende Cards:**\n{cards}\n\n**Um das generierte YAML zu nutzen:**\n1. Klicke auf die obigen Links, um die fehlenden Cards über HACS zu installieren\n2. Starte Home Assistant neu (manchmal erforderlich)\n3. **Generiere das YAML erneut** über die Entwicklerwerkzeuge\n4. Füge das YAML zu deinem Dashboard hinzu\n\n⚠️ Der aktuelle YAML-Code funktioniert nicht, bis alle Cards installiert sind!" + } + } + }, + "sensor": { + "current_interval_price": { + "description": "Der aktuelle Strompreis pro kWh", + "long_description": "Zeigt den aktuellen Preis pro kWh von deinem Tibber-Abonnement an", + "usage_tips": "Nutze dies, um Preise zu verfolgen oder Automatisierungen zu erstellen, die bei günstigem Strom ausgeführt werden" }, - "sensor": { - "current_interval_price": { - "description": "Der aktuelle Strompreis pro kWh", - "long_description": "Zeigt den aktuellen Preis pro kWh von deinem Tibber-Abonnement an", - "usage_tips": "Nutze dies, um Preise zu verfolgen oder Automatisierungen zu erstellen, die bei günstigem Strom ausgeführt werden" - }, - "current_interval_price_base": { - "description": "Aktueller Strompreis in Hauptwährung (EUR/kWh, NOK/kWh, etc.) für Energie-Dashboard", - "long_description": "Zeigt den aktuellen Preis pro kWh in Hauptwährungseinheiten an (z.B. EUR/kWh statt ct/kWh, NOK/kWh statt øre/kWh). Dieser Sensor ist speziell für die Verwendung mit dem Energie-Dashboard von Home Assistant konzipiert, das Preise in Standard-Währungseinheiten benötigt.", - "usage_tips": "Verwende diesen Sensor beim Konfigurieren des Energie-Dashboards unter Einstellungen → Dashboards → Energie. Wähle diesen Sensor als 'Entität mit dem aktuellen Preis' aus, um deine Energiekosten automatisch zu berechnen. Das Energie-Dashboard multipliziert deinen Energieverbrauch (kWh) mit diesem Preis, um die Gesamtkosten anzuzeigen." - }, - "next_interval_price": { - "description": "Der Strompreis für das nächste 15-Minuten-Intervall pro kWh", - "long_description": "Zeigt den Preis für das nächste 15-Minuten-Intervall von deinem Tibber-Abonnement an", - "usage_tips": "Nutze dies, um dich auf kommende Preisänderungen vorzubereiten oder Geräte während günstigerer Intervalle zu planen" - }, - "previous_interval_price": { - "description": "Der Strompreis für das vorherige 15-Minuten-Intervall pro kWh", - "long_description": "Zeigt den Preis für das vorherige 15-Minuten-Intervall von deinem Tibber-Abonnement an", - "usage_tips": "Nutze dies, um vergangene Preisänderungen zu überprüfen oder den Preisverlauf zu verfolgen" - }, - "current_hour_average_price": { - "description": "Gleitender 5-Intervall-Durchschnittspreis pro kWh", - "long_description": "Zeigt den durchschnittlichen Preis pro kWh berechnet aus 5 Intervallen: 2 vorherige, aktuelles und 2 nächste Intervalle (ca. 75 Minuten insgesamt). Dies bietet einen geglätteten 'Stundenpreis', der sich mit der Zeit anpasst, anstatt an feste Uhrzeiten gebunden zu sein.", - "usage_tips": "Nutze dies für einen stabileren Preisindikator, der kurzfristige Schwankungen glättet und dennoch auf Preisänderungen reagiert. Besser als feste Stundenpreise für Verbrauchsentscheidungen." - }, - "next_hour_average_price": { - "description": "Gleitender 5-Intervall-Durchschnittspreis für nächste Stunde pro kWh", - "long_description": "Zeigt den durchschnittlichen Preis pro kWh berechnet aus 5 Intervallen, die eine Stunde voraus zentriert sind: ungefähr Intervalle +2 bis +6 von jetzt (Minuten +30 bis +105 abdeckend). Dies bietet einen vorausschauenden geglätteten 'Stundenpreis' zur Verbrauchsplanung.", - "usage_tips": "Nutze dies, um Preisänderungen in der nächsten Stunde vorherzusehen. Hilfreich für die Planung von verbrauchsintensiven Aktivitäten wie Elektrofahrzeug-Laden, Geschirrspüler oder Heizsysteme." - }, - "lowest_price_today": { - "description": "Der niedrigste Strompreis für heute pro kWh", - "long_description": "Zeigt den niedrigsten Preis pro kWh für den aktuellen Tag von deinem Tibber-Abonnement an", - "usage_tips": "Nutze dies, um aktuelle Preise mit der günstigsten Zeit des Tages zu vergleichen" - }, - "highest_price_today": { - "description": "Der höchste Strompreis für heute pro kWh", - "long_description": "Zeigt den höchsten Preis pro kWh für den aktuellen Tag von deinem Tibber-Abonnement an", - "usage_tips": "Nutze dies, um den Betrieb von Geräten während Spitzenpreiszeiten zu vermeiden" - }, - "average_price_today": { - "description": "Der typische Strompreis für heute pro kWh (konfigurierbares Anzeigeformat)", - "long_description": "Zeigt den typischen Preis pro kWh für heute. **Standardmäßig zeigt der Status den Median** (resistent gegen extreme Preisspitzen, zeigt was du generell erwarten kannst). Du kannst dies in den Integrationsoptionen ändern, um stattdessen das arithmetische Mittel anzuzeigen. Der alternative Wert ist immer als Attribut `price_mean` oder `price_median` für Automatisierungen verfügbar.", - "usage_tips": "Nutze den Status-Wert für die Anzeige. Für exakte Kostenberechnungen in Automatisierungen nutze: {{ state_attr('sensor.average_price_today', 'price_mean') }}" - }, - "lowest_price_tomorrow": { - "description": "Der niedrigste Strompreis für morgen pro kWh", - "long_description": "Zeigt den niedrigsten Preis pro kWh für den morgigen Tag von deinem Tibber-Abonnement an. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", - "usage_tips": "Nutze dies zur Planung energieintensiver Aktivitäten wie das Laden von Elektrofahrzeugen oder das Aufheizen von Warmwasserspeichern für morgen. Wenn der morgige Mindestpreis deutlich niedriger ist als der heutige, kannst du den Verbrauch verschieben." - }, - "highest_price_tomorrow": { - "description": "Der höchste Strompreis für morgen pro kWh", - "long_description": "Zeigt den höchsten Preis pro kWh für den morgigen Tag von deinem Tibber-Abonnement an. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", - "usage_tips": "Nutze dies, um den Betrieb von Geräten während der teuersten Stunden morgen zu vermeiden. Plane nicht-essentielle Lasten außerhalb dieser Spitzenpreiszeiten." - }, - "average_price_tomorrow": { - "description": "Der typische Strompreis für morgen pro kWh (konfigurierbares Anzeigeformat)", - "long_description": "Zeigt den typischen Preis pro kWh für morgen. **Standardmäßig zeigt der Status den Median** (resistent gegen extreme Preisspitzen). Du kannst dies in den Integrationsoptionen ändern, um stattdessen das arithmetische Mittel anzuzeigen. Der alternative Wert ist als Attribut verfügbar. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", - "usage_tips": "Nutze den Status-Wert für Anzeige und schnelle Vergleiche. Für Automatisierungen, die exakte Kostenberechnungen benötigen, nutze das Attribut `price_mean`: {{ state_attr('sensor.average_price_tomorrow', 'price_mean') }}" - }, - "yesterday_price_level": { - "description": "Aggregiertes Preisniveau für gestern", - "long_description": "Zeigt das aggregierte Preisniveau für alle Intervalle von gestern. Verwendet die gleiche Logik wie die Stundensensoren, um das Gesamtpreisniveau für den ganzen Tag zu ermitteln.", - "usage_tips": "Nutze dies, um die gestrige Preissituation zu verstehen. Vergleiche mit heute, um tägliche Trends zu sehen." - }, - "today_price_level": { - "description": "Aggregiertes Preisniveau für heute", - "long_description": "Zeigt das aggregierte Preisniveau für alle Intervalle von heute. Verwendet die gleiche Logik wie die Stundensensoren, um das Gesamtpreisniveau für den ganzen Tag zu ermitteln.", - "usage_tips": "Nutze dies, um die heutige Preissituation auf einen Blick zu verstehen. Hilfreich für schnelle Einschätzungen, ob heute generell günstig oder teuer ist." - }, - "tomorrow_price_level": { - "description": "Aggregiertes Preisniveau für morgen", - "long_description": "Zeigt das aggregierte Preisniveau für alle Intervalle von morgen. Verwendet die gleiche Logik wie die Stundensensoren, um das Gesamtpreisniveau für den ganzen Tag zu ermitteln. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", - "usage_tips": "Nutze dies, um die morgige Preissituation zu verstehen. Vergleiche mit heute, um zu sehen, ob morgen günstiger oder teurer für den Energieverbrauch wird." - }, - "yesterday_price_rating": { - "description": "Aggregierte Preisbewertung für gestern", - "long_description": "Zeigt die aggregierte Preisbewertung (niedrig/normal/hoch) für alle Intervalle von gestern, basierend auf deinen konfigurierten Schwellenwerten. Verwendet die gleiche Logik wie die Stundensensoren, um die Gesamtbewertung für den ganzen Tag zu ermitteln.", - "usage_tips": "Nutze dies, um die gestrige Preissituation relativ zu deinen persönlichen Schwellenwerten zu verstehen. Vergleiche mit heute für Trendanalysen." - }, - "today_price_rating": { - "description": "Aggregierte Preisbewertung für heute", - "long_description": "Zeigt die aggregierte Preisbewertung (niedrig/normal/hoch) für alle Intervalle von heute, basierend auf deinen konfigurierten Schwellenwerten. Verwendet die gleiche Logik wie die Stundensensoren, um die Gesamtbewertung für den ganzen Tag zu ermitteln.", - "usage_tips": "Nutze dies, um die heutige Preissituation relativ zu deinen persönlichen Schwellenwerten schnell einzuschätzen. Hilft bei Verbrauchsentscheidungen für den aktuellen Tag." - }, - "tomorrow_price_rating": { - "description": "Aggregierte Preisbewertung für morgen", - "long_description": "Zeigt die aggregierte Preisbewertung (niedrig/normal/hoch) für alle Intervalle von morgen, basierend auf deinen konfigurierten Schwellenwerten. Verwendet die gleiche Logik wie die Stundensensoren, um die Gesamtbewertung für den ganzen Tag zu ermitteln. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", - "usage_tips": "Nutze dies, um den morgigen Energieverbrauch basierend auf deinen persönlichen Preisschwellenwerten zu planen. Vergleiche mit heute, um zu entscheiden, ob du den Verbrauch auf morgen verschieben oder heute nutzen solltest." - }, - "trailing_price_average": { - "description": "Der typische Strompreis der letzten 24 Stunden pro kWh (konfigurierbares Anzeigeformat)", - "long_description": "Zeigt den typischen Preis pro kWh der letzten 24 Stunden. **Standardmäßig zeigt der Status den Median** (resistent gegen extreme Spitzen, zeigt welches Preisniveau typisch war). Du kannst dies in den Integrationsoptionen ändern, um stattdessen das arithmetische Mittel anzuzeigen. Der alternative Wert ist als Attribut verfügbar. Wird alle 15 Minuten aktualisiert.", - "usage_tips": "Nutze den Status-Wert, um das typische aktuelle Preisniveau zu sehen. Für Kostenberechnungen nutze: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" - }, - "leading_price_average": { - "description": "Der typische Strompreis für die nächsten 24 Stunden pro kWh (konfigurierbares Anzeigeformat)", - "long_description": "Zeigt den typischen Preis pro kWh für die nächsten 24 Stunden. **Standardmäßig zeigt der Status den Median** (resistent gegen extreme Spitzen, zeigt welches Preisniveau zu erwarten ist). Du kannst dies in den Integrationsoptionen ändern, um stattdessen das arithmetische Mittel anzuzeigen. Der alternative Wert ist als Attribut verfügbar.", - "usage_tips": "Nutze den Status-Wert, um das typische kommende Preisniveau zu sehen. Für Kostenberechnungen nutze: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" - }, - "trailing_price_min": { - "description": "Der niedrigste Strompreis für die letzten 24 Stunden pro kWh", - "long_description": "Zeigt den niedrigsten Preis pro kWh aus den letzten 24 Stunden (nachlaufendes Minimum) von deinem Tibber-Abonnement an. Dies bietet den niedrigsten Preis, der in den letzten 24 Stunden gesehen wurde.", - "usage_tips": "Nutze dies, um die beste Preisgelegenheit zu sehen, die du in den letzten 24 Stunden hattest, und vergleiche sie mit den aktuellen Preisen." - }, - "trailing_price_max": { - "description": "Der höchste Strompreis für die letzten 24 Stunden pro kWh", - "long_description": "Zeigt den höchsten Preis pro kWh aus den letzten 24 Stunden (nachlaufendes Maximum) von deinem Tibber-Abonnement an. Dies bietet den höchsten Preis, der in den letzten 24 Stunden gesehen wurde.", - "usage_tips": "Nutze dies, um den Spitzenpreis in den letzten 24 Stunden zu sehen und die Preisvolatilität zu bewerten." - }, - "leading_price_min": { - "description": "Der niedrigste Strompreis für die nächsten 24 Stunden pro kWh", - "long_description": "Zeigt den niedrigsten Preis pro kWh für die nächsten 24 Stunden (vorlaufendes Minimum) von deinem Tibber-Abonnement an. Dies bietet den niedrigsten erwarteten Preis in den nächsten 24 Stunden basierend auf Prognosedaten.", - "usage_tips": "Nutze dies, um die beste kommende Preisgelegenheit zu identifizieren und energieintensive Aufgaben entsprechend zu planen." - }, - "leading_price_max": { - "description": "Der höchste Strompreis für die nächsten 24 Stunden pro kWh", - "long_description": "Zeigt den höchsten Preis pro kWh für die nächsten 24 Stunden (vorlaufendes Maximum) von deinem Tibber-Abonnement an. Dies bietet den höchsten erwarteten Preis in den nächsten 24 Stunden basierend auf Prognosedaten.", - "usage_tips": "Nutze dies, um den Betrieb von Geräten während kommender Spitzenpreiszeiten zu vermeiden." - }, - "current_interval_price_level": { - "description": "Die aktuelle Preislevelklassifikation", - "long_description": "Zeigt die Klassifizierung von Tibber für den aktuellen Preis im Vergleich zu historischen Preisen an", - "usage_tips": "Nutze dies, um Automatisierungen auf Basis des relativen Preisniveaus anstelle der absoluten Preise zu erstellen" - }, - "next_interval_price_level": { - "description": "Preisniveau für das nächste 15-Minuten-Intervall", - "long_description": "Zeigt die Preisniveau-Klassifizierung für das kommende Intervall an. Hilft bei der Antizipation kurzfristiger Preisänderungen für sofortige Planung.", - "usage_tips": "Nutze dies für schnelle Entscheidungen über das Starten oder Stoppen von Hochleistungsgeräten in den nächsten Minuten." - }, - "previous_interval_price_level": { - "description": "Preisniveau für das vorherige 15-Minuten-Intervall", - "long_description": "Zeigt die Preisniveau-Klassifizierung für das letzte Intervall an. Nützlich für historische Vergleiche und das Verständnis jüngster Preistrends.", - "usage_tips": "Nutze dies, um aktuelle mit kürzlichen Preisniveaus zu vergleichen oder Verbrauchsmuster gegen historische Preise zu analysieren." - }, - "current_hour_price_level": { - "description": "Aggregiertes Preisniveau für aktuelle gleitende Stunde (5 Intervalle)", - "long_description": "Zeigt das mediane Preisniveau über 5 Intervalle (2 vorherige, aktuelles, 2 nächste) mit ca. 75 Minuten Abdeckung. Bietet einen stabileren Preisniveau-Indikator, der kurzfristige Schwankungen glättet.", - "usage_tips": "Nutze dies für mittelfristige Planungsentscheidungen, wenn du nicht auf kurze Preisspitzen oder -einbrüche reagieren möchtest." - }, - "next_hour_price_level": { - "description": "Aggregiertes Preisniveau für nächste gleitende Stunde (5 Intervalle voraus)", - "long_description": "Zeigt das mediane Preisniveau über 5 Intervalle, die eine Stunde voraus zentriert sind. Hilft bei der Verbrauchsplanung basierend auf kommenden Preistrends statt momentanen zukünftigen Preisen.", - "usage_tips": "Nutze dies, um Aktivitäten für die nächste Stunde basierend auf einer geglätteten Preisniveau-Prognose zu planen." - }, - "current_interval_price_rating": { - "description": "Wie sich der Preis des aktuellen Intervalls mit historischen Daten vergleicht", - "long_description": "Zeigt, wie sich der Preis des aktuellen Intervalls im Vergleich zu historischen Preisdaten als Prozentsatz verhält", - "usage_tips": "Ein positiver Prozentsatz bedeutet, dass der aktuelle Preis überdurchschnittlich ist, negativ bedeutet unterdurchschnittlich" - }, - "next_interval_price_rating": { - "description": "Preisbewertung für das nächste 15-Minuten-Intervall", - "long_description": "Zeigt, wie sich der Preis des nächsten Intervalls im Vergleich zum gleitenden 24-Stunden-Durchschnitt verhält. Hilft vorherzusehen, ob kommende Preise über oder unter dem jüngsten Trend liegen.", - "usage_tips": "Nutze dies für schnelle Entscheidungen über das Starten von Aktivitäten im nächsten Intervall basierend auf der relativen Preisposition." - }, - "previous_interval_price_rating": { - "description": "Preisbewertung für das vorherige 15-Minuten-Intervall", - "long_description": "Zeigt, wie sich der Preis des letzten Intervalls im Vergleich zum gleitenden Durchschnitt verhielt. Nützlich für das Verständnis des jüngsten Preisverhaltens.", - "usage_tips": "Nutze dies zur Analyse, wie sich Preisbewertungen im Laufe der Zeit verändert haben oder um vergangene Verbrauchsentscheidungen zu validieren." - }, - "current_hour_price_rating": { - "description": "Aggregierte Preisbewertung für aktuelle gleitende Stunde (5 Intervalle)", - "long_description": "Zeigt die durchschnittliche Bewertung über 5 Intervalle (2 vorherige, aktuelles, 2 nächste). Basierend auf der durchschnittlichen prozentualen Abweichung vom gleitenden 24h-Durchschnitt, bietet dies einen geglätteten Bewertungsindikator.", - "usage_tips": "Nutze dies für stabile mittelfristige Preisbewertung, die nicht auf kurze Preisanomalien überreagiert." - }, - "next_hour_price_rating": { - "description": "Aggregierte Preisbewertung für nächste gleitende Stunde (5 Intervalle voraus)", - "long_description": "Zeigt die gemittelte Bewertung für 5 Intervalle, die eine Stunde voraus zentriert sind. Hilft zu verstehen, ob die nächste Stunde generell über oder unter durchschnittlicher Preisgestaltung liegen wird.", - "usage_tips": "Nutze dies, um zu entscheiden, ob du eine Stunde warten solltest, bevor du verbrauchsintensive Aktivitäten startest." - }, - "next_avg_1h": { - "description": "Durchschnittspreis für die nächste 1 Stunde (vorwärts-blickend ab nächstem Intervall)", - "long_description": "Vorwärts-blickender Durchschnitt: Zeigt den Durchschnitt der nächsten 4 Intervalle (1 Stunde) beginnend ab dem NÄCHSTEN 15-Minuten-Intervall (aktuelles nicht inkludiert). Unterscheidet sich von current_hour_average_price, das vergangene Intervalle einbezieht. Nutze dies für absolute Preisschwellen-Planung.", - "usage_tips": "Absolute Preisschwelle: Starte Geräte nur, wenn der Durchschnitt unter deinem maximal akzeptablen Preis bleibt (z.B. unter 0,25 EUR/kWh). Kombiniere mit Trend-Sensor für optimales Timing. Hinweis: Dies ist KEIN Ersatz für Stundenpreise - nutze current_hour_average_price dafür." - }, - "next_avg_2h": { - "description": "Durchschnittspreis für die nächsten 2 Stunden", - "long_description": "Zeigt den Durchschnittspreis für die nächsten 8 Intervalle (2 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", - "usage_tips": "Absolute Preisschwelle: Lege einen maximal akzeptablen Durchschnittspreis für Standard-Geräte wie Waschmaschinen fest. Stellt sicher, dass du nie mehr als dein Limit zahlst." - }, - "next_avg_3h": { - "description": "Durchschnittspreis für die nächsten 3 Stunden", - "long_description": "Zeigt den Durchschnittspreis für die nächsten 12 Intervalle (3 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", - "usage_tips": "Absolute Preisschwelle: Für EU Eco-Programme (Spülmaschinen, 3-4h Laufzeit). Starte nur, wenn der 3h-Durchschnitt unter deinem Preislimit liegt. Nutze mit Trend-Sensor um den besten Moment im akzeptablen Preisbereich zu finden." - }, - "next_avg_4h": { - "description": "Durchschnittspreis für die nächsten 4 Stunden", - "long_description": "Zeigt den Durchschnittspreis für die nächsten 16 Intervalle (4 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", - "usage_tips": "Absolute Preisschwelle: Lege maximal akzeptablen Preis für Wärmepumpen oder Warmwasserbereiter fest. Verhindert Betrieb während teurer Zeiträume unabhängig von relativen Trends." - }, - "next_avg_5h": { - "description": "Durchschnittspreis für die nächsten 5 Stunden", - "long_description": "Zeigt den Durchschnittspreis für die nächsten 20 Intervalle (5 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", - "usage_tips": "Absolute Preisschwelle: Brücke zwischen kurz- und langfristiger Planung. Nutze für erweiterte Zyklen mit harten Preislimits (z.B. Pool-Pumpen, verlängerte Heizzyklen)." - }, - "next_avg_6h": { - "description": "Durchschnittspreis für die nächsten 6 Stunden", - "long_description": "Zeigt den Durchschnittspreis für die nächsten 24 Intervalle (6 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", - "usage_tips": "Absolute Preisschwelle: Abendplanung mit Preisobergrenzen. Plane Aufgaben nur, wenn der 6h-Durchschnitt unter deinen maximal akzeptablen Kosten bleibt." - }, - "next_avg_8h": { - "description": "Durchschnittspreis für die nächsten 8 Stunden", - "long_description": "Zeigt den Durchschnittspreis für die nächsten 32 Intervalle (8 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", - "usage_tips": "Absolute Preisschwelle: Entscheidungen für Nachtbetrieb. Lege harte Preislimits für Nachtlasten fest (Batterieladung, Wärmespeicher). Überschreite niemals dein Budget." - }, - "next_avg_12h": { - "description": "Durchschnittspreis für die nächsten 12 Stunden", - "long_description": "Zeigt den Durchschnittspreis für die nächsten 48 Intervalle (12 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", - "usage_tips": "Absolute Preisschwelle: Strategische Entscheidungen mit Preisobergrenzen. Fahre nur fort, wenn der 12h-Durchschnitt unter deinem maximal akzeptablen Preis liegt. Gut für verschiebbare Großlasten." - }, - "price_outlook_1h": { - "description": "Preisausblick für die nächste Stunde", - "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten Stunde (4 Intervalle). Alle Ausblick-Sensoren (1h–12h) haben dieselbe Basis: dein aktueller Preis — sie unterscheiden sich nur im Zeitfenster. Größere Fenster umfassen mehr Zukunftsstunden und glätten kurzfristige Spitzen. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", - "usage_tips": "Entscheidungshilfe: 'steigend' = JETZT HANDELN, dein aktueller Preis ist günstiger als der Stunden-Durchschnitt. 'fallend' = WARTEN, der Fenster-Durchschnitt ist günstiger als jetzt. 'stabil' = Timing egal. Häufiges Missverständnis: 'steigend' bedeutet NICHT 'zu spät' — es heißt, jetzt ist gerade ein guter Preis! Funktioniert unabhängig vom absoluten Preisniveau." - }, - "price_outlook_2h": { - "description": "Preisausblick für die nächsten 2 Stunden", - "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 2 Stunden (8 Intervalle). 'steigend' = aktueller Preis liegt unter dem 2h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", - "usage_tips": "Haushaltsgeräte: 'steigend' = jetzt starten, du hast gerade einen guten Preis. 'fallend' = bessere Preise kommen im 2h-Fenster, verschiebe wenn möglich. 'stabil' = egal, starte nach Bedarf. Kombiniere mit price_trajectory_2h um zu unterscheiden ob Preise noch fallen oder schon steigen." - }, - "price_outlook_3h": { - "description": "Preisausblick für die nächsten 3 Stunden", - "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 3 Stunden (12 Intervalle). 'steigend' = aktueller Preis liegt unter dem 3h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", - "usage_tips": "Eco-Programme: 'steigend' = Eco-Zyklus jetzt starten, Preise steigen im Fenster-Durchschnitt. 'fallend' = warten, günstigeres Fenster kommt. Kombiniere mit avg-Sensor: starte wenn Ausblick 'steigend' oder 'stabil' UND avg < dein Limit." - }, - "price_outlook_4h": { - "description": "Preisausblick für die nächsten 4 Stunden", - "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 4 Stunden (16 Intervalle). 'steigend' = aktueller Preis liegt unter dem 4h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", - "usage_tips": "Wärmepumpe/Batterie: 'steigend' = jetzt laden, du bist an einem relativen Tiefpunkt. 'fallend' = warten auf besseres Fenster im Durchschnitt. Wichtig: 'stark fallend' an einem Preistief bedeutet das Fenster ist im Schnitt günstiger — kombiniere mit price_trajectory_4h um zu sehen ob die Preise noch fallen oder schon aufsteigen." - }, - "price_outlook_5h": { - "description": "Preisausblick für die nächsten 5 Stunden", - "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 5 Stunden (20 Intervalle). 'steigend' = aktueller Preis liegt unter dem 5h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", - "usage_tips": "Erweiterte Zyklen: 'steigend' oder 'stabil' = guter Zeitpunkt zum Starten, Preise werden im Fenster-Schnitt nicht günstiger. 'fallend' = warten wenn dein Zeitplan es erlaubt." - }, - "price_outlook_6h": { - "description": "Preisausblick für die nächsten 6 Stunden", - "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 6 Stunden (24 Intervalle). 'steigend' = aktueller Preis liegt unter dem 6h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", - "usage_tips": "Abendentscheidungen: 'steigend' = Strom jetzt nutzen, solange er relativ günstig ist. 'fallend' = Abend-/Nachtpreise werden im Durchschnitt besser, warte wenn möglich." - }, - "price_outlook_8h": { - "description": "Preisausblick für die nächsten 8 Stunden", - "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 8 Stunden (32 Intervalle). 'steigend' = aktueller Preis liegt unter dem 8h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", - "usage_tips": "Nachtplanung: 'steigend' = heute Nacht/morgen wird im Schnitt teurer, Strom jetzt nutzen. 'fallend' = Nachtpreise werden im Schnitt günstiger, Warten lohnt sich." - }, - "price_outlook_12h": { - "description": "Preisausblick für die nächsten 12 Stunden", - "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 12 Stunden (48 Intervalle). 'steigend' = aktueller Preis liegt unter dem 12h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", - "usage_tips": "Strategische Entscheidungen: 'steigend' = du bist an einem Tiefpunkt relativ zu den nächsten 12h, guter Zeitpunkt für stromintensive Aufgaben. 'fallend' = deutlich bessere Preise kommen im Schnitt, warte wenn möglich." - }, - "price_trajectory_2h": { - "description": "Preisverlauf innerhalb des nächsten 2-Stunden-Fensters", - "long_description": "Compares the average of the first hour (4 intervals) with the average of the second hour (4 intervals) within the next 2-hour window. 'rising' = second half more expensive than first half — prices are climbing within the window. 'falling' = second half cheaper — prices are dropping within the window. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive than first) — revealing the upcoming reversal. Power combination: 'outlook: falling + trajectory: rising' = you're AT the minimum, act now." - }, - "price_trajectory_3h": { - "description": "Preisverlauf innerhalb des nächsten 3-Stunden-Fensters", - "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing over the 3h window; 'falling' = prices are dropping. Reveals the direction of price movement independent of the current price level. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, the window average is low but prices are already recovering — start now." - }, - "price_trajectory_4h": { - "description": "Preisverlauf innerhalb des nächsten 4-Stunden-Fensters", - "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing over the 4h window; 'falling' = prices are dropping. Complementary to price_outlook_4h: outlook answers 'is NOW cheap vs the window average?', trajectory answers 'are prices rising or falling within the window?'. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Heat pump charging: 'rising' = first half window is cheaper, charge now before prices climb. 'falling' = second half window is cheaper, wait if you can. Combine with outlook: if both rising, very strong signal to act now." - }, - "price_trajectory_5h": { - "description": "Preisverlauf innerhalb des nächsten 5-Stunden-Fensters", - "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing over the 5h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Eco/long cycles: 'outlook: rising + trajectory: rising' = clear signal to start now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start before costs climb." - }, - "price_trajectory_6h": { - "description": "Preisverlauf innerhalb des nächsten 6-Stunden-Fensters", - "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing over the 6h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the day's low — good time for high consumption." - }, - "price_trajectory_8h": { - "description": "Preisverlauf innerhalb des nächsten 8-Stunden-Fensters", - "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing over the 8h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half of night will be cheapest, delay start." - }, - "price_trajectory_12h": { - "description": "Preisverlauf innerhalb des nächsten 12-Stunden-Fensters", - "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing over the 12h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = prices drop in the second part of the day, afternoon/evening scheduling is better." - }, - "current_price_trend": { - "description": "Aktuelle Preistrend-Richtung und wie lange sie anhält", - "long_description": "Zeigt den aktuellen Preistrend (steigend/fallend/stabil) durch Kombination von historischem Momentum (gewichteter 1h-Rückblick) mit Zukunftsausblick. Erkennt laufende Trends früher als reine Zukunftsanalyse. Nutzt ±3% Momentum-Schwelle und volatilitätsabhängigen Zukunftsvergleich. Berechnet dynamisch bis zur nächsten Trendänderung (oder 3h Standard, falls keine Änderung in 24h). Der Status zeigt die aktuelle Richtung, Attribute zeigen, wann sich der Trend ändert und was als Nächstes kommt.", - "usage_tips": "Status-Anzeige: Dashboard-Sichtbarkeit von 'was passiert jetzt bis wann'. Perfekt synchronisiert mit next_price_trend_change. Beispiel: Badge mit 'Steigend für 2,5h' oder 'Fallend bis 16:45'. Besser als Zeitfenster-Sensoren, weil es versteht, dass du dich BEREITS in einem Trend befindest, nicht nur zukünftige Änderungen vorhersagt. Nutze für schnelle visuelle Übersicht, nicht für Automations-Trigger." - }, - "next_price_trend_change": { - "description": "Wann die nächste bedeutende Preistrend-Änderung eintreten wird", - "long_description": "Scannt die nächsten 24 Stunden (96 Intervalle), um zu finden, wann sich die Preistrend-Richtung ändern wird. Nur Richtungswechsel zählen: steigend/stark steigend bilden eine Gruppe, fallend/stark fallend eine andere, stabil ist eigenständig. Ein Wechsel von steigend zu stark steigend ist KEIN Trendwechsel. Verwendet volatilitätsadaptive Schwellwerte (Standard: ±3%/±9%) mit Hysterese (Standard: 3 aufeinanderfolgende Intervalle). Gibt den Zeitstempel zurück, wann die Änderung erwartet wird.", - "usage_tips": "Ereignisbasierte Automation: Aktionen WENN Trend wechselt auslösen, nicht IN X Stunden. Beispiel: 'E-Auto laden wenn nächste Trendänderung fallende Preise zeigt' oder 'Spülmaschine vor Preisanstieg starten'. Ergänzt Zeitfenster-Sensoren (price_trend_Xh), die beantworten 'WERDEN Preise in X Stunden höher sein?'" - }, - "next_price_trend_change_in": { - "description": "Zeit bis zur nächsten Preistrend-Änderung", - "long_description": "Zeigt an, wie lange es bis zur nächsten bedeutenden Preistrend-Änderung dauert. Der Wert wird in Stunden angezeigt (z.B. 2,25 h) für Dashboards. Teilt die gleiche Analyse wie der Zeitstempel-Sensor 'Nächste Trendänderung', stellt sie aber als Countdown-Dauer dar. Aktualisiert sich jede Minute für präzise Countdowns. Zeigt 'Unbekannt' wenn keine Trendänderung in den nächsten 24 Stunden erwartet wird.", - "usage_tips": "Dashboard-Countdown: Zeige 'Trendänderung in 1,5 h' als Live-Countdown. Für Automationen: 'Wenn next_price_trend_change_in < 0,25 (15 Min), auf Preisrichtungswechsel vorbereiten'. Ergänzt 'Nächste Trendänderung' (Zeitstempel) — verwende den Zeitstempel für 'WANN' und diesen Sensor für 'WIE LANGE'." - }, - "daily_rating": { - "description": "Wie sich die heutigen Preise mit historischen Daten vergleichen", - "long_description": "Zeigt, wie sich die heutigen Preise im Vergleich zu historischen Preisdaten als Prozentsatz verhält", - "usage_tips": "Ein positiver Prozentsatz bedeutet, dass die heutigen Preise überdurchschnittlich sind, negativ bedeutet unterdurchschnittlich" - }, - "monthly_rating": { - "description": "Wie sich die Preise dieses Monats mit historischen Daten vergleichen", - "long_description": "Zeigt, wie sich die Preise dieses Monats im Vergleich zu historischen Preisdaten als Prozentsatz verhält", - "usage_tips": "Ein positiver Prozentsatz bedeutet, dass die Preise dieses Monats überdurchschnittlich sind, negativ bedeutet unterdurchschnittlich" - }, - "data_timestamp": { - "description": "Zeitstempel des letzten verfügbaren Preisintervalls", - "long_description": "Zeigt den Zeitstempel des letzten verfügbaren Preisdatenintervalls von deinem Tibber-Abonnement" - }, - "today_volatility": { - "description": "Wie stark sich die Strompreise heute verändern", - "long_description": "Zeigt, ob die heutigen Preise stabil bleiben oder stark schwanken. Niedrige Volatilität bedeutet recht konstante Preise – Timing ist kaum wichtig. Hohe Volatilität bedeutet spürbare Preisunterschiede über den Tag – gute Chance, den Verbrauch auf günstigere Zeiten zu verschieben. `price_coefficient_variation_%` zeigt den Prozentwert, `price_spread` die absolute Preisspanne.", - "usage_tips": "Nutze dies, um zu entscheiden, ob Optimierung sich lohnt. Bei niedriger Volatilität kannst du Geräte jederzeit laufen lassen. Bei hoher Volatilität sparst du spürbar, wenn du Best-Price-Perioden nutzt." - }, - "tomorrow_volatility": { - "description": "Wie stark sich die Strompreise morgen verändern werden", - "long_description": "Zeigt, ob die Preise morgen stabil bleiben oder stark schwanken. Verfügbar, sobald die morgigen Daten veröffentlicht sind (typischerweise 13:00–14:00 MEZ). Niedrige Volatilität bedeutet recht konstante Preise – Timing ist nicht kritisch. Hohe Volatilität bedeutet deutliche Preisunterschiede über den Tag – gute Gelegenheit, energieintensive Aufgaben zu planen. `price_coefficient_variation_%` zeigt den Prozentwert, `price_spread` die absolute Preisspanne.", - "usage_tips": "Nutze dies für die Planung des morgigen Energieverbrauchs. Hohe Volatilität? Plane flexible Lasten in Best-Price-Perioden. Niedrige Volatilität? Lass Geräte laufen, wann es dir passt." - }, - "next_24h_volatility": { - "description": "Wie stark sich die Preise in den nächsten 24 Stunden verändern", - "long_description": "Zeigt die Preisvolatilität für ein rollierendes 24-Stunden-Fenster ab jetzt (aktualisiert alle 15 Minuten). Niedrige Volatilität bedeutet recht konstante Preise. Hohe Volatilität bedeutet spürbare Preisschwankungen und damit Chancen zur Optimierung. Im Unterschied zu Heute/Morgen-Sensoren überschreitet dieser Tagesgrenzen und liefert eine durchgängige Vorhersage. `price_coefficient_variation_%` zeigt den Prozentwert, `price_spread` die absolute Preisspanne.", - "usage_tips": "Am besten für Entscheidungen in Echtzeit. Nutze dies für Batterieladestrategien oder andere flexible Lasten, die über Mitternacht laufen könnten. Bietet eine konsistente 24h-Perspektive unabhängig vom Kalendertag." - }, - "today_tomorrow_volatility": { - "description": "Kombinierte Preisvolatilität für heute und morgen", - "long_description": "Zeigt die Gesamtvolatilität, wenn heute und morgen gemeinsam betrachtet werden (sobald die morgigen Daten verfügbar sind). Zeigt, ob über die Tagesgrenze hinweg deutliche Preisunterschiede bestehen. Fällt auf nur-heute zurück, wenn morgige Daten noch fehlen. Hilfreich für mehrtägige Optimierung. `price_coefficient_variation_%` zeigt den Prozentwert, `price_spread` die absolute Preisspanne.", - "usage_tips": "Nutze dies für Aufgaben, die sich über mehrere Tage erstrecken. Prüfe, ob die Preisunterschiede groß genug für eine Planung sind. Die einzelnen Tages-Sensoren zeigen die Beiträge pro Tag, falls du mehr Details brauchst." - }, - "price_rank_today": { - "description": "Position des aktuellen Preises in der heutigen Rangliste — sein Perzentilrang (0 % = günstigster Moment)", - "long_description": "Zeigt, wie günstig oder teuer der aktuelle Preis im Vergleich zu allen 96 Viertelstunden-Slots von heute ist. 0 % bedeutet: Dies ist der günstigste Moment des Tages — jeder andere Slot kostet mehr. 50 % bedeutet, dass die Hälfte der Slots günstiger ist. ~99 % bedeutet: teuerster Slot des Tages. Formel (Perzentilrang): Wie viele Slots sind günstiger ÷ Gesamt-Slots × 100. Attribute: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Ideal für Automatisierungen: 'Wenn Preisrang heute < 25, Geschirrspüler starten' (günstigstes Viertel des Tages). Oder 'Wenn Preisrang heute > 75, Wärmepumpe pausieren' (teuerstes Viertel). Wert 0 garantiert den günstigsten Slot des Tages." - }, - "price_rank_tomorrow": { - "description": "Perzentilrang des aktuellen Preises in der morgigen Rangliste (0 % = günstigster von morgen)", - "long_description": "Zeigt, wie der aktuelle Preis im Vergleich zu allen 96 Viertelstunden-Slots von morgen abschneidet — sein Perzentilrang innerhalb der morgigen Preisverteilung. Nützlich, um zu entscheiden, ob es sich lohnt, bis morgen zu warten. 0 % bedeutet, dass der aktuelle Preis günstiger als jeder morgige Slot ist. Gibt 'Unbekannt' zurück, bis die morgigen Daten vorliegen (in der Regel nach 13:00 Uhr). Attribute: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Nutze zur Entscheidung, ob Warten sinnvoll ist: 'Wenn Preisrang morgen < 10, morgen gibt es noch günstigere Slots — Aufgabe verschieben'. Am besten mit einem Binärsensor kombinieren, der sicherstellt, dass die Aufgabe morgen durchgeführt werden kann." - }, - "price_rank_today_tomorrow": { - "description": "Perzentilrang des aktuellen Preises über heute+morgen zusammen (0 % = günstigstes des Zweitages-Fensters)", - "long_description": "Zeigt, wie günstig oder teuer der aktuelle Preis im Vergleich zu allen Slots von heute und morgen zusammen ist — sein Perzentilrang innerhalb der Zweitages-Verteilung (bis zu 192 Slots, wenn beide Tage verfügbar). Gibt den breitesten Überblick für flexible Aufgaben. Fällt auf nur-heute zurück, wenn morgige Daten noch fehlen. 0 % = günstigstes des kombinierten Fensters. Attribute: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Das breiteste Signal für 'Ist jetzt ein guter Zeitpunkt?'. Nutze 'Wenn Preisrang heute+morgen < 20, energieintensive Aufgabe jetzt ausführen'. Besonders wertvoll, wenn Aufgaben einen Tag lang warten können — ein Wert nahe 0 über zwei Tage ist ein wirklich außergewöhnlicher Preis." - }, - "data_lifecycle_status": { - "description": "Aktueller Status des Preisdaten-Lebenszyklus und der Zwischenspeicherung", - "long_description": "Zeigt an, ob die Integration zwischengespeicherte Daten oder frische Daten von der API verwendet. Zeigt aktuellen Lebenszyklus-Status: 'cached' (verwendet gespeicherte Daten), 'fresh' (gerade von API abgerufen), 'refreshing' (wird gerade abgerufen), 'searching_tomorrow' (sucht aktiv nach Morgendaten nach 13:00 Uhr), 'turnover_pending' (innerhalb 15 Minuten vor Mitternacht, 23:45-00:00) oder 'error' (Abruf fehlgeschlagen). Enthält umfassende Attribute wie Cache-Alter, nächste API-Abfragezeit, Datenvollständigkeit und API-Aufruf-Statistiken.", - "usage_tips": "Verwende diesen Diagnosesensor, um Datenaktualität und API-Aufrufmuster zu verstehen. Prüfe das 'cache_age'-Attribut, um zu sehen, wie alt die aktuellen Daten sind. Überwache 'next_api_poll', um zu wissen, wann das nächste Update geplant ist. Verwende 'data_completeness', um zu sehen, ob Daten für gestern/heute/morgen verfügbar sind. Der 'api_calls_today'-Zähler hilft, die API-Nutzung zu verfolgen. Perfekt zur Fehlersuche oder zum Verständnis des Integrationsverhaltens." - }, - "best_price_end_time": { - "description": "Wann der aktuelle oder nächste günstige Zeitraum endet", - "long_description": "Zeigt den Endzeitstempel des aktuellen günstigen Zeitraums an, wenn dieser aktiv ist, oder das Ende des nächsten Zeitraums, wenn kein Zeitraum aktiv ist. Zeigt immer eine nützliche Zeitreferenz zur Planung. Gibt nur 'Unbekannt' zurück, wenn keine Zeiträume ermittelt wurden.", - "usage_tips": "Nutze dies, um einen Countdown wie 'Günstiger Zeitraum endet in 2 Stunden' (wenn aktiv) oder 'Nächster günstiger Zeitraum endet um 14:00' (wenn inaktiv) anzuzeigen. Home Assistant zeigt automatisch relative Zeit für Zeitstempel-Sensoren an." - }, - "best_price_period_duration": { - "description": "Gesamtlänge des aktuellen oder nächsten günstigen Zeitraums", - "long_description": "Zeigt, wie lange der günstige Zeitraum insgesamt dauert. Der State wird in Stunden angezeigt (z. B. 1,5 h) für eine einfache Lesbarkeit in der UI, während das Attribut `period_duration_minutes` denselben Wert in Minuten bereitstellt (z. B. 90) für Automationen. Während eines aktiven Zeitraums zeigt dies die Dauer des aktuellen Zeitraums. Wenn kein Zeitraum aktiv ist, zeigt dies die Dauer des nächsten kommenden Zeitraums. Gibt nur 'Unbekannt' zurück, wenn keine Zeiträume ermittelt wurden.", - "usage_tips": "Für Anzeige: State-Wert (Stunden) in Dashboards nutzen. Für Automationen: Attribut `period_duration_minutes` verwenden, um zu prüfen, ob genug Zeit für langläufige Geräte ist (z. B. 'Wenn period_duration_minutes >= 90, starte Waschmaschine')." - }, - "best_price_remaining_minutes": { - "description": "Verbleibende Zeit im aktuellen günstigen Zeitraum", - "long_description": "Zeigt, wie viel Zeit im aktuellen günstigen Zeitraum noch verbleibt. Der State wird in Stunden angezeigt (z. B. 0,5 h) für eine einfache Lesbarkeit, während das Attribut `remaining_minutes` Minuten bereitstellt (z. B. 30) für Automationslogik. Gibt 0 zurück, wenn kein Zeitraum aktiv ist. Aktualisiert sich jede Minute. Prüfe binary_sensor.best_price_period, um zu sehen, ob ein Zeitraum aktuell aktiv ist.", - "usage_tips": "Für Automationen: Attribut `remaining_minutes` mit numerischen Vergleichen nutzen wie 'Wenn remaining_minutes > 0 UND remaining_minutes < 30, starte Waschmaschine jetzt'. Der Wert 0 macht es einfach zu prüfen, ob ein Zeitraum aktiv ist (Wert > 0) oder nicht (Wert = 0)." - }, - "best_price_progress": { - "description": "Fortschritt durch aktuellen günstigen Zeitraum (0% wenn inaktiv)", - "long_description": "Zeigt den Fortschritt durch den aktuellen günstigen Zeitraum als 0–100%. Gibt 0% zurück, wenn kein Zeitraum aktiv ist. Aktualisiert sich jede Minute. 0% bedeutet Zeitraum gerade gestartet, 100% bedeutet, er endet gleich.", - "usage_tips": "Super für visuelle Fortschrittsbalken. Nutze in Automatisierungen: 'Wenn progress > 0 UND progress > 75, sende Benachrichtigung, dass günstiger Zeitraum bald endet'. Wert 0 zeigt keinen aktiven Zeitraum an." - }, - "best_price_next_start_time": { - "description": "Wann der nächste günstige Zeitraum startet", - "long_description": "Zeigt, wann der nächste kommende günstige Zeitraum startet. Während eines aktiven Zeitraums zeigt dies den Start des nächsten Zeitraums nach dem aktuellen. Gibt nur 'Unbekannt' zurück, wenn keine zukünftigen Zeiträume ermittelt wurden.", - "usage_tips": "Immer nützlich für Vorausplanung: 'Nächster günstiger Zeitraum startet in 3 Stunden' (egal, ob du gerade in einem Zeitraum bist oder nicht). Kombiniere mit Automatisierungen: 'Wenn nächste Startzeit in 10 Minuten ist, sende Benachrichtigung zur Vorbereitung der Waschmaschine'." - }, - "best_price_next_in_minutes": { - "description": "Zeit bis zum nächsten günstigen Zeitraum", - "long_description": "Zeigt, wie lange es bis zum nächsten günstigen Zeitraum dauert. Der State wird in Stunden angezeigt (z. B. 2,25 h) für Dashboards, während das Attribut `next_in_minutes` Minuten bereitstellt (z. B. 135) für Automationsbedingungen. Während eines aktiven Zeitraums zeigt dies die Zeit bis zum Zeitraum nach dem aktuellen. Gibt 0 während kurzer Übergangsphasen zurück. Aktualisiert sich jede Minute.", - "usage_tips": "Für Automationen: Attribut `next_in_minutes` nutzen wie 'Wenn next_in_minutes > 0 UND next_in_minutes < 15, warte, bevor du die Geschirrspülmaschine startest'. Wert > 0 zeigt immer an, dass ein zukünftiger Zeitraum geplant ist." - }, - "peak_price_end_time": { - "description": "Wann der aktuelle oder nächste teure Zeitraum endet", - "long_description": "Zeigt den Endzeitstempel des aktuellen teuren Zeitraums an, wenn dieser aktiv ist, oder das Ende des nächsten Zeitraums, wenn kein Zeitraum aktiv ist. Zeigt immer eine nützliche Zeitreferenz zur Planung. Gibt nur 'Unbekannt' zurück, wenn keine Zeiträume ermittelt wurden.", - "usage_tips": "Nutze dies, um 'Teurer Zeitraum endet in 1 Stunde' (wenn aktiv) oder 'Nächster teurer Zeitraum endet um 18:00' (wenn inaktiv) anzuzeigen. Kombiniere mit Automatisierungen, um den Betrieb nach der Spitzenzeit fortzusetzen." - }, - "peak_price_period_duration": { - "description": "Länge des aktuellen/nächsten teuren Zeitraums", - "long_description": "Gesamtdauer des aktuellen oder nächsten teuren Zeitraums. Der State wird in Stunden angezeigt (z. B. 1,5 h) für leichtes Ablesen in der UI, während das Attribut `period_duration_minutes` denselben Wert in Minuten bereitstellt (z. B. 90) für Automationen. Dieser Wert repräsentiert die **volle geplante Dauer** des Zeitraums und ist konstant während des gesamten Zeitraums, auch wenn die verbleibende Zeit (remaining_minutes) abnimmt.", - "usage_tips": "Kombiniere mit remaining_minutes, um zu berechnen, wann langlaufende Geräte gestoppt werden sollen: Zeitraum begann vor `period_duration_minutes - remaining_minutes` Minuten. Dieses Attribut unterstützt Energiespar-Strategien, indem es hilft, Hochverbrauchsaktivitäten außerhalb teurer Perioden zu planen." - }, - "peak_price_remaining_minutes": { - "description": "Verbleibende Zeit im aktuellen teuren Zeitraum", - "long_description": "Zeigt, wie viel Zeit im aktuellen teuren Zeitraum noch verbleibt. Der State wird in Stunden angezeigt (z. B. 0,75 h) für einfaches Ablesen in Dashboards, während das Attribut `remaining_minutes` dieselbe Zeit in Minuten liefert (z. B. 45) für Automationsbedingungen. **Countdown-Timer**: Dieser Wert dekrementiert jede Minute während eines aktiven Zeitraums. Gibt 0 zurück, wenn kein teurer Zeitraum aktiv ist. Aktualisiert sich minütlich.", - "usage_tips": "Für Automationen: Nutze Attribut `remaining_minutes` wie 'Wenn remaining_minutes > 60, setze Heizung auf Energiesparmodus' oder 'Wenn remaining_minutes < 15, erhöhe Temperatur wieder'. UI zeigt benutzerfreundliche Stunden (z. B. 1,25 h). Wert 0 zeigt an, dass kein teurer Zeitraum aktiv ist." - }, - "peak_price_progress": { - "description": "Fortschritt durch aktuellen teuren Zeitraum (0% wenn inaktiv)", - "long_description": "Zeigt den Fortschritt durch den aktuellen teuren Zeitraum als 0–100%. Gibt 0% zurück, wenn kein Zeitraum aktiv ist. Aktualisiert sich jede Minute. 0% bedeutet Zeitraum gerade gestartet, 100% bedeutet, er endet gleich.", - "usage_tips": "Visueller Fortschrittsindikator in Dashboards. Automatisierung: 'Wenn progress > 0 UND progress > 90, bereite normale Heizplanung vor'. Wert 0 zeigt keinen aktiven Zeitraum an." - }, - "peak_price_next_start_time": { - "description": "Wann der nächste teure Zeitraum startet", - "long_description": "Zeigt, wann der nächste kommende teure Zeitraum startet. Während eines aktiven Zeitraums zeigt dies den Start des nächsten Zeitraums nach dem aktuellen. Gibt nur 'Unbekannt' zurück, wenn kein zukünftiger Zeitraum ermittelt wurde.", - "usage_tips": "Immer nützlich für Planung: 'Nächster teurer Zeitraum startet in 2 Stunden'. Automatisierung: 'Wenn nächste Startzeit in 30 Minuten ist, reduziere Heiztemperatur vorsorglich'." - }, - "peak_price_next_in_minutes": { - "description": "Zeit bis zum nächsten teuren Zeitraum", - "long_description": "Zeigt, wie lange es bis zum nächsten teuren Zeitraum dauert. Der State wird in Stunden angezeigt (z. B. 2,25 h) für Dashboards, während das Attribut `next_in_minutes` Minuten bereitstellt (z. B. 135) für Automationsbedingungen. Während eines aktiven Zeitraums zeigt dies die Zeit bis zum Zeitraum nach dem aktuellen. Gibt 0 während kurzer Übergangsphasen zurück. Aktualisiert sich jede Minute.", - "usage_tips": "Für Automationen: Attribut `next_in_minutes` nutzen wie 'Wenn next_in_minutes > 0 UND next_in_minutes < 10, reduziere Heizung vorsorglich bevor der teure Zeitraum beginnt'. Wert > 0 zeigt immer an, dass ein zukünftiger teurer Zeitraum geplant ist." - }, - "home_type": { - "description": "Art der Wohnung (Wohnung, Haus usw.)", - "long_description": "Zeigt den Wohnungstyp, wie in deinem Tibber-Konto konfiguriert. Diese Metadaten können nützlich sein, um Energieverbrauchsmuster zu kategorisieren.", - "usage_tips": "Nutze dies zur Organisation deines Smart-Home-Systems oder für Analysezwecke." - }, - "home_size": { - "description": "Wohnfläche in Quadratmetern", - "long_description": "Zeigt die Größe deiner Wohnung in Quadratmetern, wie in deinem Tibber-Konto konfiguriert. Kann verwendet werden, um den Energieverbrauch pro Quadratmeter zu berechnen.", - "usage_tips": "Nutze dies für Energieeffizienzberechnungen: 'Meine Wohnung verbraucht X kWh pro Quadratmeter pro Jahr'." - }, - "main_fuse_size": { - "description": "Hauptsicherungsgröße in Ampere", - "long_description": "Zeigt die Kapazität deiner Hauptsicherung in Ampere. Dies bestimmt die maximale elektrische Last, die deine Wohnung gleichzeitig bewältigen kann.", - "usage_tips": "Nutze dies zur Überlastungsvermeidung: 'Wenn der Gesamtstromverbrauch sich der Sicherungsgröße nähert, verschiebe das Starten zusätzlicher Geräte'." - }, - "number_of_residents": { - "description": "Anzahl der im Haushalt lebenden Personen", - "long_description": "Zeigt die Anzahl der Bewohner, wie in deinem Tibber-Konto konfiguriert. Nützlich für Pro-Kopf-Energieverbrauchsberechnungen.", - "usage_tips": "Nutze dies für Haushalts-Energieanalysen: 'Energieverbrauch pro Person pro Tag'." - }, - "primary_heating_source": { - "description": "Primärer Heizungstyp", - "long_description": "Zeigt den Typ des in deiner Wohnung verwendeten Heizsystems, wie in deinem Tibber-Konto konfiguriert. Dies kann eine Wärmepumpe, Elektroheizung, Gas, Öl oder andere Heizquellen sein.", - "usage_tips": "Nutze dies zur Kategorisierung heizungsbezogener Automatisierungen oder für Energieverbrauchsanalysen nach Heizungsart." - }, - "grid_company": { - "description": "Name deines Stromnetzbetreibers", - "long_description": "Zeigt den Namen des Unternehmens, das das Stromnetz in deiner Region betreibt. Dies ist der Verteilnetzbetreiber (VNB), der für die Stromlieferung zu deinem Haus verantwortlich ist.", - "usage_tips": "Nützlich für administrative Zwecke und zur Behebung netzbezogener Probleme." - }, - "grid_area_code": { - "description": "Netzgebiets-Kennziffer", - "long_description": "Zeigt den Code, der dein Stromnetzgebiet identifiziert. Dieser Code wird vom Netzbetreiber für Routing- und Abrechnungszwecke verwendet.", - "usage_tips": "Nutze dies als administrative Referenz oder bei der Kontaktaufnahme mit deinem Netzbetreiber." - }, - "price_area_code": { - "description": "Strompreis-Zonencode", - "long_description": "Zeigt den Code für deine Strompreiszone (z.B. NO1, NO2, SE3, DK1). Verschiedene Zonen haben unterschiedliche Großhandelsstrompreise basierend auf regionalem Angebot und Nachfrage.", - "usage_tips": "Nutze dies, um zu verstehen, in welcher Preisregion du dich befindest. Nützlich beim Preisvergleich mit anderen oder bei der Analyse regionaler Preismuster." - }, - "consumption_ean": { - "description": "EAN-Code für Stromverbrauchsmessung", - "long_description": "Zeigt die Europäische Artikelnummer (EAN), die deinen Stromverbrauchszähler eindeutig identifiziert. Dieser 18-stellige Code wird für Abrechnungs- und Verwaltungszwecke verwendet.", - "usage_tips": "Nutze dies bei der Kommunikation mit deinem Stromanbieter oder für administrative Dokumentation." - }, - "production_ean": { - "description": "EAN-Code für Stromerzeugungsmessung", - "long_description": "Zeigt die Europäische Artikelnummer (EAN) für deinen Stromerzeugungszähler (wenn du Solarpanels oder andere Erzeugung hast). Dieser Code verfolgt Strom, den du ins Netz einspeist.", - "usage_tips": "Relevant, wenn du Solarpanels oder andere Stromerzeugung hast. Nutze für administrative Zwecke und bei der Beantragung von Einspeisevergütung." - }, - "energy_tax_type": { - "description": "Art der angewandten Energiesteuer", - "long_description": "Zeigt die Energiesteuerkategorie, die auf deinen Stromverbrauch angewendet wird. Steuersätze variieren nach Land und manchmal nach Verbrauchertyp (privat, gewerblich usw.).", - "usage_tips": "Nutze dies zum Verständnis der Aufschlüsselung deiner Stromrechnung und für Gesamtkostenberechnungen." - }, - "vat_type": { - "description": "Mehrwertsteuerkategorie", - "long_description": "Zeigt die Mehrwertsteuerkategorie, die auf deinen Stromverbrauch angewendet wird. Mehrwertsteuersätze variieren nach Land und können für Strom anders sein als für andere Waren und Dienstleistungen.", - "usage_tips": "Nutze dies zum Verständnis deiner Stromrechnung und zur Berechnung der Gesamtkosten inklusive Steuern." - }, - "estimated_annual_consumption": { - "description": "Geschätzter jährlicher Stromverbrauch in kWh", - "long_description": "Zeigt deinen geschätzten jährlichen Stromverbrauch in Kilowattstunden, wie in deinem Tibber-Konto berechnet oder konfiguriert. Diese Schätzung wird verwendet, um den tatsächlichen Verbrauch mit den erwarteten Werten zu vergleichen.", - "usage_tips": "Nutze dies, um zu verfolgen, ob dein tatsächlicher Verbrauch über oder unter den Erwartungen liegt. Vergleiche den monatlichen Verbrauch mit 1/12 dieses Wertes, um ungewöhnliche Muster zu identifizieren." - }, - "subscription_status": { - "description": "Status deines Tibber-Abonnements", - "long_description": "Zeigt, ob dein Tibber-Abonnement derzeit aktiv ist, beendet wurde oder auf Aktivierung wartet. Ein Status 'Aktiv' bedeutet, dass du aktiv Strom über Tibber beziehst.", - "usage_tips": "Nutze dies zur Überwachung deines Abonnementstatus. Richte Benachrichtigungen ein, wenn sich der Status von 'Aktiv' ändert, um einen unterbrechungsfreien Service sicherzustellen." - }, - "day_pattern_yesterday": { - "description": "Erkanntes Preismuster der gestrigen Strompreise", - "long_description": "Klassifiziert gestern in ein Preismuster: Tal (günstig in der Mitte), Gipfel (teuer in der Mitte), Doppeltal (zwei günstige Perioden), Doppelgipfel (zwei teure Perioden), Flach (geringe Variation), Steigend, Fallend oder Gemischt. Die Konfidenz- und CV-Attribute zeigen, wie verlässlich das Muster erkannt wurde.", - "usage_tips": "Nutze das gestrige Muster für Automationen: Ein Tal-Tag wiederholt sich oft am nächsten Tag und deutet darauf hin, dass Verbraucher auf die günstigen Mittagsstunden verschoben werden sollten." - }, - "day_pattern_today": { - "description": "Erkanntes Preismuster der heutigen Strompreise", - "long_description": "Klassifiziert heute in ein Preismuster: Tal (günstig mittags), Gipfel (teuer mittags), Doppeltal (W-Form), Doppelgipfel (M-Form), Flach, Steigend, Fallend oder Gemischt. Attribute enthalten Konfidenz (0–1), Variationskoeffizient, Knickpunktzeiten und Tagessegmente.", - "usage_tips": "Nutze das Tagesmuster, um Verbraucher zu verschieben. Tal-Tag: Spülmaschine, Waschmaschine oder E-Auto-Laden in die günstige Mittagszeit legen. Gipfel-Tag: früh morgens oder spät abends waschen. Die Attribute valley_start und valley_end ermöglichen minutengenaue Automationen." - }, - "day_pattern_tomorrow": { - "description": "Erkanntes Preismuster der morgigen Strompreise", - "long_description": "Klassifiziert morgen (sobald Daten verfügbar sind, typisch nach 13 Uhr) in ein Preismuster mit demselben Algorithmus wie heute. Die Attribute valley_start/valley_end oder peak_start/peak_end geben Knickpunktzeiten für das primäre Extremum an.", - "usage_tips": "Richte Abendautomationen ein, die das morgige Muster lesen und Wärmepumpe, Autolader oder Warmwasserbereiter für den nächsten Tag vorkonfigurieren. Kombiniere mit dem tomorrow_data_available Binärsensor." - }, - "chart_data_export": { - "description": "Datenexport für Dashboard-Integrationen", - "long_description": "Dieser Sensor ruft den get_chartdata-Service mit deiner konfigurierten YAML-Konfiguration auf und stellt das Ergebnis als Entity-Attribute bereit. Der Status zeigt 'ready' wenn Daten verfügbar sind, 'error' bei Fehlern, oder 'pending' vor dem ersten Aufruf. Perfekt für Dashboard-Integrationen wie ApexCharts, die Preisdaten aus Entity-Attributen lesen.", - "usage_tips": "Konfiguriere die YAML-Parameter in den Integrationsoptionen entsprechend deinem get_chartdata-Service-Aufruf. Der Sensor aktualisiert automatisch bei Preisdaten-Updates (typischerweise nach Mitternacht und wenn morgige Daten eintreffen). Greife auf die Service-Response-Daten direkt über die Entity-Attribute zu - die Struktur entspricht exakt dem, was get_chartdata zurückgibt." - }, - "chart_metadata": { - "description": "Leichtgewichtige Metadaten für Diagrammkonfiguration", - "long_description": "Liefert wesentliche Diagrammkonfigurationswerte als Sensor-Attribute. Nützlich für jede Diagrammkarte, die Y-Achsen-Grenzen benötigt. Der Sensor ruft get_chartdata im Nur-Metadaten-Modus auf (keine Datenverarbeitung) und extrahiert: yaxis_min, yaxis_max (vorgeschlagener Y-Achsenbereich für optimale Skalierung). Der Status spiegelt das Service-Call-Ergebnis wider: 'ready' bei Erfolg, 'error' bei Fehler, 'pending' während der Initialisierung.", - "usage_tips": "Konfiguriere über configuration.yaml unter tibber_prices.chart_metadata_config (optional: day, subunit_currency, resolution). Der Sensor aktualisiert sich automatisch bei Preisdatenänderungen. Greife auf Metadaten aus Attributen zu: yaxis_min, yaxis_max. Verwende mit config-template-card oder jedem Tool, das Entity-Attribute liest - perfekt für dynamische Diagrammkonfiguration ohne manuelle Berechnungen." - } + "current_interval_price_base": { + "description": "Aktueller Strompreis in Hauptwährung (EUR/kWh, NOK/kWh, etc.) für Energie-Dashboard", + "long_description": "Zeigt den aktuellen Preis pro kWh in Hauptwährungseinheiten an (z.B. EUR/kWh statt ct/kWh, NOK/kWh statt øre/kWh). Dieser Sensor ist speziell für die Verwendung mit dem Energie-Dashboard von Home Assistant konzipiert, das Preise in Standard-Währungseinheiten benötigt.", + "usage_tips": "Verwende diesen Sensor beim Konfigurieren des Energie-Dashboards unter Einstellungen → Dashboards → Energie. Wähle diesen Sensor als 'Entität mit dem aktuellen Preis' aus, um deine Energiekosten automatisch zu berechnen. Das Energie-Dashboard multipliziert deinen Energieverbrauch (kWh) mit diesem Preis, um die Gesamtkosten anzuzeigen." }, - "binary_sensor": { - "tomorrow_data_available": { - "description": "Ob Preisdaten für morgen verfügbar sind", - "long_description": "Gibt an, ob Preisdaten für den folgenden Tag von Tibber empfangen wurden", - "usage_tips": "Nutze dies, um zu überprüfen, ob die Preise für morgen für die Planung verfügbar sind" - }, - "peak_price_period": { - "description": "Ob das aktuelle Intervall zu den teuersten des Tages gehört", - "long_description": "Wird aktiviert, wenn der aktuelle Preis in den oberen 20% der heutigen Preise liegt", - "usage_tips": "Nutze dies, um den Betrieb von Geräten mit hohem Verbrauch während teurer Intervalle zu vermeiden" - }, - "best_price_period": { - "description": "Ob das aktuelle Intervall zu den günstigsten des Tages gehört", - "long_description": "Wird aktiviert, wenn der aktuelle Preis in den unteren 20% der heutigen Preise liegt", - "usage_tips": "Nutze dies, um Geräte mit hohem Verbrauch während der günstigsten Intervalle zu betreiben" - }, - "connection": { - "description": "Ob die Verbindung zur Tibber API funktioniert", - "long_description": "Zeigt an, ob die Integration erfolgreich eine Verbindung zur Tibber API herstellen kann", - "usage_tips": "Nutze dies, um den Verbindungsstatus zur Tibber API zu überwachen" - }, - "has_ventilation_system": { - "description": "Ob deine Wohnung über eine Lüftungsanlage verfügt", - "long_description": "Zeigt an, ob eine Lüftungsanlage für deine Wohnung im Tibber-Konto registriert ist. Lüftungsanlagen können erhebliche Stromverbraucher sein, die von intelligenter Planung profitieren können.", - "usage_tips": "Nutze dies, um lüftungsspezifische Automatisierungen oder Energieüberwachung zu aktivieren. Falls aktiv, erwäge die Planung der Lüftung während Niedrigpreisphasen." - }, - "realtime_consumption_enabled": { - "description": "Ob die Echtzeit-Verbrauchsüberwachung aktiv ist", - "long_description": "Zeigt an, ob die Echtzeit-Stromverbrauchsüberwachung für dein Tibber-Zuhause aktiviert und aktiv ist. Dies erfordert kompatible Messhardware (z. B. Tibber Pulse) und ein aktives Abonnement.", - "usage_tips": "Verwende dies, um zu überprüfen, ob Echtzeit-Verbrauchsdaten verfügbar sind. Aktiviere Benachrichtigungen, falls dies unerwartet auf 'Aus' wechselt, was auf potenzielle Hardware- oder Verbindungsprobleme hinweist." - } + "next_interval_price": { + "description": "Der Strompreis für das nächste 15-Minuten-Intervall pro kWh", + "long_description": "Zeigt den Preis für das nächste 15-Minuten-Intervall von deinem Tibber-Abonnement an", + "usage_tips": "Nutze dies, um dich auf kommende Preisänderungen vorzubereiten oder Geräte während günstigerer Intervalle zu planen" }, - "number": { - "best_price_flex_override": { - "description": "Maximaler Prozentsatz über dem Tagesminimumpreis, den Intervalle haben können und trotzdem als 'Bestpreis' gelten. Empfohlen: 15-20 mit Lockerung aktiviert (Standard), oder 25-35 ohne Lockerung. Maximum: 50 (Obergrenze für zuverlässige Periodenerkennung).", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Flexibilität' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", - "usage_tips": "Aktiviere diese Entität, um die Bestpreiserkennung dynamisch über Automatisierungen anzupassen, z.B. höhere Flexibilität bei kritischen Lasten oder engere Anforderungen für flexible Geräte." - }, - "best_price_min_distance_override": { - "description": "Minimaler prozentualer Abstand unter dem Tagesdurchschnitt. Intervalle müssen so weit unter dem Durchschnitt liegen, um als 'Bestpreis' zu gelten. Hilft, echte Niedrigpreis-Perioden von durchschnittlichen Preisen zu unterscheiden.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestabstand' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", - "usage_tips": "Erhöhe den Wert, wenn du strengere Bestpreis-Kriterien möchtest. Verringere ihn, wenn zu wenige Perioden erkannt werden." - }, - "best_price_min_period_length_override": { - "description": "Minimale Periodenlänge in 15-Minuten-Intervallen. Perioden kürzer als diese werden nicht gemeldet. Beispiel: 2 = mindestens 30 Minuten.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestperiodenlänge' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", - "usage_tips": "Passe an die typische Laufzeit deiner Geräte an: 2 (30 Min) für Schnellprogramme, 4-8 (1-2 Std) für normale Zyklen, 8+ für lange ECO-Programme." - }, - "best_price_min_periods_override": { - "description": "Minimale Anzahl an Bestpreis-Perioden, die täglich gefunden werden sollen. Wenn Lockerung aktiviert ist, wird das System die Kriterien automatisch anpassen, um diese Zahl zu erreichen.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestperioden' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", - "usage_tips": "Setze dies auf die Anzahl zeitkritischer Aufgaben, die du täglich hast. Beispiel: 2 für zwei Waschmaschinenladungen." - }, - "best_price_relaxation_attempts_override": { - "description": "Anzahl der Versuche, die Kriterien schrittweise zu lockern, um die Mindestperiodenanzahl zu erreichen. Jeder Versuch erhöht die Flexibilität um 3 Prozent. Bei 0 werden nur Basis-Kriterien verwendet.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Lockerungsversuche' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", - "usage_tips": "Höhere Werte machen die Periodenerkennung anpassungsfähiger an Tage mit stabilen Preisen. Setze auf 0, um strenge Kriterien ohne Lockerung zu erzwingen." - }, - "best_price_gap_count_override": { - "description": "Maximale Anzahl teurerer Intervalle, die zwischen günstigen Intervallen erlaubt sind und trotzdem als eine zusammenhängende Periode gelten. Bei 0 müssen günstige Intervalle aufeinander folgen.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Lückentoleranz' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", - "usage_tips": "Erhöhe dies für Geräte mit variabler Last (z.B. Wärmepumpen), die kurze teurere Intervalle tolerieren können. Setze auf 0 für kontinuierliche günstige Perioden." - }, - "peak_price_flex_override": { - "description": "Maximaler Prozentsatz unter dem Tagesmaximumpreis, den Intervalle haben können und trotzdem als 'Spitzenpreis' gelten. Gleiche Empfehlungen wie für Bestpreis-Flexibilität.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Flexibilität' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", - "usage_tips": "Nutze dies, um den Spitzenpreis-Schwellenwert zur Laufzeit für Automatisierungen anzupassen, die den Verbrauch während teurer Stunden vermeiden." - }, - "peak_price_min_distance_override": { - "description": "Minimaler prozentualer Abstand über dem Tagesdurchschnitt. Intervalle müssen so weit über dem Durchschnitt liegen, um als 'Spitzenpreis' zu gelten.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestabstand' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", - "usage_tips": "Erhöhe den Wert, um nur extreme Preisspitzen zu erfassen. Verringere ihn, um mehr Hochpreiszeiten einzubeziehen." - }, - "peak_price_min_period_length_override": { - "description": "Minimale Periodenlänge in 15-Minuten-Intervallen für Spitzenpreise. Kürzere Preisspitzen werden nicht als Perioden gemeldet.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestperiodenlänge' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", - "usage_tips": "Kürzere Werte erfassen kurze Preisspitzen. Längere Werte fokussieren auf anhaltende Hochpreisphasen." - }, - "peak_price_min_periods_override": { - "description": "Minimale Anzahl an Spitzenpreis-Perioden, die täglich gefunden werden sollen.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestperioden' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", - "usage_tips": "Setze dies basierend darauf, wie viele Hochpreisphasen du pro Tag für Automatisierungen erfassen möchtest." - }, - "peak_price_relaxation_attempts_override": { - "description": "Anzahl der Versuche, die Kriterien zu lockern, um die Mindestanzahl an Spitzenpreis-Perioden zu erreichen.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Lockerungsversuche' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", - "usage_tips": "Erhöhe dies, wenn an Tagen mit stabilen Preisen keine Perioden gefunden werden. Setze auf 0, um strenge Kriterien zu erzwingen." - }, - "peak_price_gap_count_override": { - "description": "Maximale Anzahl günstigerer Intervalle, die zwischen teuren Intervallen erlaubt sind und trotzdem als eine Spitzenpreis-Periode gelten.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Lückentoleranz' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", - "usage_tips": "Höhere Werte erfassen längere Hochpreisphasen auch mit kurzen Preiseinbrüchen. Setze auf 0, um strikt zusammenhängende Spitzenpreise zu erfassen." - } + "previous_interval_price": { + "description": "Der Strompreis für das vorherige 15-Minuten-Intervall pro kWh", + "long_description": "Zeigt den Preis für das vorherige 15-Minuten-Intervall von deinem Tibber-Abonnement an", + "usage_tips": "Nutze dies, um vergangene Preisänderungen zu überprüfen oder den Preisverlauf zu verfolgen" }, - "switch": { - "best_price_enable_relaxation_override": { - "description": "Wenn aktiviert, werden die Kriterien automatisch gelockert, um die Mindestperiodenanzahl zu erreichen. Wenn deaktiviert, werden nur Perioden gemeldet, die die strengen Kriterien erfüllen (möglicherweise null Perioden bei stabilen Preisen).", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestanzahl erreichen' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", - "usage_tips": "Aktiviere dies für garantierte tägliche Automatisierungsmöglichkeiten. Deaktiviere es, wenn du nur wirklich günstige Zeiträume willst, auch wenn das bedeutet, dass an manchen Tagen keine Perioden gefunden werden." - }, - "peak_price_enable_relaxation_override": { - "description": "Wenn aktiviert, werden die Kriterien automatisch gelockert, um die Mindestperiodenanzahl zu erreichen. Wenn deaktiviert, werden nur echte Preisspitzen gemeldet.", - "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestanzahl erreichen' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", - "usage_tips": "Aktiviere dies für konsistente Spitzenpreis-Warnungen. Deaktiviere es, um nur extreme Preisspitzen zu erfassen." - } + "current_hour_average_price": { + "description": "Gleitender 5-Intervall-Durchschnittspreis pro kWh", + "long_description": "Zeigt den durchschnittlichen Preis pro kWh berechnet aus 5 Intervallen: 2 vorherige, aktuelles und 2 nächste Intervalle (ca. 75 Minuten insgesamt). Dies bietet einen geglätteten 'Stundenpreis', der sich mit der Zeit anpasst, anstatt an feste Uhrzeiten gebunden zu sein.", + "usage_tips": "Nutze dies für einen stabileren Preisindikator, der kurzfristige Schwankungen glättet und dennoch auf Preisänderungen reagiert. Besser als feste Stundenpreise für Verbrauchsentscheidungen." }, - "home_types": { - "APARTMENT": "Wohnung", - "ROWHOUSE": "Reihenhaus", - "HOUSE": "Haus", - "COTTAGE": "Ferienhaus" + "next_hour_average_price": { + "description": "Gleitender 5-Intervall-Durchschnittspreis für nächste Stunde pro kWh", + "long_description": "Zeigt den durchschnittlichen Preis pro kWh berechnet aus 5 Intervallen, die eine Stunde voraus zentriert sind: ungefähr Intervalle +2 bis +6 von jetzt (Minuten +30 bis +105 abdeckend). Dies bietet einen vorausschauenden geglätteten 'Stundenpreis' zur Verbrauchsplanung.", + "usage_tips": "Nutze dies, um Preisänderungen in der nächsten Stunde vorherzusehen. Hilfreich für die Planung von verbrauchsintensiven Aktivitäten wie Elektrofahrzeug-Laden, Geschirrspüler oder Heizsysteme." }, - "time_units": { - "day": "{count} Tag", - "days": "{count} Tagen", - "hour": "{count} Stunde", - "hours": "{count} Stunden", - "minute": "{count} Minute", - "minutes": "{count} Minuten", - "ago": "vor {parts}", - "now": "jetzt" + "lowest_price_today": { + "description": "Der niedrigste Strompreis für heute pro kWh", + "long_description": "Zeigt den niedrigsten Preis pro kWh für den aktuellen Tag von deinem Tibber-Abonnement an", + "usage_tips": "Nutze dies, um aktuelle Preise mit der günstigsten Zeit des Tages zu vergleichen" }, - "attribution": "Daten bereitgestellt von Tibber" + "highest_price_today": { + "description": "Der höchste Strompreis für heute pro kWh", + "long_description": "Zeigt den höchsten Preis pro kWh für den aktuellen Tag von deinem Tibber-Abonnement an", + "usage_tips": "Nutze dies, um den Betrieb von Geräten während Spitzenpreiszeiten zu vermeiden" + }, + "average_price_today": { + "description": "Der typische Strompreis für heute pro kWh (konfigurierbares Anzeigeformat)", + "long_description": "Zeigt den typischen Preis pro kWh für heute. **Standardmäßig zeigt der Status den Median** (resistent gegen extreme Preisspitzen, zeigt was du generell erwarten kannst). Du kannst dies in den Integrationsoptionen ändern, um stattdessen das arithmetische Mittel anzuzeigen. Der alternative Wert ist immer als Attribut `price_mean` oder `price_median` für Automatisierungen verfügbar.", + "usage_tips": "Nutze den Status-Wert für die Anzeige. Für exakte Kostenberechnungen in Automatisierungen nutze: {{ state_attr('sensor.average_price_today', 'price_mean') }}" + }, + "lowest_price_tomorrow": { + "description": "Der niedrigste Strompreis für morgen pro kWh", + "long_description": "Zeigt den niedrigsten Preis pro kWh für den morgigen Tag von deinem Tibber-Abonnement an. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", + "usage_tips": "Nutze dies zur Planung energieintensiver Aktivitäten wie das Laden von Elektrofahrzeugen oder das Aufheizen von Warmwasserspeichern für morgen. Wenn der morgige Mindestpreis deutlich niedriger ist als der heutige, kannst du den Verbrauch verschieben." + }, + "highest_price_tomorrow": { + "description": "Der höchste Strompreis für morgen pro kWh", + "long_description": "Zeigt den höchsten Preis pro kWh für den morgigen Tag von deinem Tibber-Abonnement an. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", + "usage_tips": "Nutze dies, um den Betrieb von Geräten während der teuersten Stunden morgen zu vermeiden. Plane nicht-essentielle Lasten außerhalb dieser Spitzenpreiszeiten." + }, + "average_price_tomorrow": { + "description": "Der typische Strompreis für morgen pro kWh (konfigurierbares Anzeigeformat)", + "long_description": "Zeigt den typischen Preis pro kWh für morgen. **Standardmäßig zeigt der Status den Median** (resistent gegen extreme Preisspitzen). Du kannst dies in den Integrationsoptionen ändern, um stattdessen das arithmetische Mittel anzuzeigen. Der alternative Wert ist als Attribut verfügbar. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", + "usage_tips": "Nutze den Status-Wert für Anzeige und schnelle Vergleiche. Für Automatisierungen, die exakte Kostenberechnungen benötigen, nutze das Attribut `price_mean`: {{ state_attr('sensor.average_price_tomorrow', 'price_mean') }}" + }, + "yesterday_price_level": { + "description": "Aggregiertes Preisniveau für gestern", + "long_description": "Zeigt das aggregierte Preisniveau für alle Intervalle von gestern. Verwendet die gleiche Logik wie die Stundensensoren, um das Gesamtpreisniveau für den ganzen Tag zu ermitteln.", + "usage_tips": "Nutze dies, um die gestrige Preissituation zu verstehen. Vergleiche mit heute, um tägliche Trends zu sehen." + }, + "today_price_level": { + "description": "Aggregiertes Preisniveau für heute", + "long_description": "Zeigt das aggregierte Preisniveau für alle Intervalle von heute. Verwendet die gleiche Logik wie die Stundensensoren, um das Gesamtpreisniveau für den ganzen Tag zu ermitteln.", + "usage_tips": "Nutze dies, um die heutige Preissituation auf einen Blick zu verstehen. Hilfreich für schnelle Einschätzungen, ob heute generell günstig oder teuer ist." + }, + "tomorrow_price_level": { + "description": "Aggregiertes Preisniveau für morgen", + "long_description": "Zeigt das aggregierte Preisniveau für alle Intervalle von morgen. Verwendet die gleiche Logik wie die Stundensensoren, um das Gesamtpreisniveau für den ganzen Tag zu ermitteln. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", + "usage_tips": "Nutze dies, um die morgige Preissituation zu verstehen. Vergleiche mit heute, um zu sehen, ob morgen günstiger oder teurer für den Energieverbrauch wird." + }, + "yesterday_price_rating": { + "description": "Aggregierte Preisbewertung für gestern", + "long_description": "Zeigt die aggregierte Preisbewertung (niedrig/normal/hoch) für alle Intervalle von gestern, basierend auf deinen konfigurierten Schwellenwerten. Verwendet die gleiche Logik wie die Stundensensoren, um die Gesamtbewertung für den ganzen Tag zu ermitteln.", + "usage_tips": "Nutze dies, um die gestrige Preissituation relativ zu deinen persönlichen Schwellenwerten zu verstehen. Vergleiche mit heute für Trendanalysen." + }, + "today_price_rating": { + "description": "Aggregierte Preisbewertung für heute", + "long_description": "Zeigt die aggregierte Preisbewertung (niedrig/normal/hoch) für alle Intervalle von heute, basierend auf deinen konfigurierten Schwellenwerten. Verwendet die gleiche Logik wie die Stundensensoren, um die Gesamtbewertung für den ganzen Tag zu ermitteln.", + "usage_tips": "Nutze dies, um die heutige Preissituation relativ zu deinen persönlichen Schwellenwerten schnell einzuschätzen. Hilft bei Verbrauchsentscheidungen für den aktuellen Tag." + }, + "tomorrow_price_rating": { + "description": "Aggregierte Preisbewertung für morgen", + "long_description": "Zeigt die aggregierte Preisbewertung (niedrig/normal/hoch) für alle Intervalle von morgen, basierend auf deinen konfigurierten Schwellenwerten. Verwendet die gleiche Logik wie die Stundensensoren, um die Gesamtbewertung für den ganzen Tag zu ermitteln. Dieser Sensor wird nicht verfügbar, bis die Preise für morgen von Tibber veröffentlicht werden (typischerweise zwischen 13:00 und 14:00 Uhr MEZ).", + "usage_tips": "Nutze dies, um den morgigen Energieverbrauch basierend auf deinen persönlichen Preisschwellenwerten zu planen. Vergleiche mit heute, um zu entscheiden, ob du den Verbrauch auf morgen verschieben oder heute nutzen solltest." + }, + "trailing_price_average": { + "description": "Der typische Strompreis der letzten 24 Stunden pro kWh (konfigurierbares Anzeigeformat)", + "long_description": "Zeigt den typischen Preis pro kWh der letzten 24 Stunden. **Standardmäßig zeigt der Status den Median** (resistent gegen extreme Spitzen, zeigt welches Preisniveau typisch war). Du kannst dies in den Integrationsoptionen ändern, um stattdessen das arithmetische Mittel anzuzeigen. Der alternative Wert ist als Attribut verfügbar. Wird alle 15 Minuten aktualisiert.", + "usage_tips": "Nutze den Status-Wert, um das typische aktuelle Preisniveau zu sehen. Für Kostenberechnungen nutze: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" + }, + "leading_price_average": { + "description": "Der typische Strompreis für die nächsten 24 Stunden pro kWh (konfigurierbares Anzeigeformat)", + "long_description": "Zeigt den typischen Preis pro kWh für die nächsten 24 Stunden. **Standardmäßig zeigt der Status den Median** (resistent gegen extreme Spitzen, zeigt welches Preisniveau zu erwarten ist). Du kannst dies in den Integrationsoptionen ändern, um stattdessen das arithmetische Mittel anzuzeigen. Der alternative Wert ist als Attribut verfügbar.", + "usage_tips": "Nutze den Status-Wert, um das typische kommende Preisniveau zu sehen. Für Kostenberechnungen nutze: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" + }, + "trailing_price_min": { + "description": "Der niedrigste Strompreis für die letzten 24 Stunden pro kWh", + "long_description": "Zeigt den niedrigsten Preis pro kWh aus den letzten 24 Stunden (nachlaufendes Minimum) von deinem Tibber-Abonnement an. Dies bietet den niedrigsten Preis, der in den letzten 24 Stunden gesehen wurde.", + "usage_tips": "Nutze dies, um die beste Preisgelegenheit zu sehen, die du in den letzten 24 Stunden hattest, und vergleiche sie mit den aktuellen Preisen." + }, + "trailing_price_max": { + "description": "Der höchste Strompreis für die letzten 24 Stunden pro kWh", + "long_description": "Zeigt den höchsten Preis pro kWh aus den letzten 24 Stunden (nachlaufendes Maximum) von deinem Tibber-Abonnement an. Dies bietet den höchsten Preis, der in den letzten 24 Stunden gesehen wurde.", + "usage_tips": "Nutze dies, um den Spitzenpreis in den letzten 24 Stunden zu sehen und die Preisvolatilität zu bewerten." + }, + "leading_price_min": { + "description": "Der niedrigste Strompreis für die nächsten 24 Stunden pro kWh", + "long_description": "Zeigt den niedrigsten Preis pro kWh für die nächsten 24 Stunden (vorlaufendes Minimum) von deinem Tibber-Abonnement an. Dies bietet den niedrigsten erwarteten Preis in den nächsten 24 Stunden basierend auf Prognosedaten.", + "usage_tips": "Nutze dies, um die beste kommende Preisgelegenheit zu identifizieren und energieintensive Aufgaben entsprechend zu planen." + }, + "leading_price_max": { + "description": "Der höchste Strompreis für die nächsten 24 Stunden pro kWh", + "long_description": "Zeigt den höchsten Preis pro kWh für die nächsten 24 Stunden (vorlaufendes Maximum) von deinem Tibber-Abonnement an. Dies bietet den höchsten erwarteten Preis in den nächsten 24 Stunden basierend auf Prognosedaten.", + "usage_tips": "Nutze dies, um den Betrieb von Geräten während kommender Spitzenpreiszeiten zu vermeiden." + }, + "current_interval_price_level": { + "description": "Die aktuelle Preislevelklassifikation", + "long_description": "Zeigt die Klassifizierung von Tibber für den aktuellen Preis im Vergleich zu historischen Preisen an", + "usage_tips": "Nutze dies, um Automatisierungen auf Basis des relativen Preisniveaus anstelle der absoluten Preise zu erstellen" + }, + "next_interval_price_level": { + "description": "Preisniveau für das nächste 15-Minuten-Intervall", + "long_description": "Zeigt die Preisniveau-Klassifizierung für das kommende Intervall an. Hilft bei der Antizipation kurzfristiger Preisänderungen für sofortige Planung.", + "usage_tips": "Nutze dies für schnelle Entscheidungen über das Starten oder Stoppen von Hochleistungsgeräten in den nächsten Minuten." + }, + "previous_interval_price_level": { + "description": "Preisniveau für das vorherige 15-Minuten-Intervall", + "long_description": "Zeigt die Preisniveau-Klassifizierung für das letzte Intervall an. Nützlich für historische Vergleiche und das Verständnis jüngster Preistrends.", + "usage_tips": "Nutze dies, um aktuelle mit kürzlichen Preisniveaus zu vergleichen oder Verbrauchsmuster gegen historische Preise zu analysieren." + }, + "current_hour_price_level": { + "description": "Aggregiertes Preisniveau für aktuelle gleitende Stunde (5 Intervalle)", + "long_description": "Zeigt das mediane Preisniveau über 5 Intervalle (2 vorherige, aktuelles, 2 nächste) mit ca. 75 Minuten Abdeckung. Bietet einen stabileren Preisniveau-Indikator, der kurzfristige Schwankungen glättet.", + "usage_tips": "Nutze dies für mittelfristige Planungsentscheidungen, wenn du nicht auf kurze Preisspitzen oder -einbrüche reagieren möchtest." + }, + "next_hour_price_level": { + "description": "Aggregiertes Preisniveau für nächste gleitende Stunde (5 Intervalle voraus)", + "long_description": "Zeigt das mediane Preisniveau über 5 Intervalle, die eine Stunde voraus zentriert sind. Hilft bei der Verbrauchsplanung basierend auf kommenden Preistrends statt momentanen zukünftigen Preisen.", + "usage_tips": "Nutze dies, um Aktivitäten für die nächste Stunde basierend auf einer geglätteten Preisniveau-Prognose zu planen." + }, + "current_interval_price_rating": { + "description": "Wie sich der Preis des aktuellen Intervalls mit historischen Daten vergleicht", + "long_description": "Zeigt, wie sich der Preis des aktuellen Intervalls im Vergleich zu historischen Preisdaten als Prozentsatz verhält", + "usage_tips": "Ein positiver Prozentsatz bedeutet, dass der aktuelle Preis überdurchschnittlich ist, negativ bedeutet unterdurchschnittlich" + }, + "next_interval_price_rating": { + "description": "Preisbewertung für das nächste 15-Minuten-Intervall", + "long_description": "Zeigt, wie sich der Preis des nächsten Intervalls im Vergleich zum gleitenden 24-Stunden-Durchschnitt verhält. Hilft vorherzusehen, ob kommende Preise über oder unter dem jüngsten Trend liegen.", + "usage_tips": "Nutze dies für schnelle Entscheidungen über das Starten von Aktivitäten im nächsten Intervall basierend auf der relativen Preisposition." + }, + "previous_interval_price_rating": { + "description": "Preisbewertung für das vorherige 15-Minuten-Intervall", + "long_description": "Zeigt, wie sich der Preis des letzten Intervalls im Vergleich zum gleitenden Durchschnitt verhielt. Nützlich für das Verständnis des jüngsten Preisverhaltens.", + "usage_tips": "Nutze dies zur Analyse, wie sich Preisbewertungen im Laufe der Zeit verändert haben oder um vergangene Verbrauchsentscheidungen zu validieren." + }, + "current_hour_price_rating": { + "description": "Aggregierte Preisbewertung für aktuelle gleitende Stunde (5 Intervalle)", + "long_description": "Zeigt die durchschnittliche Bewertung über 5 Intervalle (2 vorherige, aktuelles, 2 nächste). Basierend auf der durchschnittlichen prozentualen Abweichung vom gleitenden 24h-Durchschnitt, bietet dies einen geglätteten Bewertungsindikator.", + "usage_tips": "Nutze dies für stabile mittelfristige Preisbewertung, die nicht auf kurze Preisanomalien überreagiert." + }, + "next_hour_price_rating": { + "description": "Aggregierte Preisbewertung für nächste gleitende Stunde (5 Intervalle voraus)", + "long_description": "Zeigt die gemittelte Bewertung für 5 Intervalle, die eine Stunde voraus zentriert sind. Hilft zu verstehen, ob die nächste Stunde generell über oder unter durchschnittlicher Preisgestaltung liegen wird.", + "usage_tips": "Nutze dies, um zu entscheiden, ob du eine Stunde warten solltest, bevor du verbrauchsintensive Aktivitäten startest." + }, + "next_avg_1h": { + "description": "Durchschnittspreis für die nächste 1 Stunde (vorwärts-blickend ab nächstem Intervall)", + "long_description": "Vorwärts-blickender Durchschnitt: Zeigt den Durchschnitt der nächsten 4 Intervalle (1 Stunde) beginnend ab dem NÄCHSTEN 15-Minuten-Intervall (aktuelles nicht inkludiert). Unterscheidet sich von current_hour_average_price, das vergangene Intervalle einbezieht. Nutze dies für absolute Preisschwellen-Planung.", + "usage_tips": "Absolute Preisschwelle: Starte Geräte nur, wenn der Durchschnitt unter deinem maximal akzeptablen Preis bleibt (z.B. unter 0,25 EUR/kWh). Kombiniere mit Trend-Sensor für optimales Timing. Hinweis: Dies ist KEIN Ersatz für Stundenpreise - nutze current_hour_average_price dafür." + }, + "next_avg_2h": { + "description": "Durchschnittspreis für die nächsten 2 Stunden", + "long_description": "Zeigt den Durchschnittspreis für die nächsten 8 Intervalle (2 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", + "usage_tips": "Absolute Preisschwelle: Lege einen maximal akzeptablen Durchschnittspreis für Standard-Geräte wie Waschmaschinen fest. Stellt sicher, dass du nie mehr als dein Limit zahlst." + }, + "next_avg_3h": { + "description": "Durchschnittspreis für die nächsten 3 Stunden", + "long_description": "Zeigt den Durchschnittspreis für die nächsten 12 Intervalle (3 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", + "usage_tips": "Absolute Preisschwelle: Für EU Eco-Programme (Spülmaschinen, 3-4h Laufzeit). Starte nur, wenn der 3h-Durchschnitt unter deinem Preislimit liegt. Nutze mit Trend-Sensor um den besten Moment im akzeptablen Preisbereich zu finden." + }, + "next_avg_4h": { + "description": "Durchschnittspreis für die nächsten 4 Stunden", + "long_description": "Zeigt den Durchschnittspreis für die nächsten 16 Intervalle (4 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", + "usage_tips": "Absolute Preisschwelle: Lege maximal akzeptablen Preis für Wärmepumpen oder Warmwasserbereiter fest. Verhindert Betrieb während teurer Zeiträume unabhängig von relativen Trends." + }, + "next_avg_5h": { + "description": "Durchschnittspreis für die nächsten 5 Stunden", + "long_description": "Zeigt den Durchschnittspreis für die nächsten 20 Intervalle (5 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", + "usage_tips": "Absolute Preisschwelle: Brücke zwischen kurz- und langfristiger Planung. Nutze für erweiterte Zyklen mit harten Preislimits (z.B. Pool-Pumpen, verlängerte Heizzyklen)." + }, + "next_avg_6h": { + "description": "Durchschnittspreis für die nächsten 6 Stunden", + "long_description": "Zeigt den Durchschnittspreis für die nächsten 24 Intervalle (6 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", + "usage_tips": "Absolute Preisschwelle: Abendplanung mit Preisobergrenzen. Plane Aufgaben nur, wenn der 6h-Durchschnitt unter deinen maximal akzeptablen Kosten bleibt." + }, + "next_avg_8h": { + "description": "Durchschnittspreis für die nächsten 8 Stunden", + "long_description": "Zeigt den Durchschnittspreis für die nächsten 32 Intervalle (8 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", + "usage_tips": "Absolute Preisschwelle: Entscheidungen für Nachtbetrieb. Lege harte Preislimits für Nachtlasten fest (Batterieladung, Wärmespeicher). Überschreite niemals dein Budget." + }, + "next_avg_12h": { + "description": "Durchschnittspreis für die nächsten 12 Stunden", + "long_description": "Zeigt den Durchschnittspreis für die nächsten 48 Intervalle (12 Stunden) beginnend ab dem nächsten 15-Minuten-Intervall.", + "usage_tips": "Absolute Preisschwelle: Strategische Entscheidungen mit Preisobergrenzen. Fahre nur fort, wenn der 12h-Durchschnitt unter deinem maximal akzeptablen Preis liegt. Gut für verschiebbare Großlasten." + }, + "price_outlook_1h": { + "description": "Preisausblick für die nächste Stunde", + "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten Stunde (4 Intervalle). Alle Ausblick-Sensoren (1h–12h) haben dieselbe Basis: dein aktueller Preis — sie unterscheiden sich nur im Zeitfenster. Größere Fenster umfassen mehr Zukunftsstunden und glätten kurzfristige Spitzen. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", + "usage_tips": "Entscheidungshilfe: 'steigend' = JETZT HANDELN, dein aktueller Preis ist günstiger als der Stunden-Durchschnitt. 'fallend' = WARTEN, der Fenster-Durchschnitt ist günstiger als jetzt. 'stabil' = Timing egal. Häufiges Missverständnis: 'steigend' bedeutet NICHT 'zu spät' — es heißt, jetzt ist gerade ein guter Preis! Funktioniert unabhängig vom absoluten Preisniveau." + }, + "price_outlook_2h": { + "description": "Preisausblick für die nächsten 2 Stunden", + "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 2 Stunden (8 Intervalle). 'steigend' = aktueller Preis liegt unter dem 2h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", + "usage_tips": "Haushaltsgeräte: 'steigend' = jetzt starten, du hast gerade einen guten Preis. 'fallend' = bessere Preise kommen im 2h-Fenster, verschiebe wenn möglich. 'stabil' = egal, starte nach Bedarf. Kombiniere mit price_trajectory_2h um zu unterscheiden ob Preise noch fallen oder schon steigen." + }, + "price_outlook_3h": { + "description": "Preisausblick für die nächsten 3 Stunden", + "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 3 Stunden (12 Intervalle). 'steigend' = aktueller Preis liegt unter dem 3h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", + "usage_tips": "Eco-Programme: 'steigend' = Eco-Zyklus jetzt starten, Preise steigen im Fenster-Durchschnitt. 'fallend' = warten, günstigeres Fenster kommt. Kombiniere mit avg-Sensor: starte wenn Ausblick 'steigend' oder 'stabil' UND avg < dein Limit." + }, + "price_outlook_4h": { + "description": "Preisausblick für die nächsten 4 Stunden", + "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 4 Stunden (16 Intervalle). 'steigend' = aktueller Preis liegt unter dem 4h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", + "usage_tips": "Wärmepumpe/Batterie: 'steigend' = jetzt laden, du bist an einem relativen Tiefpunkt. 'fallend' = warten auf besseres Fenster im Durchschnitt. Wichtig: 'stark fallend' an einem Preistief bedeutet das Fenster ist im Schnitt günstiger — kombiniere mit price_trajectory_4h um zu sehen ob die Preise noch fallen oder schon aufsteigen." + }, + "price_outlook_5h": { + "description": "Preisausblick für die nächsten 5 Stunden", + "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 5 Stunden (20 Intervalle). 'steigend' = aktueller Preis liegt unter dem 5h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", + "usage_tips": "Erweiterte Zyklen: 'steigend' oder 'stabil' = guter Zeitpunkt zum Starten, Preise werden im Fenster-Schnitt nicht günstiger. 'fallend' = warten wenn dein Zeitplan es erlaubt." + }, + "price_outlook_6h": { + "description": "Preisausblick für die nächsten 6 Stunden", + "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 6 Stunden (24 Intervalle). 'steigend' = aktueller Preis liegt unter dem 6h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", + "usage_tips": "Abendentscheidungen: 'steigend' = Strom jetzt nutzen, solange er relativ günstig ist. 'fallend' = Abend-/Nachtpreise werden im Durchschnitt besser, warte wenn möglich." + }, + "price_outlook_8h": { + "description": "Preisausblick für die nächsten 8 Stunden", + "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 8 Stunden (32 Intervalle). 'steigend' = aktueller Preis liegt unter dem 8h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", + "usage_tips": "Nachtplanung: 'steigend' = heute Nacht/morgen wird im Schnitt teurer, Strom jetzt nutzen. 'fallend' = Nachtpreise werden im Schnitt günstiger, Warten lohnt sich." + }, + "price_outlook_12h": { + "description": "Preisausblick für die nächsten 12 Stunden", + "long_description": "Vergleicht deinen aktuellen Preis mit dem Durchschnitt aller Intervalle der nächsten 12 Stunden (48 Intervalle). 'steigend' = aktueller Preis liegt unter dem 12h-Fenster-Durchschnitt; 'fallend' = Fenster-Durchschnitt ist günstiger als jetzt. Steigend/fallend ab ±3%, stark ab ±9% (konfigurierbar, volatilitätsadaptiv).", + "usage_tips": "Strategische Entscheidungen: 'steigend' = du bist an einem Tiefpunkt relativ zu den nächsten 12h, guter Zeitpunkt für stromintensive Aufgaben. 'fallend' = deutlich bessere Preise kommen im Schnitt, warte wenn möglich." + }, + "price_trajectory_2h": { + "description": "Preisverlauf innerhalb des nächsten 2-Stunden-Fensters", + "long_description": "Compares the average of the first hour (4 intervals) with the average of the second hour (4 intervals) within the next 2-hour window. 'rising' = second half more expensive than first half — prices are climbing within the window. 'falling' = second half cheaper — prices are dropping within the window. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive than first) — revealing the upcoming reversal. Power combination: 'outlook: falling + trajectory: rising' = you're AT the minimum, act now." + }, + "price_trajectory_3h": { + "description": "Preisverlauf innerhalb des nächsten 3-Stunden-Fensters", + "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing over the 3h window; 'falling' = prices are dropping. Reveals the direction of price movement independent of the current price level. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, the window average is low but prices are already recovering — start now." + }, + "price_trajectory_4h": { + "description": "Preisverlauf innerhalb des nächsten 4-Stunden-Fensters", + "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing over the 4h window; 'falling' = prices are dropping. Complementary to price_outlook_4h: outlook answers 'is NOW cheap vs the window average?', trajectory answers 'are prices rising or falling within the window?'. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Heat pump charging: 'rising' = first half window is cheaper, charge now before prices climb. 'falling' = second half window is cheaper, wait if you can. Combine with outlook: if both rising, very strong signal to act now." + }, + "price_trajectory_5h": { + "description": "Preisverlauf innerhalb des nächsten 5-Stunden-Fensters", + "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing over the 5h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Eco/long cycles: 'outlook: rising + trajectory: rising' = clear signal to start now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start before costs climb." + }, + "price_trajectory_6h": { + "description": "Preisverlauf innerhalb des nächsten 6-Stunden-Fensters", + "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing over the 6h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the day's low — good time for high consumption." + }, + "price_trajectory_8h": { + "description": "Preisverlauf innerhalb des nächsten 8-Stunden-Fensters", + "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing over the 8h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half of night will be cheapest, delay start." + }, + "price_trajectory_12h": { + "description": "Preisverlauf innerhalb des nächsten 12-Stunden-Fensters", + "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing over the 12h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = prices drop in the second part of the day, afternoon/evening scheduling is better." + }, + "current_price_trend": { + "description": "Aktuelle Preistrend-Richtung und wie lange sie anhält", + "long_description": "Zeigt den aktuellen Preistrend (steigend/fallend/stabil) durch Kombination von historischem Momentum (gewichteter 1h-Rückblick) mit Zukunftsausblick. Erkennt laufende Trends früher als reine Zukunftsanalyse. Nutzt ±3% Momentum-Schwelle und volatilitätsabhängigen Zukunftsvergleich. Berechnet dynamisch bis zur nächsten Trendänderung (oder 3h Standard, falls keine Änderung in 24h). Der Status zeigt die aktuelle Richtung, Attribute zeigen, wann sich der Trend ändert und was als Nächstes kommt.", + "usage_tips": "Status-Anzeige: Dashboard-Sichtbarkeit von 'was passiert jetzt bis wann'. Perfekt synchronisiert mit next_price_trend_change. Beispiel: Badge mit 'Steigend für 2,5h' oder 'Fallend bis 16:45'. Besser als Zeitfenster-Sensoren, weil es versteht, dass du dich BEREITS in einem Trend befindest, nicht nur zukünftige Änderungen vorhersagt. Nutze für schnelle visuelle Übersicht, nicht für Automations-Trigger." + }, + "next_price_trend_change": { + "description": "Wann die nächste bedeutende Preistrend-Änderung eintreten wird", + "long_description": "Scannt die nächsten 24 Stunden (96 Intervalle), um zu finden, wann sich die Preistrend-Richtung ändern wird. Nur Richtungswechsel zählen: steigend/stark steigend bilden eine Gruppe, fallend/stark fallend eine andere, stabil ist eigenständig. Ein Wechsel von steigend zu stark steigend ist KEIN Trendwechsel. Verwendet volatilitätsadaptive Schwellwerte (Standard: ±3%/±9%) mit Hysterese (Standard: 3 aufeinanderfolgende Intervalle). Gibt den Zeitstempel zurück, wann die Änderung erwartet wird.", + "usage_tips": "Ereignisbasierte Automation: Aktionen WENN Trend wechselt auslösen, nicht IN X Stunden. Beispiel: 'E-Auto laden wenn nächste Trendänderung fallende Preise zeigt' oder 'Spülmaschine vor Preisanstieg starten'. Ergänzt Zeitfenster-Sensoren (price_trend_Xh), die beantworten 'WERDEN Preise in X Stunden höher sein?'" + }, + "next_price_trend_change_in": { + "description": "Zeit bis zur nächsten Preistrend-Änderung", + "long_description": "Zeigt an, wie lange es bis zur nächsten bedeutenden Preistrend-Änderung dauert. Der Wert wird in Stunden angezeigt (z.B. 2,25 h) für Dashboards. Teilt die gleiche Analyse wie der Zeitstempel-Sensor 'Nächste Trendänderung', stellt sie aber als Countdown-Dauer dar. Aktualisiert sich jede Minute für präzise Countdowns. Zeigt 'Unbekannt' wenn keine Trendänderung in den nächsten 24 Stunden erwartet wird.", + "usage_tips": "Dashboard-Countdown: Zeige 'Trendänderung in 1,5 h' als Live-Countdown. Für Automationen: 'Wenn next_price_trend_change_in < 0,25 (15 Min), auf Preisrichtungswechsel vorbereiten'. Ergänzt 'Nächste Trendänderung' (Zeitstempel) — verwende den Zeitstempel für 'WANN' und diesen Sensor für 'WIE LANGE'." + }, + "daily_rating": { + "description": "Wie sich die heutigen Preise mit historischen Daten vergleichen", + "long_description": "Zeigt, wie sich die heutigen Preise im Vergleich zu historischen Preisdaten als Prozentsatz verhält", + "usage_tips": "Ein positiver Prozentsatz bedeutet, dass die heutigen Preise überdurchschnittlich sind, negativ bedeutet unterdurchschnittlich" + }, + "monthly_rating": { + "description": "Wie sich die Preise dieses Monats mit historischen Daten vergleichen", + "long_description": "Zeigt, wie sich die Preise dieses Monats im Vergleich zu historischen Preisdaten als Prozentsatz verhält", + "usage_tips": "Ein positiver Prozentsatz bedeutet, dass die Preise dieses Monats überdurchschnittlich sind, negativ bedeutet unterdurchschnittlich" + }, + "data_timestamp": { + "description": "Zeitstempel des letzten verfügbaren Preisintervalls", + "long_description": "Zeigt den Zeitstempel des letzten verfügbaren Preisdatenintervalls von deinem Tibber-Abonnement" + }, + "today_volatility": { + "description": "Wie stark sich die Strompreise heute verändern", + "long_description": "Zeigt, ob die heutigen Preise stabil bleiben oder stark schwanken. Niedrige Volatilität bedeutet recht konstante Preise – Timing ist kaum wichtig. Hohe Volatilität bedeutet spürbare Preisunterschiede über den Tag – gute Chance, den Verbrauch auf günstigere Zeiten zu verschieben. `price_coefficient_variation_%` zeigt den Prozentwert, `price_spread` die absolute Preisspanne.", + "usage_tips": "Nutze dies, um zu entscheiden, ob Optimierung sich lohnt. Bei niedriger Volatilität kannst du Geräte jederzeit laufen lassen. Bei hoher Volatilität sparst du spürbar, wenn du Best-Price-Perioden nutzt." + }, + "tomorrow_volatility": { + "description": "Wie stark sich die Strompreise morgen verändern werden", + "long_description": "Zeigt, ob die Preise morgen stabil bleiben oder stark schwanken. Verfügbar, sobald die morgigen Daten veröffentlicht sind (typischerweise 13:00–14:00 MEZ). Niedrige Volatilität bedeutet recht konstante Preise – Timing ist nicht kritisch. Hohe Volatilität bedeutet deutliche Preisunterschiede über den Tag – gute Gelegenheit, energieintensive Aufgaben zu planen. `price_coefficient_variation_%` zeigt den Prozentwert, `price_spread` die absolute Preisspanne.", + "usage_tips": "Nutze dies für die Planung des morgigen Energieverbrauchs. Hohe Volatilität? Plane flexible Lasten in Best-Price-Perioden. Niedrige Volatilität? Lass Geräte laufen, wann es dir passt." + }, + "next_24h_volatility": { + "description": "Wie stark sich die Preise in den nächsten 24 Stunden verändern", + "long_description": "Zeigt die Preisvolatilität für ein rollierendes 24-Stunden-Fenster ab jetzt (aktualisiert alle 15 Minuten). Niedrige Volatilität bedeutet recht konstante Preise. Hohe Volatilität bedeutet spürbare Preisschwankungen und damit Chancen zur Optimierung. Im Unterschied zu Heute/Morgen-Sensoren überschreitet dieser Tagesgrenzen und liefert eine durchgängige Vorhersage. `price_coefficient_variation_%` zeigt den Prozentwert, `price_spread` die absolute Preisspanne.", + "usage_tips": "Am besten für Entscheidungen in Echtzeit. Nutze dies für Batterieladestrategien oder andere flexible Lasten, die über Mitternacht laufen könnten. Bietet eine konsistente 24h-Perspektive unabhängig vom Kalendertag." + }, + "today_tomorrow_volatility": { + "description": "Kombinierte Preisvolatilität für heute und morgen", + "long_description": "Zeigt die Gesamtvolatilität, wenn heute und morgen gemeinsam betrachtet werden (sobald die morgigen Daten verfügbar sind). Zeigt, ob über die Tagesgrenze hinweg deutliche Preisunterschiede bestehen. Fällt auf nur-heute zurück, wenn morgige Daten noch fehlen. Hilfreich für mehrtägige Optimierung. `price_coefficient_variation_%` zeigt den Prozentwert, `price_spread` die absolute Preisspanne.", + "usage_tips": "Nutze dies für Aufgaben, die sich über mehrere Tage erstrecken. Prüfe, ob die Preisunterschiede groß genug für eine Planung sind. Die einzelnen Tages-Sensoren zeigen die Beiträge pro Tag, falls du mehr Details brauchst." + }, + "data_lifecycle_status": { + "description": "Aktueller Status des Preisdaten-Lebenszyklus und der Zwischenspeicherung", + "long_description": "Zeigt an, ob die Integration zwischengespeicherte Daten oder frische Daten von der API verwendet. Zeigt aktuellen Lebenszyklus-Status: 'cached' (verwendet gespeicherte Daten), 'fresh' (gerade von API abgerufen), 'refreshing' (wird gerade abgerufen), 'searching_tomorrow' (sucht aktiv nach Morgendaten nach 13:00 Uhr), 'turnover_pending' (innerhalb 15 Minuten vor Mitternacht, 23:45-00:00) oder 'error' (Abruf fehlgeschlagen). Enthält umfassende Attribute wie Cache-Alter, nächste API-Abfragezeit, Datenvollständigkeit und API-Aufruf-Statistiken.", + "usage_tips": "Verwende diesen Diagnosesensor, um Datenaktualität und API-Aufrufmuster zu verstehen. Prüfe das 'cache_age'-Attribut, um zu sehen, wie alt die aktuellen Daten sind. Überwache 'next_api_poll', um zu wissen, wann das nächste Update geplant ist. Verwende 'data_completeness', um zu sehen, ob Daten für gestern/heute/morgen verfügbar sind. Der 'api_calls_today'-Zähler hilft, die API-Nutzung zu verfolgen. Perfekt zur Fehlersuche oder zum Verständnis des Integrationsverhaltens." + }, + "best_price_end_time": { + "description": "Wann der aktuelle oder nächste günstige Zeitraum endet", + "long_description": "Zeigt den Endzeitstempel des aktuellen günstigen Zeitraums an, wenn dieser aktiv ist, oder das Ende des nächsten Zeitraums, wenn kein Zeitraum aktiv ist. Zeigt immer eine nützliche Zeitreferenz zur Planung. Gibt nur 'Unbekannt' zurück, wenn keine Zeiträume ermittelt wurden.", + "usage_tips": "Nutze dies, um einen Countdown wie 'Günstiger Zeitraum endet in 2 Stunden' (wenn aktiv) oder 'Nächster günstiger Zeitraum endet um 14:00' (wenn inaktiv) anzuzeigen. Home Assistant zeigt automatisch relative Zeit für Zeitstempel-Sensoren an." + }, + "best_price_period_duration": { + "description": "Gesamtlänge des aktuellen oder nächsten günstigen Zeitraums", + "long_description": "Zeigt, wie lange der günstige Zeitraum insgesamt dauert. Der State wird in Stunden angezeigt (z. B. 1,5 h) für eine einfache Lesbarkeit in der UI, während das Attribut `period_duration_minutes` denselben Wert in Minuten bereitstellt (z. B. 90) für Automationen. Während eines aktiven Zeitraums zeigt dies die Dauer des aktuellen Zeitraums. Wenn kein Zeitraum aktiv ist, zeigt dies die Dauer des nächsten kommenden Zeitraums. Gibt nur 'Unbekannt' zurück, wenn keine Zeiträume ermittelt wurden.", + "usage_tips": "Für Anzeige: State-Wert (Stunden) in Dashboards nutzen. Für Automationen: Attribut `period_duration_minutes` verwenden, um zu prüfen, ob genug Zeit für langläufige Geräte ist (z. B. 'Wenn period_duration_minutes >= 90, starte Waschmaschine')." + }, + "best_price_remaining_minutes": { + "description": "Verbleibende Zeit im aktuellen günstigen Zeitraum", + "long_description": "Zeigt, wie viel Zeit im aktuellen günstigen Zeitraum noch verbleibt. Der State wird in Stunden angezeigt (z. B. 0,5 h) für eine einfache Lesbarkeit, während das Attribut `remaining_minutes` Minuten bereitstellt (z. B. 30) für Automationslogik. Gibt 0 zurück, wenn kein Zeitraum aktiv ist. Aktualisiert sich jede Minute. Prüfe binary_sensor.best_price_period, um zu sehen, ob ein Zeitraum aktuell aktiv ist.", + "usage_tips": "Für Automationen: Attribut `remaining_minutes` mit numerischen Vergleichen nutzen wie 'Wenn remaining_minutes > 0 UND remaining_minutes < 30, starte Waschmaschine jetzt'. Der Wert 0 macht es einfach zu prüfen, ob ein Zeitraum aktiv ist (Wert > 0) oder nicht (Wert = 0)." + }, + "best_price_progress": { + "description": "Fortschritt durch aktuellen günstigen Zeitraum (0% wenn inaktiv)", + "long_description": "Zeigt den Fortschritt durch den aktuellen günstigen Zeitraum als 0–100%. Gibt 0% zurück, wenn kein Zeitraum aktiv ist. Aktualisiert sich jede Minute. 0% bedeutet Zeitraum gerade gestartet, 100% bedeutet, er endet gleich.", + "usage_tips": "Super für visuelle Fortschrittsbalken. Nutze in Automatisierungen: 'Wenn progress > 0 UND progress > 75, sende Benachrichtigung, dass günstiger Zeitraum bald endet'. Wert 0 zeigt keinen aktiven Zeitraum an." + }, + "best_price_next_start_time": { + "description": "Wann der nächste günstige Zeitraum startet", + "long_description": "Zeigt, wann der nächste kommende günstige Zeitraum startet. Während eines aktiven Zeitraums zeigt dies den Start des nächsten Zeitraums nach dem aktuellen. Gibt nur 'Unbekannt' zurück, wenn keine zukünftigen Zeiträume ermittelt wurden.", + "usage_tips": "Immer nützlich für Vorausplanung: 'Nächster günstiger Zeitraum startet in 3 Stunden' (egal, ob du gerade in einem Zeitraum bist oder nicht). Kombiniere mit Automatisierungen: 'Wenn nächste Startzeit in 10 Minuten ist, sende Benachrichtigung zur Vorbereitung der Waschmaschine'." + }, + "best_price_next_in_minutes": { + "description": "Zeit bis zum nächsten günstigen Zeitraum", + "long_description": "Zeigt, wie lange es bis zum nächsten günstigen Zeitraum dauert. Der State wird in Stunden angezeigt (z. B. 2,25 h) für Dashboards, während das Attribut `next_in_minutes` Minuten bereitstellt (z. B. 135) für Automationsbedingungen. Während eines aktiven Zeitraums zeigt dies die Zeit bis zum Zeitraum nach dem aktuellen. Gibt 0 während kurzer Übergangsphasen zurück. Aktualisiert sich jede Minute.", + "usage_tips": "Für Automationen: Attribut `next_in_minutes` nutzen wie 'Wenn next_in_minutes > 0 UND next_in_minutes < 15, warte, bevor du die Geschirrspülmaschine startest'. Wert > 0 zeigt immer an, dass ein zukünftiger Zeitraum geplant ist." + }, + "peak_price_end_time": { + "description": "Wann der aktuelle oder nächste teure Zeitraum endet", + "long_description": "Zeigt den Endzeitstempel des aktuellen teuren Zeitraums an, wenn dieser aktiv ist, oder das Ende des nächsten Zeitraums, wenn kein Zeitraum aktiv ist. Zeigt immer eine nützliche Zeitreferenz zur Planung. Gibt nur 'Unbekannt' zurück, wenn keine Zeiträume ermittelt wurden.", + "usage_tips": "Nutze dies, um 'Teurer Zeitraum endet in 1 Stunde' (wenn aktiv) oder 'Nächster teurer Zeitraum endet um 18:00' (wenn inaktiv) anzuzeigen. Kombiniere mit Automatisierungen, um den Betrieb nach der Spitzenzeit fortzusetzen." + }, + "peak_price_period_duration": { + "description": "Länge des aktuellen/nächsten teuren Zeitraums", + "long_description": "Gesamtdauer des aktuellen oder nächsten teuren Zeitraums. Der State wird in Stunden angezeigt (z. B. 1,5 h) für leichtes Ablesen in der UI, während das Attribut `period_duration_minutes` denselben Wert in Minuten bereitstellt (z. B. 90) für Automationen. Dieser Wert repräsentiert die **volle geplante Dauer** des Zeitraums und ist konstant während des gesamten Zeitraums, auch wenn die verbleibende Zeit (remaining_minutes) abnimmt.", + "usage_tips": "Kombiniere mit remaining_minutes, um zu berechnen, wann langlaufende Geräte gestoppt werden sollen: Zeitraum begann vor `period_duration_minutes - remaining_minutes` Minuten. Dieses Attribut unterstützt Energiespar-Strategien, indem es hilft, Hochverbrauchsaktivitäten außerhalb teurer Perioden zu planen." + }, + "peak_price_remaining_minutes": { + "description": "Verbleibende Zeit im aktuellen teuren Zeitraum", + "long_description": "Zeigt, wie viel Zeit im aktuellen teuren Zeitraum noch verbleibt. Der State wird in Stunden angezeigt (z. B. 0,75 h) für einfaches Ablesen in Dashboards, während das Attribut `remaining_minutes` dieselbe Zeit in Minuten liefert (z. B. 45) für Automationsbedingungen. **Countdown-Timer**: Dieser Wert dekrementiert jede Minute während eines aktiven Zeitraums. Gibt 0 zurück, wenn kein teurer Zeitraum aktiv ist. Aktualisiert sich minütlich.", + "usage_tips": "Für Automationen: Nutze Attribut `remaining_minutes` wie 'Wenn remaining_minutes > 60, setze Heizung auf Energiesparmodus' oder 'Wenn remaining_minutes < 15, erhöhe Temperatur wieder'. UI zeigt benutzerfreundliche Stunden (z. B. 1,25 h). Wert 0 zeigt an, dass kein teurer Zeitraum aktiv ist." + }, + "peak_price_progress": { + "description": "Fortschritt durch aktuellen teuren Zeitraum (0% wenn inaktiv)", + "long_description": "Zeigt den Fortschritt durch den aktuellen teuren Zeitraum als 0–100%. Gibt 0% zurück, wenn kein Zeitraum aktiv ist. Aktualisiert sich jede Minute. 0% bedeutet Zeitraum gerade gestartet, 100% bedeutet, er endet gleich.", + "usage_tips": "Visueller Fortschrittsindikator in Dashboards. Automatisierung: 'Wenn progress > 0 UND progress > 90, bereite normale Heizplanung vor'. Wert 0 zeigt keinen aktiven Zeitraum an." + }, + "peak_price_next_start_time": { + "description": "Wann der nächste teure Zeitraum startet", + "long_description": "Zeigt, wann der nächste kommende teure Zeitraum startet. Während eines aktiven Zeitraums zeigt dies den Start des nächsten Zeitraums nach dem aktuellen. Gibt nur 'Unbekannt' zurück, wenn kein zukünftiger Zeitraum ermittelt wurde.", + "usage_tips": "Immer nützlich für Planung: 'Nächster teurer Zeitraum startet in 2 Stunden'. Automatisierung: 'Wenn nächste Startzeit in 30 Minuten ist, reduziere Heiztemperatur vorsorglich'." + }, + "peak_price_next_in_minutes": { + "description": "Zeit bis zum nächsten teuren Zeitraum", + "long_description": "Zeigt, wie lange es bis zum nächsten teuren Zeitraum dauert. Der State wird in Stunden angezeigt (z. B. 2,25 h) für Dashboards, während das Attribut `next_in_minutes` Minuten bereitstellt (z. B. 135) für Automationsbedingungen. Während eines aktiven Zeitraums zeigt dies die Zeit bis zum Zeitraum nach dem aktuellen. Gibt 0 während kurzer Übergangsphasen zurück. Aktualisiert sich jede Minute.", + "usage_tips": "Für Automationen: Attribut `next_in_minutes` nutzen wie 'Wenn next_in_minutes > 0 UND next_in_minutes < 10, reduziere Heizung vorsorglich bevor der teure Zeitraum beginnt'. Wert > 0 zeigt immer an, dass ein zukünftiger teurer Zeitraum geplant ist." + }, + "home_type": { + "description": "Art der Wohnung (Wohnung, Haus usw.)", + "long_description": "Zeigt den Wohnungstyp, wie in deinem Tibber-Konto konfiguriert. Diese Metadaten können nützlich sein, um Energieverbrauchsmuster zu kategorisieren.", + "usage_tips": "Nutze dies zur Organisation deines Smart-Home-Systems oder für Analysezwecke." + }, + "home_size": { + "description": "Wohnfläche in Quadratmetern", + "long_description": "Zeigt die Größe deiner Wohnung in Quadratmetern, wie in deinem Tibber-Konto konfiguriert. Kann verwendet werden, um den Energieverbrauch pro Quadratmeter zu berechnen.", + "usage_tips": "Nutze dies für Energieeffizienzberechnungen: 'Meine Wohnung verbraucht X kWh pro Quadratmeter pro Jahr'." + }, + "main_fuse_size": { + "description": "Hauptsicherungsgröße in Ampere", + "long_description": "Zeigt die Kapazität deiner Hauptsicherung in Ampere. Dies bestimmt die maximale elektrische Last, die deine Wohnung gleichzeitig bewältigen kann.", + "usage_tips": "Nutze dies zur Überlastungsvermeidung: 'Wenn der Gesamtstromverbrauch sich der Sicherungsgröße nähert, verschiebe das Starten zusätzlicher Geräte'." + }, + "number_of_residents": { + "description": "Anzahl der im Haushalt lebenden Personen", + "long_description": "Zeigt die Anzahl der Bewohner, wie in deinem Tibber-Konto konfiguriert. Nützlich für Pro-Kopf-Energieverbrauchsberechnungen.", + "usage_tips": "Nutze dies für Haushalts-Energieanalysen: 'Energieverbrauch pro Person pro Tag'." + }, + "primary_heating_source": { + "description": "Primärer Heizungstyp", + "long_description": "Zeigt den Typ des in deiner Wohnung verwendeten Heizsystems, wie in deinem Tibber-Konto konfiguriert. Dies kann eine Wärmepumpe, Elektroheizung, Gas, Öl oder andere Heizquellen sein.", + "usage_tips": "Nutze dies zur Kategorisierung heizungsbezogener Automatisierungen oder für Energieverbrauchsanalysen nach Heizungsart." + }, + "grid_company": { + "description": "Name deines Stromnetzbetreibers", + "long_description": "Zeigt den Namen des Unternehmens, das das Stromnetz in deiner Region betreibt. Dies ist der Verteilnetzbetreiber (VNB), der für die Stromlieferung zu deinem Haus verantwortlich ist.", + "usage_tips": "Nützlich für administrative Zwecke und zur Behebung netzbezogener Probleme." + }, + "grid_area_code": { + "description": "Netzgebiets-Kennziffer", + "long_description": "Zeigt den Code, der dein Stromnetzgebiet identifiziert. Dieser Code wird vom Netzbetreiber für Routing- und Abrechnungszwecke verwendet.", + "usage_tips": "Nutze dies als administrative Referenz oder bei der Kontaktaufnahme mit deinem Netzbetreiber." + }, + "price_area_code": { + "description": "Strompreis-Zonencode", + "long_description": "Zeigt den Code für deine Strompreiszone (z.B. NO1, NO2, SE3, DK1). Verschiedene Zonen haben unterschiedliche Großhandelsstrompreise basierend auf regionalem Angebot und Nachfrage.", + "usage_tips": "Nutze dies, um zu verstehen, in welcher Preisregion du dich befindest. Nützlich beim Preisvergleich mit anderen oder bei der Analyse regionaler Preismuster." + }, + "consumption_ean": { + "description": "EAN-Code für Stromverbrauchsmessung", + "long_description": "Zeigt die Europäische Artikelnummer (EAN), die deinen Stromverbrauchszähler eindeutig identifiziert. Dieser 18-stellige Code wird für Abrechnungs- und Verwaltungszwecke verwendet.", + "usage_tips": "Nutze dies bei der Kommunikation mit deinem Stromanbieter oder für administrative Dokumentation." + }, + "production_ean": { + "description": "EAN-Code für Stromerzeugungsmessung", + "long_description": "Zeigt die Europäische Artikelnummer (EAN) für deinen Stromerzeugungszähler (wenn du Solarpanels oder andere Erzeugung hast). Dieser Code verfolgt Strom, den du ins Netz einspeist.", + "usage_tips": "Relevant, wenn du Solarpanels oder andere Stromerzeugung hast. Nutze für administrative Zwecke und bei der Beantragung von Einspeisevergütung." + }, + "energy_tax_type": { + "description": "Art der angewandten Energiesteuer", + "long_description": "Zeigt die Energiesteuerkategorie, die auf deinen Stromverbrauch angewendet wird. Steuersätze variieren nach Land und manchmal nach Verbrauchertyp (privat, gewerblich usw.).", + "usage_tips": "Nutze dies zum Verständnis der Aufschlüsselung deiner Stromrechnung und für Gesamtkostenberechnungen." + }, + "vat_type": { + "description": "Mehrwertsteuerkategorie", + "long_description": "Zeigt die Mehrwertsteuerkategorie, die auf deinen Stromverbrauch angewendet wird. Mehrwertsteuersätze variieren nach Land und können für Strom anders sein als für andere Waren und Dienstleistungen.", + "usage_tips": "Nutze dies zum Verständnis deiner Stromrechnung und zur Berechnung der Gesamtkosten inklusive Steuern." + }, + "estimated_annual_consumption": { + "description": "Geschätzter jährlicher Stromverbrauch in kWh", + "long_description": "Zeigt deinen geschätzten jährlichen Stromverbrauch in Kilowattstunden, wie in deinem Tibber-Konto berechnet oder konfiguriert. Diese Schätzung wird verwendet, um den tatsächlichen Verbrauch mit den erwarteten Werten zu vergleichen.", + "usage_tips": "Nutze dies, um zu verfolgen, ob dein tatsächlicher Verbrauch über oder unter den Erwartungen liegt. Vergleiche den monatlichen Verbrauch mit 1/12 dieses Wertes, um ungewöhnliche Muster zu identifizieren." + }, + "subscription_status": { + "description": "Status deines Tibber-Abonnements", + "long_description": "Zeigt, ob dein Tibber-Abonnement derzeit aktiv ist, beendet wurde oder auf Aktivierung wartet. Ein Status 'Aktiv' bedeutet, dass du aktiv Strom über Tibber beziehst.", + "usage_tips": "Nutze dies zur Überwachung deines Abonnementstatus. Richte Benachrichtigungen ein, wenn sich der Status von 'Aktiv' ändert, um einen unterbrechungsfreien Service sicherzustellen." + }, + "day_pattern_yesterday": { + "description": "Erkanntes Preismuster der gestrigen Strompreise", + "long_description": "Klassifiziert gestern in ein Preismuster: Tal (günstig in der Mitte), Gipfel (teuer in der Mitte), Doppeltal (zwei günstige Perioden), Doppelgipfel (zwei teure Perioden), Flach (geringe Variation), Steigend, Fallend oder Gemischt. Die Konfidenz- und CV-Attribute zeigen, wie verlässlich das Muster erkannt wurde.", + "usage_tips": "Nutze das gestrige Muster für Automationen: Ein Tal-Tag wiederholt sich oft am nächsten Tag und deutet darauf hin, dass Verbraucher auf die günstigen Mittagsstunden verschoben werden sollten." + }, + "day_pattern_today": { + "description": "Erkanntes Preismuster der heutigen Strompreise", + "long_description": "Klassifiziert heute in ein Preismuster: Tal (günstig mittags), Gipfel (teuer mittags), Doppeltal (W-Form), Doppelgipfel (M-Form), Flach, Steigend, Fallend oder Gemischt. Attribute enthalten Konfidenz (0–1), Variationskoeffizient, Knickpunktzeiten und Tagessegmente.", + "usage_tips": "Nutze das Tagesmuster, um Verbraucher zu verschieben. Tal-Tag: Spülmaschine, Waschmaschine oder E-Auto-Laden in die günstige Mittagszeit legen. Gipfel-Tag: früh morgens oder spät abends waschen. Die Attribute valley_start und valley_end ermöglichen minutengenaue Automationen." + }, + "day_pattern_tomorrow": { + "description": "Erkanntes Preismuster der morgigen Strompreise", + "long_description": "Klassifiziert morgen (sobald Daten verfügbar sind, typisch nach 13 Uhr) in ein Preismuster mit demselben Algorithmus wie heute. Die Attribute valley_start/valley_end oder peak_start/peak_end geben Knickpunktzeiten für das primäre Extremum an.", + "usage_tips": "Richte Abendautomationen ein, die das morgige Muster lesen und Wärmepumpe, Autolader oder Warmwasserbereiter für den nächsten Tag vorkonfigurieren. Kombiniere mit dem tomorrow_data_available Binärsensor." + }, + "chart_data_export": { + "description": "Datenexport für Dashboard-Integrationen", + "long_description": "Dieser Sensor ruft den get_chartdata-Service mit deiner konfigurierten YAML-Konfiguration auf und stellt das Ergebnis als Entity-Attribute bereit. Der Status zeigt 'ready' wenn Daten verfügbar sind, 'error' bei Fehlern, oder 'pending' vor dem ersten Aufruf. Perfekt für Dashboard-Integrationen wie ApexCharts, die Preisdaten aus Entity-Attributen lesen.", + "usage_tips": "Konfiguriere die YAML-Parameter in den Integrationsoptionen entsprechend deinem get_chartdata-Service-Aufruf. Der Sensor aktualisiert automatisch bei Preisdaten-Updates (typischerweise nach Mitternacht und wenn morgige Daten eintreffen). Greife auf die Service-Response-Daten direkt über die Entity-Attribute zu - die Struktur entspricht exakt dem, was get_chartdata zurückgibt." + }, + "chart_metadata": { + "description": "Leichtgewichtige Metadaten für Diagrammkonfiguration", + "long_description": "Liefert wesentliche Diagrammkonfigurationswerte als Sensor-Attribute. Nützlich für jede Diagrammkarte, die Y-Achsen-Grenzen benötigt. Der Sensor ruft get_chartdata im Nur-Metadaten-Modus auf (keine Datenverarbeitung) und extrahiert: yaxis_min, yaxis_max (vorgeschlagener Y-Achsenbereich für optimale Skalierung). Der Status spiegelt das Service-Call-Ergebnis wider: 'ready' bei Erfolg, 'error' bei Fehler, 'pending' während der Initialisierung.", + "usage_tips": "Konfiguriere über configuration.yaml unter tibber_prices.chart_metadata_config (optional: day, subunit_currency, resolution). Der Sensor aktualisiert sich automatisch bei Preisdatenänderungen. Greife auf Metadaten aus Attributen zu: yaxis_min, yaxis_max. Verwende mit config-template-card oder jedem Tool, das Entity-Attribute liest - perfekt für dynamische Diagrammkonfiguration ohne manuelle Berechnungen." + }, + "current_interval_price_rank_today": { + "description": "Position des aktuellen Intervallpreises in der heutigen Rangliste — Perzentilrang (0 % = günstigster Moment)", + "long_description": "Zeigt, wie günstig oder teuer der aktuelle Viertelstunden-Intervallpreis im Vergleich zu allen 96 heutigen Slots ist. 0 % bedeutet: Dieser Moment ist der günstigste des Tages. 50 % bedeutet: Die Hälfte der Slots ist günstiger. ca. 99 % bedeutet: Dieser Slot ist der teuerste des Tages. Formel (Perzentilrang): Anzahl günstigerer Slots ÷ Gesamtanzahl × 100. Attribute: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Ideal für Automationen: 'Wenn current_interval_price_rank_today < 25, Spülmaschine starten' (günstigstes Viertel des Tages). Oder 'Wenn current_interval_price_rank_today > 75, Wärmepumpe pausieren'. Ein Wert von 0 garantiert den günstigsten Slot des Tages." + }, + "current_interval_price_rank_tomorrow": { + "description": "Perzentilrang des aktuellen Intervallpreises in der morgigen Rangliste (0 % = günstigster von morgen)", + "long_description": "Zeigt, wie der aktuelle Intervallpreis im Vergleich zu allen 96 morgigen Viertelstunden-Slots abschneidet. Nützlich, um zu entscheiden, ob man bis morgen warten soll. 0 % bedeutet: Der aktuelle Preis ist günstiger als jeder morgige Slot. Gibt 'Unbekannt' zurück, bis die morgigen Daten verfügbar sind (typischerweise nach 13:00 Uhr). Attribute: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Warten lohnt sich? 'Wenn current_interval_price_rank_tomorrow < 10, gibt es morgen noch günstigere Slots — Aufgabe verschieben'. Am besten mit einem Binärsensor kombinieren." + }, + "current_interval_price_rank_today_tomorrow": { + "description": "Perzentilrang des aktuellen Intervallpreises über heute+morgen zusammen (0 % = günstigstes des Zweitages-Fensters)", + "long_description": "Zeigt, wie günstig oder teuer der aktuelle Intervallpreis im Vergleich zu allen Slots über heute und morgen zusammen ist (bis zu 192 Viertelstunden-Slots). Fällt auf nur heute zurück, wenn morgige Daten noch nicht verfügbar sind. 0 % = günstigster Slot des kombinierten Zweitages-Fensters. Attribute: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Das breiteste Signal für 'Ist jetzt ein guter Zeitpunkt?'. Verwende 'Wenn current_interval_price_rank_today_tomorrow < 20, energieintensive Aufgabe jetzt starten'." + }, + "next_interval_price_rank_today": { + "description": "Perzentilrang des nächsten Intervallpreises in der heutigen Rangliste (0 % = günstigster Moment heute)", + "long_description": "Zeigt den Perzentilrang des nächsten Viertelstunden-Intervalls innerhalb der 96 heutigen Slots. Ermöglicht einen Blick voraus, bevor das nächste Intervall beginnt. Attribute: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Für Vorbereitung: 'Wenn next_interval_price_rank_today < 15, jetzt vorheizen, damit das Gerät im nächsten günstigen Slot läuft'." + }, + "next_interval_price_rank_today_tomorrow": { + "description": "Perzentilrang des nächsten Intervallpreises über heute+morgen zusammen (0 % = günstigstes des Zweitages-Fensters)", + "long_description": "Zeigt den Perzentilrang des nächsten Viertelstunden-Intervalls innerhalb des kombinierten heute+morgen-Pools (bis zu 192 Slots). Fällt auf nur heute zurück, wenn morgige Daten nicht verfügbar sind. Attribute: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Weitester Vorausblick: 'Wenn next_interval_price_rank_today_tomorrow < 10, ist das nächste Intervall eines der günstigsten im Zweitages-Fenster'." + }, + "previous_interval_price_rank_today": { + "description": "Perzentilrang des letzten Intervallpreises in der heutigen Rangliste (0 % = günstigster Moment heute)", + "long_description": "Zeigt den Perzentilrang des gerade beendeten Viertelstunden-Intervalls innerhalb der 96 heutigen Slots. Nützlich für Protokollierung. Attribute: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Für retrospektive Automationen: 'Preisniveau des letzten Intervalls für Energieberichte aufzeichnen'." + }, + "previous_interval_price_rank_today_tomorrow": { + "description": "Perzentilrang des letzten Intervallpreises über heute+morgen zusammen (0 % = günstigstes des Zweitages-Fensters)", + "long_description": "Zeigt den Perzentilrang des gerade beendeten Viertelstunden-Intervalls innerhalb des kombinierten heute+morgen-Pools (bis zu 192 Slots). Fällt auf nur heute zurück. Attribute: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Für retrospektive Vergleiche über ein Zweitages-Fenster." + }, + "current_hour_price_rank_today": { + "description": "Perzentilrang des gleitenden Stunden-Durchschnittspreises in der heutigen Rangliste (0 % = günstigste Stunde heute)", + "long_description": "Zeigt, wo der gleitende 5-Intervall-Durchschnitt (2 Intervalle vor + aktuell + 2 danach, ca. 1 Stunde) in der heutigen Preisrangliste liegt. Glättet kurze Preisspitzen für eine breitere Einschätzung. Attribute: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Für Aufgaben, die ca. eine Stunde dauern: 'Wenn current_hour_price_rank_today < 20, ist jetzt eine günstige Stunde — Waschmaschine starten'." + }, + "current_hour_price_rank_today_tomorrow": { + "description": "Gleitender Stunden-Durchschnittspreisrang über heute+morgen zusammen (0 % = günstigste Stunde im Zweitages-Fenster)", + "long_description": "Zeigt, wo der gleitende 5-Intervall-Durchschnitt (±2 Intervalle, ca. 1 Stunde) in der kombinierten heute+morgen-Rangliste liegt (bis zu 192 Slots). Fällt auf nur heute zurück. Attribute: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Weitestes Stundensignal: 'Wenn current_hour_price_rank_today_tomorrow < 15, ist dies eine der günstigsten Stunden im Zweitages-Fenster'." + }, + "next_hour_price_rank_today": { + "description": "Perzentilrang des nächsten gleitenden Stunden-Durchschnittspreises in der heutigen Rangliste (0 % = günstigste Stunde heute)", + "long_description": "Zeigt, wo der auf das nächste Intervall zentrierte gleitende 5-Intervall-Durchschnitt in der heutigen Preisrangliste liegt. Ermöglicht Planung eine Stunde im Voraus. Attribute: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Eine Stunde vorausplanen: 'Wenn next_hour_price_rank_today < 20, ist die kommende Stunde günstig — Aufgabe jetzt starten'." + }, + "next_hour_price_rank_today_tomorrow": { + "description": "Nächster gleitender Stunden-Durchschnittspreisrang über heute+morgen zusammen (0 % = günstigste Stunde im Zweitages-Fenster)", + "long_description": "Zeigt, wo der auf das nächste Intervall zentrierte gleitende 5-Intervall-Durchschnitt in der kombinierten heute+morgen-Rangliste liegt (bis zu 192 Slots). Fällt auf nur heute zurück. Attribute: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Weitester Stundenvorausblick: 'Wenn next_hour_price_rank_today_tomorrow < 10, ist die kommende Stunde eine der günstigsten im Zweitages-Fenster'." + } + }, + "binary_sensor": { + "tomorrow_data_available": { + "description": "Ob Preisdaten für morgen verfügbar sind", + "long_description": "Gibt an, ob Preisdaten für den folgenden Tag von Tibber empfangen wurden", + "usage_tips": "Nutze dies, um zu überprüfen, ob die Preise für morgen für die Planung verfügbar sind" + }, + "peak_price_period": { + "description": "Ob das aktuelle Intervall zu den teuersten des Tages gehört", + "long_description": "Wird aktiviert, wenn der aktuelle Preis in den oberen 20% der heutigen Preise liegt", + "usage_tips": "Nutze dies, um den Betrieb von Geräten mit hohem Verbrauch während teurer Intervalle zu vermeiden" + }, + "best_price_period": { + "description": "Ob das aktuelle Intervall zu den günstigsten des Tages gehört", + "long_description": "Wird aktiviert, wenn der aktuelle Preis in den unteren 20% der heutigen Preise liegt", + "usage_tips": "Nutze dies, um Geräte mit hohem Verbrauch während der günstigsten Intervalle zu betreiben" + }, + "connection": { + "description": "Ob die Verbindung zur Tibber API funktioniert", + "long_description": "Zeigt an, ob die Integration erfolgreich eine Verbindung zur Tibber API herstellen kann", + "usage_tips": "Nutze dies, um den Verbindungsstatus zur Tibber API zu überwachen" + }, + "has_ventilation_system": { + "description": "Ob deine Wohnung über eine Lüftungsanlage verfügt", + "long_description": "Zeigt an, ob eine Lüftungsanlage für deine Wohnung im Tibber-Konto registriert ist. Lüftungsanlagen können erhebliche Stromverbraucher sein, die von intelligenter Planung profitieren können.", + "usage_tips": "Nutze dies, um lüftungsspezifische Automatisierungen oder Energieüberwachung zu aktivieren. Falls aktiv, erwäge die Planung der Lüftung während Niedrigpreisphasen." + }, + "realtime_consumption_enabled": { + "description": "Ob die Echtzeit-Verbrauchsüberwachung aktiv ist", + "long_description": "Zeigt an, ob die Echtzeit-Stromverbrauchsüberwachung für dein Tibber-Zuhause aktiviert und aktiv ist. Dies erfordert kompatible Messhardware (z. B. Tibber Pulse) und ein aktives Abonnement.", + "usage_tips": "Verwende dies, um zu überprüfen, ob Echtzeit-Verbrauchsdaten verfügbar sind. Aktiviere Benachrichtigungen, falls dies unerwartet auf 'Aus' wechselt, was auf potenzielle Hardware- oder Verbindungsprobleme hinweist." + } + }, + "number": { + "best_price_flex_override": { + "description": "Maximaler Prozentsatz über dem Tagesminimumpreis, den Intervalle haben können und trotzdem als 'Bestpreis' gelten. Empfohlen: 15-20 mit Lockerung aktiviert (Standard), oder 25-35 ohne Lockerung. Maximum: 50 (Obergrenze für zuverlässige Periodenerkennung).", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Flexibilität' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", + "usage_tips": "Aktiviere diese Entität, um die Bestpreiserkennung dynamisch über Automatisierungen anzupassen, z.B. höhere Flexibilität bei kritischen Lasten oder engere Anforderungen für flexible Geräte." + }, + "best_price_min_distance_override": { + "description": "Minimaler prozentualer Abstand unter dem Tagesdurchschnitt. Intervalle müssen so weit unter dem Durchschnitt liegen, um als 'Bestpreis' zu gelten. Hilft, echte Niedrigpreis-Perioden von durchschnittlichen Preisen zu unterscheiden.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestabstand' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", + "usage_tips": "Erhöhe den Wert, wenn du strengere Bestpreis-Kriterien möchtest. Verringere ihn, wenn zu wenige Perioden erkannt werden." + }, + "best_price_min_period_length_override": { + "description": "Minimale Periodenlänge in 15-Minuten-Intervallen. Perioden kürzer als diese werden nicht gemeldet. Beispiel: 2 = mindestens 30 Minuten.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestperiodenlänge' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", + "usage_tips": "Passe an die typische Laufzeit deiner Geräte an: 2 (30 Min) für Schnellprogramme, 4-8 (1-2 Std) für normale Zyklen, 8+ für lange ECO-Programme." + }, + "best_price_min_periods_override": { + "description": "Minimale Anzahl an Bestpreis-Perioden, die täglich gefunden werden sollen. Wenn Lockerung aktiviert ist, wird das System die Kriterien automatisch anpassen, um diese Zahl zu erreichen.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestperioden' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", + "usage_tips": "Setze dies auf die Anzahl zeitkritischer Aufgaben, die du täglich hast. Beispiel: 2 für zwei Waschmaschinenladungen." + }, + "best_price_relaxation_attempts_override": { + "description": "Anzahl der Versuche, die Kriterien schrittweise zu lockern, um die Mindestperiodenanzahl zu erreichen. Jeder Versuch erhöht die Flexibilität um 3 Prozent. Bei 0 werden nur Basis-Kriterien verwendet.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Lockerungsversuche' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", + "usage_tips": "Höhere Werte machen die Periodenerkennung anpassungsfähiger an Tage mit stabilen Preisen. Setze auf 0, um strenge Kriterien ohne Lockerung zu erzwingen." + }, + "best_price_gap_count_override": { + "description": "Maximale Anzahl teurerer Intervalle, die zwischen günstigen Intervallen erlaubt sind und trotzdem als eine zusammenhängende Periode gelten. Bei 0 müssen günstige Intervalle aufeinander folgen.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Lückentoleranz' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", + "usage_tips": "Erhöhe dies für Geräte mit variabler Last (z.B. Wärmepumpen), die kurze teurere Intervalle tolerieren können. Setze auf 0 für kontinuierliche günstige Perioden." + }, + "peak_price_flex_override": { + "description": "Maximaler Prozentsatz unter dem Tagesmaximumpreis, den Intervalle haben können und trotzdem als 'Spitzenpreis' gelten. Gleiche Empfehlungen wie für Bestpreis-Flexibilität.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Flexibilität' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", + "usage_tips": "Nutze dies, um den Spitzenpreis-Schwellenwert zur Laufzeit für Automatisierungen anzupassen, die den Verbrauch während teurer Stunden vermeiden." + }, + "peak_price_min_distance_override": { + "description": "Minimaler prozentualer Abstand über dem Tagesdurchschnitt. Intervalle müssen so weit über dem Durchschnitt liegen, um als 'Spitzenpreis' zu gelten.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestabstand' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", + "usage_tips": "Erhöhe den Wert, um nur extreme Preisspitzen zu erfassen. Verringere ihn, um mehr Hochpreiszeiten einzubeziehen." + }, + "peak_price_min_period_length_override": { + "description": "Minimale Periodenlänge in 15-Minuten-Intervallen für Spitzenpreise. Kürzere Preisspitzen werden nicht als Perioden gemeldet.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestperiodenlänge' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", + "usage_tips": "Kürzere Werte erfassen kurze Preisspitzen. Längere Werte fokussieren auf anhaltende Hochpreisphasen." + }, + "peak_price_min_periods_override": { + "description": "Minimale Anzahl an Spitzenpreis-Perioden, die täglich gefunden werden sollen.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestperioden' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", + "usage_tips": "Setze dies basierend darauf, wie viele Hochpreisphasen du pro Tag für Automatisierungen erfassen möchtest." + }, + "peak_price_relaxation_attempts_override": { + "description": "Anzahl der Versuche, die Kriterien zu lockern, um die Mindestanzahl an Spitzenpreis-Perioden zu erreichen.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Lockerungsversuche' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", + "usage_tips": "Erhöhe dies, wenn an Tagen mit stabilen Preisen keine Perioden gefunden werden. Setze auf 0, um strenge Kriterien zu erzwingen." + }, + "peak_price_gap_count_override": { + "description": "Maximale Anzahl günstigerer Intervalle, die zwischen teuren Intervallen erlaubt sind und trotzdem als eine Spitzenpreis-Periode gelten.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Lückentoleranz' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", + "usage_tips": "Höhere Werte erfassen längere Hochpreisphasen auch mit kurzen Preiseinbrüchen. Setze auf 0, um strikt zusammenhängende Spitzenpreise zu erfassen." + } + }, + "switch": { + "best_price_enable_relaxation_override": { + "description": "Wenn aktiviert, werden die Kriterien automatisch gelockert, um die Mindestperiodenanzahl zu erreichen. Wenn deaktiviert, werden nur Perioden gemeldet, die die strengen Kriterien erfüllen (möglicherweise null Perioden bei stabilen Preisen).", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestanzahl erreichen' aus dem Optionen-Dialog für die Bestpreis-Periodenberechnung.", + "usage_tips": "Aktiviere dies für garantierte tägliche Automatisierungsmöglichkeiten. Deaktiviere es, wenn du nur wirklich günstige Zeiträume willst, auch wenn das bedeutet, dass an manchen Tagen keine Perioden gefunden werden." + }, + "peak_price_enable_relaxation_override": { + "description": "Wenn aktiviert, werden die Kriterien automatisch gelockert, um die Mindestperiodenanzahl zu erreichen. Wenn deaktiviert, werden nur echte Preisspitzen gemeldet.", + "long_description": "Wenn diese Entität aktiviert ist, überschreibt ihr Wert die Einstellung 'Mindestanzahl erreichen' aus dem Optionen-Dialog für die Spitzenpreis-Periodenberechnung.", + "usage_tips": "Aktiviere dies für konsistente Spitzenpreis-Warnungen. Deaktiviere es, um nur extreme Preisspitzen zu erfassen." + } + }, + "home_types": { + "APARTMENT": "Wohnung", + "ROWHOUSE": "Reihenhaus", + "HOUSE": "Haus", + "COTTAGE": "Ferienhaus" + }, + "time_units": { + "day": "{count} Tag", + "days": "{count} Tagen", + "hour": "{count} Stunde", + "hours": "{count} Stunden", + "minute": "{count} Minute", + "minutes": "{count} Minuten", + "ago": "vor {parts}", + "now": "jetzt" + }, + "attribution": "Daten bereitgestellt von Tibber" } diff --git a/custom_components/tibber_prices/custom_translations/en.json b/custom_components/tibber_prices/custom_translations/en.json index 40f6383..9e6c602 100644 --- a/custom_components/tibber_prices/custom_translations/en.json +++ b/custom_components/tibber_prices/custom_translations/en.json @@ -1,653 +1,693 @@ { - "apexcharts": { - "title_rating_level": "Price Phases Daily Progress", - "title_level": "Price Level", - "hourly_suffix": "(Ø hourly)", - "best_price_period_name": "Best Price Period", - "peak_price_period_name": "Peak Price Period", - "notification": { - "metadata_sensor_unavailable": { - "title": "Tibber Prices: ApexCharts YAML Generated with Limited Functionality", - "message": "You just generated an ApexCharts card configuration via Developer Tools. The Chart Metadata sensor is currently disabled, so the generated YAML will only show **basic functionality** (auto-scale axis, fixed gradient at 50%).\n\n**To enable full functionality** (optimized scaling, dynamic gradient colors):\n1. [Open Tibber Prices Integration](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Enable the 'Chart Metadata' sensor\n3. **Generate the YAML again** via Developer Tools\n4. **Replace the old YAML** in your dashboard with the new version\n\n⚠️ Simply enabling the sensor is not enough - you must regenerate and replace the YAML code!" - }, - "missing_cards": { - "title": "Tibber Prices: ApexCharts YAML Cannot Be Used", - "message": "You just generated an ApexCharts card configuration via Developer Tools, but the generated YAML **will not work** because required custom cards are missing.\n\n**Missing cards:**\n{cards}\n\n**To use the generated YAML:**\n1. Click the links above to install the missing cards from HACS\n2. Restart Home Assistant (sometimes needed)\n3. **Generate the YAML again** via Developer Tools\n4. Add the YAML to your dashboard\n\n⚠️ The current YAML code will not work until all cards are installed!" - } - } + "apexcharts": { + "title_rating_level": "Price Phases Daily Progress", + "title_level": "Price Level", + "hourly_suffix": "(Ø hourly)", + "best_price_period_name": "Best Price Period", + "peak_price_period_name": "Peak Price Period", + "notification": { + "metadata_sensor_unavailable": { + "title": "Tibber Prices: ApexCharts YAML Generated with Limited Functionality", + "message": "You just generated an ApexCharts card configuration via Developer Tools. The Chart Metadata sensor is currently disabled, so the generated YAML will only show **basic functionality** (auto-scale axis, fixed gradient at 50%).\n\n**To enable full functionality** (optimized scaling, dynamic gradient colors):\n1. [Open Tibber Prices Integration](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Enable the 'Chart Metadata' sensor\n3. **Generate the YAML again** via Developer Tools\n4. **Replace the old YAML** in your dashboard with the new version\n\n⚠️ Simply enabling the sensor is not enough - you must regenerate and replace the YAML code!" + }, + "missing_cards": { + "title": "Tibber Prices: ApexCharts YAML Cannot Be Used", + "message": "You just generated an ApexCharts card configuration via Developer Tools, but the generated YAML **will not work** because required custom cards are missing.\n\n**Missing cards:**\n{cards}\n\n**To use the generated YAML:**\n1. Click the links above to install the missing cards from HACS\n2. Restart Home Assistant (sometimes needed)\n3. **Generate the YAML again** via Developer Tools\n4. Add the YAML to your dashboard\n\n⚠️ The current YAML code will not work until all cards are installed!" + } + } + }, + "sensor": { + "current_interval_price": { + "description": "The current electricity price per kWh", + "long_description": "Shows the current price per kWh from your Tibber subscription", + "usage_tips": "Use this to track prices or to create automations that run when electricity is cheap" }, - "sensor": { - "current_interval_price": { - "description": "The current electricity price per kWh", - "long_description": "Shows the current price per kWh from your Tibber subscription", - "usage_tips": "Use this to track prices or to create automations that run when electricity is cheap" - }, - "current_interval_price_base": { - "description": "Current electricity price in base currency (EUR/kWh, NOK/kWh, etc.) for Energy Dashboard", - "long_description": "Shows the current price per kWh in base currency units (e.g., EUR/kWh instead of ct/kWh, NOK/kWh instead of øre/kWh). This sensor is specifically designed for use with Home Assistant's Energy Dashboard, which requires prices in standard currency units.", - "usage_tips": "Use this sensor when configuring the Energy Dashboard under Settings → Dashboards → Energy. Select this sensor as the 'Entity with current price' to automatically calculate your energy costs. The Energy Dashboard multiplies your energy consumption (kWh) by this price to show total costs." - }, - "next_interval_price": { - "description": "The next interval electricity price per kWh", - "long_description": "Shows the price for the next 15-minute interval from your Tibber subscription", - "usage_tips": "Use this to prepare for upcoming price changes or to schedule devices to run during cheaper intervals" - }, - "previous_interval_price": { - "description": "The previous interval electricity price per kWh", - "long_description": "Shows the price for the previous 15-minute interval from your Tibber subscription", - "usage_tips": "Use this to review past price changes or track price history" - }, - "current_hour_average_price": { - "description": "Rolling 5-interval average price per kWh", - "long_description": "Shows the average price per kWh calculated from 5 intervals: 2 previous, current, and 2 next intervals (approximately 75 minutes total). This provides a smoothed 'hour price' that adapts as time moves, rather than being fixed to clock hours.", - "usage_tips": "Use this for a more stable price indicator that smooths out short-term fluctuations while still being responsive to price changes. Better than fixed hourly prices for making consumption decisions." - }, - "next_hour_average_price": { - "description": "Rolling 5-interval average price for next hour per kWh", - "long_description": "Shows the average price per kWh calculated from 5 intervals centered one hour ahead: approximately intervals +2 through +6 from now (covering minutes +30 to +105). This provides a forward-looking smoothed 'hour price' for planning consumption.", - "usage_tips": "Use this to anticipate price changes in the next hour. Helpful for scheduling high-consumption activities like charging electric vehicles, running dishwashers, or heating systems." - }, - "lowest_price_today": { - "description": "The lowest electricity price for today per kWh", - "long_description": "Shows the lowest price per kWh for the current day from your Tibber subscription", - "usage_tips": "Use this to compare current prices to the cheapest time of the day" - }, - "highest_price_today": { - "description": "The highest electricity price for today per kWh", - "long_description": "Shows the highest price per kWh for the current day from your Tibber subscription", - "usage_tips": "Use this to avoid running appliances during peak price times" - }, - "average_price_today": { - "description": "The typical electricity price for today per kWh (configurable display format)", - "long_description": "Shows the typical price per kWh for today. **By default, the state displays the median** (resistant to extreme spikes, showing what you can generally expect). You can change this in the integration options to show the arithmetic mean instead. The alternate value is always available as attribute `price_mean` or `price_median` for automations.", - "usage_tips": "Use the state value for display. For exact cost calculations in automations, use: {{ state_attr('sensor.average_price_today', 'price_mean') }}" - }, - "lowest_price_tomorrow": { - "description": "The lowest electricity price for tomorrow per kWh", - "long_description": "Shows the lowest price per kWh for tomorrow from your Tibber subscription. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", - "usage_tips": "Use this to plan energy-intensive activities for tomorrow's cheapest time. Perfect for pre-scheduling heating, EV charging, or appliances." - }, - "highest_price_tomorrow": { - "description": "The highest electricity price for tomorrow per kWh", - "long_description": "Shows the highest price per kWh for tomorrow from your Tibber subscription. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", - "usage_tips": "Use this to avoid running appliances during tomorrow's peak price times. Helpful for planning around expensive periods." - }, - "average_price_tomorrow": { - "description": "The typical electricity price for tomorrow per kWh (configurable display format)", - "long_description": "Shows the typical price per kWh for tomorrow. **By default, the state displays the median** (resistant to extreme spikes). You can change this in the integration options to show the arithmetic mean instead. The alternate value is available as attribute. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", - "usage_tips": "Use this to plan tomorrow's energy consumption. For cost calculations, use: {{ state_attr('sensor.average_price_tomorrow', 'price_mean') }}" - }, - "yesterday_price_level": { - "description": "Aggregated price level for yesterday", - "long_description": "Shows the aggregated price level classification for all intervals in yesterday. Uses the same logic as hourly sensors to determine the overall price level for the entire day.", - "usage_tips": "Use this to understand yesterday's overall price situation. Compare with today to see daily trends." - }, - "today_price_level": { - "description": "Aggregated price level for today", - "long_description": "Shows the aggregated price level classification for all intervals in today. Uses the same logic as hourly sensors to determine the overall price level for the entire day.", - "usage_tips": "Use this to understand today's overall price situation at a glance. Helpful for quick assessments of whether today is generally cheap or expensive." - }, - "tomorrow_price_level": { - "description": "Aggregated price level for tomorrow", - "long_description": "Shows the aggregated price level classification for all intervals in tomorrow. Uses the same logic as hourly sensors to determine the overall price level for the entire day. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", - "usage_tips": "Use this to understand tomorrow's overall price situation. Compare with today to see if tomorrow will be more or less favorable for energy consumption." - }, - "yesterday_price_rating": { - "description": "Aggregated price rating for yesterday", - "long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in yesterday, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day.", - "usage_tips": "Use this to understand yesterday's price situation relative to your personalized thresholds. Compare with today for trend analysis." - }, - "today_price_rating": { - "description": "Aggregated price rating for today", - "long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in today, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day.", - "usage_tips": "Use this to quickly assess today's price situation relative to your personalized thresholds. Helps make consumption decisions for the current day." - }, - "tomorrow_price_rating": { - "description": "Aggregated price rating for tomorrow", - "long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in tomorrow, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", - "usage_tips": "Use this to plan tomorrow's energy consumption based on your personalized price thresholds. Compare with today to decide if you should shift consumption to tomorrow or use energy today." - }, - "trailing_price_average": { - "description": "The typical electricity price for the past 24 hours per kWh (configurable display format)", - "long_description": "Shows the typical price per kWh for the past 24 hours. **By default, the state displays the median** (resistant to extreme spikes, showing what price level was typical). You can change this in the integration options to show the arithmetic mean instead. The alternate value is available as attribute. Updates every 15 minutes.", - "usage_tips": "Use the state value to see the typical recent price level. For cost calculations, use: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" - }, - "leading_price_average": { - "description": "The typical electricity price for the next 24 hours per kWh (configurable display format)", - "long_description": "Shows the typical price per kWh for the next 24 hours. **By default, the state displays the median** (resistant to extreme spikes, showing what price level to expect). You can change this in the integration options to show the arithmetic mean instead. The alternate value is available as attribute.", - "usage_tips": "Use the state value to see the typical upcoming price level. For cost calculations, use: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" - }, - "trailing_price_min": { - "description": "The minimum electricity price for the past 24 hours per kWh", - "long_description": "Shows the minimum price per kWh from the past 24 hours (trailing minimum) from your Tibber subscription. This provides the lowest price seen in the last 24 hours.", - "usage_tips": "Use this to see the best price opportunity you had in the past 24 hours and compare it with current prices." - }, - "trailing_price_max": { - "description": "The maximum electricity price for the past 24 hours per kWh", - "long_description": "Shows the maximum price per kWh from the past 24 hours (trailing maximum) from your Tibber subscription. This provides the highest price seen in the last 24 hours.", - "usage_tips": "Use this to see the peak price in the past 24 hours and assess price volatility." - }, - "leading_price_min": { - "description": "The minimum electricity price for the next 24 hours per kWh", - "long_description": "Shows the minimum price per kWh from the next 24 hours (leading minimum) from your Tibber subscription. This provides the lowest price expected in the next 24 hours based on forecast data.", - "usage_tips": "Use this to identify the best price opportunity coming up and schedule energy-intensive tasks accordingly." - }, - "leading_price_max": { - "description": "The maximum electricity price for the next 24 hours per kWh", - "long_description": "Shows the maximum price per kWh from the next 24 hours (leading maximum) from your Tibber subscription. This provides the highest price expected in the next 24 hours based on forecast data.", - "usage_tips": "Use this to avoid running appliances during upcoming peak price periods." - }, - "current_interval_price_level": { - "description": "The current price level classification", - "long_description": "Shows Tibber's classification of the current price compared to historical prices", - "usage_tips": "Use this to create automations based on relative price levels rather than absolute prices" - }, - "next_interval_price_level": { - "description": "Price level for the next 15-minute interval", - "long_description": "Shows the price level classification for the upcoming interval. Helps anticipate short-term price changes for immediate planning.", - "usage_tips": "Use for quick decisions about starting or stopping high-power devices in the next few minutes." - }, - "previous_interval_price_level": { - "description": "Price level for the previous 15-minute interval", - "long_description": "Shows the price level classification for the last interval. Useful for historical comparison and understanding recent price trends.", - "usage_tips": "Use to compare current vs recent price levels or analyze consumption patterns against historical prices." - }, - "current_hour_price_level": { - "description": "Aggregated price level for current rolling hour (5 intervals)", - "long_description": "Shows the median price level across 5 intervals (2 before, current, 2 after) covering approximately 75 minutes. Provides a more stable price level indicator that smooths out short-term fluctuations.", - "usage_tips": "Use for medium-term planning decisions where you want to avoid reacting to brief price spikes or dips." - }, - "next_hour_price_level": { - "description": "Aggregated price level for next rolling hour (5 intervals ahead)", - "long_description": "Shows the median price level across 5 intervals centered one hour ahead. Helps plan consumption based on upcoming price trends rather than instantaneous future prices.", - "usage_tips": "Use to schedule activities for the next hour based on a smoothed price level forecast." - }, - "current_interval_price_rating": { - "description": "How the current interval's price compares to historical data", - "long_description": "Shows how the current interval's price compares to historical price data as a percentage", - "usage_tips": "A positive percentage means the current price is above average, negative means below average" - }, - "next_interval_price_rating": { - "description": "Price rating for the next 15-minute interval", - "long_description": "Shows how the next interval's price compares to the rolling 24-hour average. Helps anticipate if upcoming prices are above or below the recent trend.", - "usage_tips": "Use to make quick decisions about starting activities in the next interval based on relative price position." - }, - "previous_interval_price_rating": { - "description": "Price rating for the previous 15-minute interval", - "long_description": "Shows how the last interval's price compared to the rolling average. Useful for understanding recent price behavior.", - "usage_tips": "Use for analyzing how price ratings changed over time or validating past consumption decisions." - }, - "current_hour_price_rating": { - "description": "Aggregated price rating for current rolling hour (5 intervals)", - "long_description": "Shows the average rating across 5 intervals (2 before, current, 2 after). Based on the average percentage difference from rolling 24h average, providing a smoothed rating indicator.", - "usage_tips": "Use for stable medium-term price assessment that doesn't overreact to brief price anomalies." - }, - "next_hour_price_rating": { - "description": "Aggregated price rating for next rolling hour (5 intervals ahead)", - "long_description": "Shows the averaged rating for 5 intervals centered one hour ahead. Helps understand if the next hour will generally be above or below average pricing.", - "usage_tips": "Use to decide if you should wait an hour before starting high-consumption activities." - }, - "next_avg_1h": { - "description": "Average price for the next 1 hour (forward-only from next interval)", - "long_description": "Forward-looking average: Shows average of next 4 intervals (1 hour) starting from the NEXT 15-minute interval (not including current). Different from current_hour_average_price which includes past intervals. Use for absolute price threshold planning.", - "usage_tips": "Absolute price threshold: Only start appliances when average stays below your maximum acceptable price (e.g., below 0.25 EUR/kWh). Combine with trend sensor for optimal timing. Note: This is NOT a replacement for hourly prices - use current_hour_average_price for that." - }, - "next_avg_2h": { - "description": "Average price for the next 2 hours", - "long_description": "Shows the average price for the next 8 intervals (2 hours) starting from the next 15-minute interval.", - "usage_tips": "Absolute price threshold: Set a maximum acceptable average price for standard appliances like washing machines. Ensures you never pay more than your limit." - }, - "next_avg_3h": { - "description": "Average price for the next 3 hours", - "long_description": "Shows the average price for the next 12 intervals (3 hours) starting from the next 15-minute interval.", - "usage_tips": "Absolute price threshold: For EU Eco programs (dishwashers, 3-4h runtime). Only start when 3h average is below your price limit. Use with trend sensor to find best moment within acceptable price range." - }, - "next_avg_4h": { - "description": "Average price for the next 4 hours", - "long_description": "Shows the average price for the next 16 intervals (4 hours) starting from the next 15-minute interval.", - "usage_tips": "Absolute price threshold: Set maximum acceptable price for heat pumps or water heaters. Prevents operation during expensive periods regardless of relative trends." - }, - "next_avg_5h": { - "description": "Average price for the next 5 hours", - "long_description": "Shows the average price for the next 20 intervals (5 hours) starting from the next 15-minute interval.", - "usage_tips": "Absolute price threshold: Bridge between short and long-term planning. Use for extended cycles with hard price limits (e.g., pool pumps, extended heating cycles)." - }, - "next_avg_6h": { - "description": "Average price for the next 6 hours", - "long_description": "Shows the average price for the next 24 intervals (6 hours) starting from the next 15-minute interval.", - "usage_tips": "Absolute price threshold: Evening planning with price caps. Only schedule tasks if 6h average stays below your maximum acceptable cost." - }, - "next_avg_8h": { - "description": "Average price for the next 8 hours", - "long_description": "Shows the average price for the next 32 intervals (8 hours) starting from the next 15-minute interval.", - "usage_tips": "Absolute price threshold: Overnight operation decisions. Set hard price limits for night loads (battery charging, thermal storage). Never exceed your budget." - }, - "next_avg_12h": { - "description": "Average price for the next 12 hours", - "long_description": "Shows the average price for the next 48 intervals (12 hours) starting from the next 15-minute interval.", - "usage_tips": "Absolute price threshold: Strategic decisions with price caps. Only proceed if 12h average is below your maximum acceptable price. Good for postponable large loads." - }, - "price_outlook_1h": { - "description": "Price outlook for the next hour", - "long_description": "Compares your current price with the average of all intervals in the next hour (4 intervals). All outlook sensors (1h–12h) share the same base: your current price — they differ only in window size. Larger windows include more future hours and smooth out short-term spikes. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Decision guide: 'rising' = ACT NOW, your current price is cheaper than the next hour average. 'falling' = WAIT, the next hour average is cheaper than now. 'stable' = timing doesn't matter. Common misconception: 'rising' does NOT mean 'too late' — it means right now is a good price! Works regardless of absolute price level." - }, - "price_outlook_2h": { - "description": "Price outlook for the next 2 hours", - "long_description": "Compares your current price with the average of all intervals in the next 2 hours (8 intervals). 'rising' = current price is below the 2h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Appliances: 'rising' = start now, you're at a good price relative to the next 2h. 'falling' = better prices ahead, postpone if possible. 'stable' = doesn't matter, start when convenient. Pair with price_trajectory_2h to distinguish 'falling now, rising later' from 'falling throughout'." - }, - "price_outlook_3h": { - "description": "Price outlook for the next 3 hours", - "long_description": "Compares your current price with the average of all intervals in the next 3 hours (12 intervals). 'rising' = current price is below the 3h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Eco programs: 'rising' = start the eco cycle now, prices go up from here on average. 'falling' = wait, cheaper overall window coming. Combine with avg sensor for price cap: start when outlook is 'rising' or 'stable' AND avg < your limit." - }, - "price_outlook_4h": { - "description": "Price outlook for the next 4 hours", - "long_description": "Compares your current price with the average of all intervals in the next 4 hours (16 intervals). 'rising' = current price is below the 4h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Heat pump/battery: 'rising' = charge now, you're at a relative low. 'falling' = wait for better window on average. Important: 'strongly_falling' at a price minimum means the 4h average is much cheaper — but combine with price_trajectory_4h to tell if prices are still dropping or already bouncing back." - }, - "price_outlook_5h": { - "description": "Price outlook for the next 5 hours", - "long_description": "Compares your current price with the average of all intervals in the next 5 hours (20 intervals). 'rising' = current price is below the 5h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Extended operations: 'rising' or 'stable' = good time to start, prices won't be cheaper on average. 'falling' = wait if your schedule allows. Adapts to market conditions — finds best relative timing in any price environment." - }, - "price_outlook_6h": { - "description": "Price outlook for the next 6 hours", - "long_description": "Compares your current price with the average of all intervals in the next 6 hours (24 intervals). 'rising' = current price is below the 6h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Evening decisions: 'rising' = use electricity now while it's relatively cheap. 'falling' = evening/night prices will be better on average, wait if possible. Automatically adjusts to winter/summer price levels — no fixed thresholds needed." - }, - "price_outlook_8h": { - "description": "Price outlook for the next 8 hours", - "long_description": "Compares your current price with the average of all intervals in the next 8 hours (32 intervals). 'rising' = current price is below the 8h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Night planning: 'rising' = tonight/tomorrow will be more expensive on average, use power now. 'falling' = night prices will be cheaper, worth waiting. 'stable' = start when convenient. Works year-round without manual threshold adjustments." - }, - "price_outlook_12h": { - "description": "Price outlook for the next 12 hours", - "long_description": "Compares your current price with the average of all intervals in the next 12 hours (48 intervals). 'rising' = current price is below the 12h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Strategic decisions: 'rising' = you're at a low point relative to the next 12h, good time for high-consumption tasks. 'falling' = significantly better prices coming on average, wait if possible. Best combined with avg sensor price cap for absolute limits." - }, - "price_trajectory_2h": { - "description": "Price direction within the next 2-hour window", - "long_description": "Compares the average of the first hour (4 intervals) with the average of the second hour (4 intervals) within the next 2-hour window. 'rising' = second half more expensive than first half — prices are climbing within the window. 'falling' = second half cheaper — prices are dropping within the window. Reveals the direction of price movement inside the outlook window. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (because window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive than first) — revealing the upcoming reversal. Power combination: 'outlook: falling + trajectory: rising' = you're AT the minimum, act now. 'outlook: falling + trajectory: falling' = prices still dropping, keep waiting." - }, - "price_trajectory_3h": { - "description": "Price direction within the next 3-hour window", - "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing over the 3h window; 'falling' = prices are dropping. Reveals the direction of price movement independent of the current price level. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, the window average is low but prices are already recovering — start now. 'outlook: stable + trajectory: rising' = quiet market with an upward drift — no urgency but slight favor to starting now." - }, - "price_trajectory_4h": { - "description": "Price direction within the next 4-hour window", - "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing over the 4h window; 'falling' = prices are dropping. Complementary to price_outlook_4h: outlook answers 'is NOW cheap vs the window average?', trajectory answers 'are prices rising or falling within the window?'. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Heat pump charging: 'rising' = first half window is cheaper, charge now before prices climb. 'falling' = second half window is cheaper, wait if you can. 'stable' = prices flat throughout 4h — charge when convenient. Combine with outlook: if both rising, very strong signal to act now." - }, - "price_trajectory_5h": { - "description": "Price direction within the next 5-hour window", - "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing over the 5h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Eco/long cycles: combine both sensors — 'outlook: rising + trajectory: rising' = clear signal to start the long program now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start before costs climb. 'outlook: falling + trajectory: falling' = wait, still getting cheaper." - }, - "price_trajectory_6h": { - "description": "Price direction within the next 6-hour window", - "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing over the 6h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the day's low — good time for high consumption. Pairs well with daily volatility sensors to decide if 6h window optimization is worthwhile." - }, - "price_trajectory_8h": { - "description": "Price direction within the next 8-hour window", - "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing over the 8h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half of night will be cheapest, delay start. Useful for EV smart charging where you only need half the night's window." - }, - "price_trajectory_12h": { - "description": "Price direction within the next 12-hour window", - "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing over the 12h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = prices drop in the second part of the day, afternoon/evening scheduling is better. Useful for large scale decisions: hot water systems, home battery charge scheduling." - }, - "current_price_trend": { - "description": "Current price trend direction and how long it will last", - "long_description": "Shows the current price trend (rising/falling/stable) by combining historical momentum (weighted 1h lookback) with future outlook. Recognizes ongoing trends earlier than future-only analysis. Uses ±3% momentum threshold and volatility-adaptive future comparison. Calculates dynamically until the next trend change occurs (or 3h default if no change in 24h). The state shows the current direction, attributes show when it changes and what comes next.", - "usage_tips": "Status display: Dashboard visibility of 'what's happening now until when'. Perfectly synchronized with next_price_trend_change. Example: Badge showing 'Rising for 2.5h' or 'Falling until 16:45'. Better than time-window sensors because it understands you're ALREADY in a trend, not just predicting future changes. Use for quick visual overview, not automation triggers." - }, - "next_price_trend_change": { - "description": "When the next significant price trend change will occur", - "long_description": "Scans the next 24 hours (96 intervals) to find when the price trend direction will change. Only direction changes count: rising/strongly_rising are one group, falling/strongly_falling another, stable is its own. A change from rising to strongly_rising is NOT a trend change. Uses volatility-adaptive thresholds (default: ±3%/±9%) with hysteresis (default: 3 consecutive intervals). Returns the timestamp when the change is expected.", - "usage_tips": "Event-based automation: Trigger actions WHEN trend changes, not IN X hours. Example: 'Charge EV when next trend change shows falling prices' or 'Run dishwasher before prices start rising'. More accurate than simple future comparison because it knows if you're already in a trend. Complements time-window sensors (price_trend_Xh) which answer 'WILL prices be higher in X hours?'" - }, - "next_price_trend_change_in": { - "description": "Time until the next price trend change", - "long_description": "Shows how long until the next significant price trend change occurs. The state displays in hours (e.g., 2.25 h) for dashboards. Shares the same analysis as the Next Price Trend Change timestamp sensor but presents it as a countdown duration. Updates every minute for accurate countdowns. Returns unknown when no trend change is expected in the next 24 hours.", - "usage_tips": "Dashboard countdown: Show 'Trend changes in 1.5 h' as a live countdown. For automations: 'If next_price_trend_change_in state < 0.25 (15 min), prepare for price direction change'. Pairs with Next Price Trend Change (timestamp) — use the timestamp for 'WHEN' and this sensor for 'HOW LONG'." - }, - "daily_rating": { - "description": "How today's prices compare to historical data", - "long_description": "Shows how today's prices compare to historical price data as a percentage", - "usage_tips": "A positive percentage means today's prices are above average, negative means below average" - }, - "monthly_rating": { - "description": "How this month's prices compare to historical data", - "long_description": "Shows how this month's prices compare to historical price data as a percentage", - "usage_tips": "A positive percentage means this month's prices are above average, negative means below average" - }, - "data_timestamp": { - "description": "Timestamp of the latest available price data interval", - "long_description": "Shows the timestamp of the latest available price data interval from your Tibber subscription" - }, - "today_volatility": { - "description": "How much electricity prices change throughout today", - "long_description": "Indicates whether today's prices are stable or have big swings. Low volatility means prices stay fairly consistent—timing doesn't matter much. High volatility means significant price differences throughout the day—great opportunity to shift consumption to cheaper periods. Check `price_coefficient_variation_%` for the variance percentage and `price_spread` for the absolute price span.", - "usage_tips": "Use this to decide if optimization is worth your effort. On low-volatility days, you can run devices anytime. On high-volatility days, following Best Price periods saves meaningful money." - }, - "tomorrow_volatility": { - "description": "How much electricity prices will change tomorrow", - "long_description": "Indicates whether tomorrow's prices will be stable or have big swings. Available once tomorrow's data is published (typically 13:00-14:00 CET). Low volatility means prices stay fairly consistent—timing isn't critical. High volatility means significant price differences throughout the day—good opportunity for scheduling energy-intensive activities. Check `price_coefficient_variation_%` for the variance percentage and `price_spread` for the absolute price span.", - "usage_tips": "Use for planning tomorrow's energy consumption. High volatility? Schedule flexible loads during Best Price periods. Low volatility? Run devices whenever is convenient." - }, - "next_24h_volatility": { - "description": "How much prices will change over the next 24 hours", - "long_description": "Indicates price volatility for a rolling 24-hour window from now (updates every 15 minutes). Low volatility means prices stay fairly consistent. High volatility means significant price swings offer optimization opportunities. Unlike today/tomorrow sensors, this crosses day boundaries and provides a continuous forward-looking assessment. Check `price_coefficient_variation_%` for the variance percentage and `price_spread` for the absolute price span.", - "usage_tips": "Best for real-time decisions. Use when planning battery charging strategies or other flexible loads that might span across midnight. Provides consistent 24h perspective regardless of calendar day." - }, - "today_tomorrow_volatility": { - "description": "Combined price volatility across today and tomorrow", - "long_description": "Shows overall price volatility when considering both today and tomorrow together (when available). Indicates whether there are significant price differences across the day boundary. Falls back to today-only when tomorrow's data isn't available yet. Useful for understanding multi-day optimization opportunities. Check `price_coefficient_variation_%` for the variance percentage and `price_spread` for the absolute price span.", - "usage_tips": "Use for planning tasks that span multiple days. Check if prices vary enough to make scheduling worthwhile. The individual day volatility sensors show breakdown per day if you need more detail." - }, - "price_rank_today": { - "description": "Where the current price sits in today's ranking — its percentile rank (0% = cheapest moment)", - "long_description": "Shows how cheap or expensive the current price is compared to all of today's 96 quarter-hour slots. 0% means this is the cheapest moment of the day — every other slot costs more. 50% means half of today's slots are cheaper. ~99% means it's the most expensive slot of the day. Formula (percentile rank): how many slots are cheaper ÷ total slots × 100. Attributes: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Ideal for automations: 'If price_rank_today < 25, start dishwasher' (cheapest quarter of the day). Or 'If price_rank_today > 75, pause heat pump' (most expensive quarter). A value of 0 guarantees you're at the cheapest slot of the day." - }, - "price_rank_tomorrow": { - "description": "Where the current price sits in tomorrow's percentile ranking (0% = cheapest of tomorrow)", - "long_description": "Shows how the current price compares to all of tomorrow's 96 quarter-hour slots — its percentile rank within tomorrow's distribution. Useful for deciding whether to wait until tomorrow. 0% means the current price is cheaper than every slot tomorrow. Returns 'Unknown' until tomorrow's data arrives (typically after 13:00). Attributes: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Use to decide whether to wait: 'If price_rank_tomorrow < 10, tomorrow has even cheaper slots — postpone the task'. Best combined with a binary sensor to confirm the task can actually run tomorrow." - }, - "price_rank_today_tomorrow": { - "description": "Percentile rank across today and tomorrow combined (0% = cheapest of the two-day window)", - "long_description": "Shows how cheap or expensive the current price is compared to all slots across today and tomorrow together (up to 192 quarter-hour slots when both days are available) — the percentile rank within the two-day distribution. Gives the broadest view for flexible tasks. Falls back to today-only when tomorrow's data isn't available yet. 0% = cheapest of the combined two-day window. Attributes: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "The broadest signal for 'is now a good time?'. Use 'If price_rank_today_tomorrow < 20, run energy-intensive task now'. Especially valuable when tasks can wait a full day — a value near 0 across two days is a genuinely exceptional price." - }, - "data_lifecycle_status": { - "description": "Current state of price data lifecycle and caching", - "long_description": "Shows whether the integration is using cached data or fresh data from the API. Displays current lifecycle state: 'cached' (using stored data), 'fresh' (just fetched from API), 'refreshing' (currently fetching), 'searching_tomorrow' (actively polling for tomorrow's data after 13:00), 'turnover_pending' (within 15 minutes of midnight, 23:45-00:00), or 'error' (fetch failed). Includes comprehensive attributes like cache age, next API poll time, data completeness, and API call statistics.", - "usage_tips": "Use this diagnostic sensor to understand data freshness and API call patterns. Check 'cache_age' attribute to see how old the current data is. Monitor 'next_api_poll' to know when the next update is scheduled. Use 'data_completeness' to see if yesterday/today/tomorrow data is available. The 'api_calls_today' counter helps track API usage. Perfect for troubleshooting or understanding the integration's behavior." - }, - "best_price_end_time": { - "description": "When the current or next best price period ends", - "long_description": "Shows the end timestamp of the current best price period when active, or the end of the next period when no period is active. Always shows a useful time reference for planning. Returns 'Unknown' only when no periods are configured.", - "usage_tips": "Use this to display a countdown like 'Cheap period ends in 2 hours' (when active) or 'Next cheap period ends at 14:00' (when inactive). Home Assistant automatically shows relative time for timestamp sensors." - }, - "best_price_period_duration": { - "description": "Total length of current or next best price period", - "long_description": "Shows how long the best price period lasts in total. The state is displayed in hours (e.g., 1.5 h) for easy reading in the UI, while the `period_duration_minutes` attribute provides the same value in minutes (e.g., 90) for use in automations. During an active period, shows the duration of the current period. When no period is active, shows the duration of the next upcoming period. Returns 'Unknown' only when no periods are configured.", - "usage_tips": "For display: Use the state value (hours) in dashboards. For automations: Use `period_duration_minutes` attribute to check if there's enough time for long-running tasks (e.g., 'If period_duration_minutes >= 90, start washing machine')." - }, - "best_price_remaining_minutes": { - "description": "Time remaining in current best price period", - "long_description": "Shows how much time is left in the current best price period. The state displays in hours (e.g., 0.5 h) for easy reading, while the `remaining_minutes` attribute provides minutes (e.g., 30) for automation logic. Returns 0 when no period is active. Updates every minute. Check binary_sensor.best_price_period to see if a period is currently active.", - "usage_tips": "For automations: Use `remaining_minutes` attribute with numeric comparisons like 'If remaining_minutes > 0 AND remaining_minutes < 30, start washing machine now'. The value 0 makes it easy to check if a period is active (value > 0) or not (value = 0)." - }, - "best_price_progress": { - "description": "Progress through current best price period (0% when inactive)", - "long_description": "Shows progress through the current best price period as 0-100%. Returns 0% when no period is active. Updates every minute. 0% means period just started, 100% means it's about to end.", - "usage_tips": "Great for visual progress bars. Use in automations: 'If progress > 0 AND progress > 75, send notification that cheap period is ending soon'. Value 0 indicates no active period." - }, - "best_price_next_start_time": { - "description": "When the next best price period starts", - "long_description": "Shows when the next upcoming best price period starts. During an active period, this shows the start of the NEXT period after the current one. Returns 'Unknown' only when no future periods are configured.", - "usage_tips": "Always useful for planning ahead: 'Next cheap period starts in 3 hours' (whether you're in a period now or not). Combine with automations: 'When next start time is in 10 minutes, send notification to prepare washing machine'." - }, - "best_price_next_in_minutes": { - "description": "Time until next best price period starts", - "long_description": "Shows how long until the next best price period starts. The state displays in hours (e.g., 2.25 h) for dashboards, while the `next_in_minutes` attribute provides minutes (e.g., 135) for automation conditions. During an active period, shows time until the period AFTER the current one. Returns 0 during brief transition moments. Updates every minute.", - "usage_tips": "For automations: Use `next_in_minutes` attribute like 'If next_in_minutes > 0 AND next_in_minutes < 15, wait before starting dishwasher'. Value > 0 always indicates a future period is scheduled." - }, - "peak_price_end_time": { - "description": "When the current or next peak price period ends", - "long_description": "Shows the end timestamp of the current peak price period when active, or the end of the next period when no period is active. Always shows a useful time reference for planning. Returns 'Unknown' only when no periods are configured.", - "usage_tips": "Use this to display 'Expensive period ends in 1 hour' (when active) or 'Next expensive period ends at 18:00' (when inactive). Combine with automations to resume operations after peak." - }, - "peak_price_period_duration": { - "description": "Total length of current or next peak price period", - "long_description": "Shows how long the peak price period lasts in total. The state is displayed in hours (e.g., 0.75 h) for easy reading in the UI, while the `period_duration_minutes` attribute provides the same value in minutes (e.g., 45) for use in automations. During an active period, shows the duration of the current period. When no period is active, shows the duration of the next upcoming period. Returns 'Unknown' only when no periods are configured.", - "usage_tips": "For display: Use the state value (hours) in dashboards. For automations: Use `period_duration_minutes` attribute to decide whether to wait out the peak or proceed (e.g., 'If period_duration_minutes <= 60, pause operations')." - }, - "peak_price_remaining_minutes": { - "description": "Time remaining in current peak price period", - "long_description": "Shows how much time is left in the current peak price period. The state displays in hours (e.g., 1.0 h) for easy reading, while the `remaining_minutes` attribute provides minutes (e.g., 60) for automation logic. Returns 0 when no period is active. Updates every minute. Check binary_sensor.peak_price_period to see if a period is currently active.", - "usage_tips": "For automations: Use `remaining_minutes` attribute like 'If remaining_minutes > 60, cancel deferred charging session'. Value 0 makes it easy to distinguish active (value > 0) from inactive (value = 0) periods." - }, - "peak_price_progress": { - "description": "Progress through current peak price period (0% when inactive)", - "long_description": "Shows progress through the current peak price period as 0-100%. Returns 0% when no period is active. Updates every minute.", - "usage_tips": "Visual progress indicator in dashboards. Automation: 'If progress > 0 AND progress > 90, prepare to resume normal heating schedule'. Value 0 indicates no active period." - }, - "peak_price_next_start_time": { - "description": "When the next peak price period starts", - "long_description": "Shows when the next upcoming peak price period starts. During an active period, this shows the start of the NEXT period after the current one. Returns 'Unknown' only when no future periods are configured.", - "usage_tips": "Always useful for planning: 'Next expensive period starts in 2 hours'. Automation: 'When next start time is in 30 minutes, reduce heating temperature preemptively'." - }, - "peak_price_next_in_minutes": { - "description": "Time until next peak price period starts", - "long_description": "Shows how long until the next peak price period starts. The state displays in hours (e.g., 0.5 h) for dashboards, while the `next_in_minutes` attribute provides minutes (e.g., 30) for automation conditions. During an active period, shows time until the period AFTER the current one. Returns 0 during brief transition moments. Updates every minute.", - "usage_tips": "For automations: Use `next_in_minutes` attribute like 'If next_in_minutes > 0 AND next_in_minutes < 10, complete current charging cycle now before prices increase'." - }, - "home_type": { - "description": "Type of home (apartment, house, etc.)", - "long_description": "Shows the type of dwelling as configured in your Tibber account. This metadata can be useful for categorizing energy consumption patterns.", - "usage_tips": "Use this for organizing your smart home system or for analytics purposes." - }, - "home_size": { - "description": "Size of home in square meters", - "long_description": "Shows the size of your home in square meters as configured in your Tibber account. Can be used to calculate energy consumption per square meter.", - "usage_tips": "Use this in energy efficiency calculations: 'My home uses X kWh per square meter per year'." - }, - "main_fuse_size": { - "description": "Main electrical fuse size in amperes", - "long_description": "Shows the capacity of your main electrical fuse in amperes. This determines the maximum electrical load your home can handle simultaneously.", - "usage_tips": "Use this to prevent overloading: 'If total current consumption approaches fuse size, postpone starting additional appliances'." - }, - "number_of_residents": { - "description": "Number of people living in the home", - "long_description": "Shows the number of residents as configured in your Tibber account. Useful for per-capita energy consumption calculations.", - "usage_tips": "Use this for household energy analytics: 'Energy consumption per person per day'." - }, - "primary_heating_source": { - "description": "Primary heating system type", - "long_description": "Shows the type of heating system used in your home as configured in your Tibber account. This can be a heat pump, electric heating, gas, oil, or other heating sources.", - "usage_tips": "Use this to categorize heating-related automations or for energy consumption analysis by heating type." - }, - "grid_company": { - "description": "Name of your electricity grid operator", - "long_description": "Shows the name of the company operating the electrical grid in your area. This is the distribution system operator (DSO) responsible for delivering electricity to your home.", - "usage_tips": "Useful for administrative purposes and troubleshooting grid-related issues." - }, - "grid_area_code": { - "description": "Grid area identifier code", - "long_description": "Shows the code identifying your electrical grid area. This code is used by the grid operator for routing and billing purposes.", - "usage_tips": "Use this for administrative reference or when contacting your grid operator." - }, - "price_area_code": { - "description": "Electricity price area code", - "long_description": "Shows the code for your electricity price area (e.g., NO1, NO2, SE3, DK1). Different areas have different wholesale electricity prices based on regional supply and demand.", - "usage_tips": "Use this to understand which price region you're in. Useful when comparing prices with others or analyzing regional price patterns." - }, - "consumption_ean": { - "description": "EAN code for electricity consumption metering", - "long_description": "Shows the European Article Number (EAN) code that uniquely identifies your electricity consumption meter. This 18-digit code is used for billing and administrative purposes.", - "usage_tips": "Use this when communicating with your electricity provider or for administrative documentation." - }, - "production_ean": { - "description": "EAN code for electricity production metering", - "long_description": "Shows the European Article Number (EAN) code for your electricity production meter (if you have solar panels or other generation). This code tracks electricity you feed back into the grid.", - "usage_tips": "Relevant if you have solar panels or other electricity generation. Use for administrative purposes and when claiming feed-in compensation." - }, - "energy_tax_type": { - "description": "Type of energy tax applied", - "long_description": "Shows the energy tax category applied to your electricity consumption. Tax rates vary by country and sometimes by consumer type (residential, commercial, etc.).", - "usage_tips": "Use this for understanding your electricity bill breakdown and total cost calculations." - }, - "vat_type": { - "description": "VAT (Value Added Tax) category", - "long_description": "Shows the VAT category applied to your electricity consumption. VAT rates vary by country and may differ for electricity compared to other goods and services.", - "usage_tips": "Use this for understanding your electricity bill and calculating total costs including taxes." - }, - "estimated_annual_consumption": { - "description": "Estimated yearly electricity consumption in kWh", - "long_description": "Shows your estimated annual electricity consumption in kilowatt-hours as calculated or configured in your Tibber account. This estimate is used for comparing actual consumption to expected values.", - "usage_tips": "Use this to track if your actual consumption is above or below expectations. Compare monthly consumption to 1/12 of this value to identify unusual patterns." - }, - "subscription_status": { - "description": "Status of your Tibber subscription", - "long_description": "Shows whether your Tibber subscription is currently running, has ended, or is pending activation. A status of 'running' means you're actively receiving electricity through Tibber.", - "usage_tips": "Use this to monitor your subscription status. Set up alerts if status changes from 'running' to ensure uninterrupted service." - }, - "day_pattern_yesterday": { - "description": "Detected price shape of yesterday's electricity prices", - "long_description": "Classifies yesterday into a price shape: Valley (cheap in the middle), Peak (expensive in the middle), Double Valley (two cheap periods), Double Peak (two expensive periods), Flat (little variation), Rising, Falling, or Mixed. The confidence and CV attributes indicate how reliably the pattern was detected.", - "usage_tips": "Use yesterday's pattern to refine automations: a Valley day often repeats the next day, suggesting you should pre-schedule cheap-hour loads. Pair with the confidence attribute to filter unreliable detections." - }, - "day_pattern_today": { - "description": "Detected price shape of today's electricity prices", - "long_description": "Classifies today into a price shape: Valley (cheap in the middle of the day), Peak (expensive in the middle), Double Valley (W-shape, two cheap windows), Double Peak (M-shape, two expensive peaks), Flat (prices barely move), Rising (prices climb through the day), Falling (prices drop through the day), or Mixed. Attributes include confidence (0–1), coefficient of variation, knee-point times, and intra-day segments.", - "usage_tips": "Use today's pattern to decide when to shift loads. A Valley day means cheap prices around midday — ideal for running the dishwasher, washing machine, or charging the EV. A Peak day means expensive midday — run appliances early morning or late evening. Use valley_start and valley_end attributes to schedule automations precisely." - }, - "day_pattern_tomorrow": { - "description": "Detected price shape of tomorrow's electricity prices", - "long_description": "Classifies tomorrow (once data is available, typically after 13:00) into a price shape using the same algorithm as today. The valley_start / valley_end or peak_start / peak_end attributes give knee-point times for the primary extremum so you can pre-schedule loads the evening before.", - "usage_tips": "Set up evening automations that read tomorrow's pattern and pre-configure heat pump schedules, car charging timers, or water heater settings for the following day. Pair with the tomorrow_data_available binary sensor to trigger the automation only when data is ready." - }, - "chart_data_export": { - "description": "Data export for dashboard integrations", - "long_description": "This binary sensor calls the get_chartdata service with your configured YAML parameters and exposes the result as entity attributes. The state is 'on' when the service call succeeds and data is available, 'off' when the call fails or no configuration is set. Perfect for dashboard integrations like ApexCharts that need to read price data from entity attributes.", - "usage_tips": "Configure the YAML parameters in the integration options to match your get_chartdata service call. The sensor will automatically refresh when price data updates (typically after midnight and when tomorrow's data arrives). Access the service response data directly from the entity's attributes - the structure matches exactly what get_chartdata returns." - }, - "chart_metadata": { - "description": "Lightweight metadata for chart configuration", - "long_description": "Provides essential chart configuration values as sensor attributes. Useful for any chart card that needs Y-axis bounds. The sensor calls get_chartdata with metadata-only mode (no data processing) and extracts: yaxis_min, yaxis_max (suggested Y-axis range for optimal scaling). The state reflects the service call result: 'ready' when successful, 'error' on failure, 'pending' during initialization.", - "usage_tips": "Configure via configuration.yaml under tibber_prices.chart_metadata_config (optional: day, subunit_currency, resolution). The sensor automatically refreshes when price data updates. Access metadata from attributes: yaxis_min, yaxis_max. Use with config-template-card or any tool that reads entity attributes - perfect for dynamic chart configuration without manual calculations." - } + "current_interval_price_base": { + "description": "Current electricity price in base currency (EUR/kWh, NOK/kWh, etc.) for Energy Dashboard", + "long_description": "Shows the current price per kWh in base currency units (e.g., EUR/kWh instead of ct/kWh, NOK/kWh instead of øre/kWh). This sensor is specifically designed for use with Home Assistant's Energy Dashboard, which requires prices in standard currency units.", + "usage_tips": "Use this sensor when configuring the Energy Dashboard under Settings → Dashboards → Energy. Select this sensor as the 'Entity with current price' to automatically calculate your energy costs. The Energy Dashboard multiplies your energy consumption (kWh) by this price to show total costs." }, - "binary_sensor": { - "tomorrow_data_available": { - "description": "Whether price data for tomorrow is available", - "long_description": "Indicates if price data for the following day has been received from Tibber", - "usage_tips": "Use this to check if tomorrow's prices are available for planning" - }, - "peak_price_period": { - "description": "Whether the current interval is among the most expensive of the day", - "long_description": "Turns on when the current price is in the top 20% of today's prices", - "usage_tips": "Use this to avoid running high-consumption appliances during expensive intervals" - }, - "best_price_period": { - "description": "Whether the current interval is among the cheapest of the day", - "long_description": "Turns on when the current price is in the bottom 20% of today's prices", - "usage_tips": "Use this to run high-consumption appliances during the cheapest intervals" - }, - "connection": { - "description": "Whether the connection to the Tibber API is working", - "long_description": "Indicates if the integration can successfully connect to the Tibber API", - "usage_tips": "Use this to monitor the connection status to the Tibber API" - }, - "has_ventilation_system": { - "description": "Whether your home has a ventilation system", - "long_description": "Indicates if a ventilation system is registered for your home in the Tibber account. Ventilation systems can be significant electricity consumers that may benefit from smart scheduling.", - "usage_tips": "Use this to enable ventilation-specific automations or energy monitoring. If true, consider scheduling ventilation during low-price periods." - }, - "realtime_consumption_enabled": { - "description": "Whether realtime consumption monitoring is active", - "long_description": "Indicates if realtime electricity consumption monitoring is enabled and active for your Tibber home. This requires compatible metering hardware (e.g., Tibber Pulse) and an active subscription.", - "usage_tips": "Use this to verify that realtime consumption data is available. Enable notifications if this changes to 'off' unexpectedly, indicating potential hardware or connectivity issues." - } + "next_interval_price": { + "description": "The next interval electricity price per kWh", + "long_description": "Shows the price for the next 15-minute interval from your Tibber subscription", + "usage_tips": "Use this to prepare for upcoming price changes or to schedule devices to run during cheaper intervals" }, - "number": { - "best_price_flex_override": { - "description": "Maximum above the daily minimum price that intervals can be and still qualify as 'best price'. Recommended: 15-20 with relaxation enabled (default), or 25-35 without relaxation. Maximum: 50 (hard cap for reliable period detection).", - "long_description": "When this entity is enabled, its value overrides the 'Flexibility' setting from the options flow for best price period calculations.", - "usage_tips": "Enable this entity to dynamically adjust best price detection via automations. Higher values create longer periods, lower values are stricter." - }, - "best_price_min_distance_override": { - "description": "Ensures periods are significantly cheaper than the daily average, not just marginally below it. This filters out noise and prevents marking slightly-below-average periods as 'best price' on days with flat prices. Higher values = stricter filtering (only truly cheap periods qualify).", - "long_description": "When this entity is enabled, its value overrides the 'Minimum Distance' setting from the options flow for best price period calculations.", - "usage_tips": "Use in automations to adjust how much better than average the best price periods must be. Higher values require prices to be further below average." - }, - "best_price_min_period_length_override": { - "description": "Minimum duration for a period to be considered as 'best price'. Longer periods are more practical for running appliances like dishwashers or heat pumps. Best price periods require 60 minutes minimum (vs. 30 minutes for peak price warnings) because they should provide meaningful time windows for consumption planning.", - "long_description": "When this entity is enabled, its value overrides the 'Minimum Period Length' setting from the options flow for best price period calculations.", - "usage_tips": "Increase when your appliances need longer uninterrupted run times (e.g., washing machines, dishwashers)." - }, - "best_price_min_periods_override": { - "description": "Minimum number of best price periods to aim for per day. Filters will be relaxed step-by-step to try achieving this count. Only active when 'Achieve Minimum Count' is enabled.", - "long_description": "When this entity is enabled, its value overrides the 'Minimum Periods' setting from the options flow for best price period calculations.", - "usage_tips": "Adjust dynamically based on how many times per day you need cheap electricity windows." - }, - "best_price_relaxation_attempts_override": { - "description": "How many flex levels (attempts) to try before giving up. Each attempt runs all filter combinations at the new flex level. More attempts increase the chance of finding additional periods at the cost of longer processing time.", - "long_description": "When this entity is enabled, its value overrides the 'Relaxation Attempts' setting from the options flow for best price period calculations.", - "usage_tips": "Increase when periods are hard to find. Decrease for stricter price filtering." - }, - "best_price_gap_count_override": { - "description": "Maximum number of consecutive intervals allowed that deviate by exactly one level step from the required level. This prevents periods from being split by occasional level deviations. Gap tolerance requires periods ≥90 minutes (6 intervals) to detect outliers effectively.", - "long_description": "When this entity is enabled, its value overrides the 'Gap Tolerance' setting from the options flow for best price period calculations.", - "usage_tips": "Increase to allow longer periods with occasional price spikes. Keep low for stricter continuous cheap periods." - }, - "peak_price_flex_override": { - "description": "Maximum below the daily maximum price that intervals can be and still qualify as 'peak price'. Recommended: -15 to -20 with relaxation enabled (default), or -25 to -35 without relaxation. Maximum: -50 (hard cap for reliable period detection). Note: Negative values indicate distance below maximum.", - "long_description": "When this entity is enabled, its value overrides the 'Flexibility' setting from the options flow for peak price period calculations.", - "usage_tips": "Enable this entity to dynamically adjust peak price detection via automations. Higher values create longer peak periods." - }, - "peak_price_min_distance_override": { - "description": "Ensures periods are significantly more expensive than the daily average, not just marginally above it. This filters out noise and prevents marking slightly-above-average periods as 'peak price' on days with flat prices. Higher values = stricter filtering (only truly expensive periods qualify).", - "long_description": "When this entity is enabled, its value overrides the 'Minimum Distance' setting from the options flow for peak price period calculations.", - "usage_tips": "Use in automations to adjust how much higher than average the peak price periods must be." - }, - "peak_price_min_period_length_override": { - "description": "Minimum duration for a period to be considered as 'peak price'. Peak price warnings are allowed for shorter periods (30 minutes minimum vs. 60 minutes for best price) because brief expensive spikes are worth alerting about, even if they're too short for consumption planning.", - "long_description": "When this entity is enabled, its value overrides the 'Minimum Period Length' setting from the options flow for peak price period calculations.", - "usage_tips": "Increase to filter out brief price spikes, focusing on sustained expensive periods." - }, - "peak_price_min_periods_override": { - "description": "Minimum number of peak price periods to aim for per day. Filters will be relaxed step-by-step to try achieving this count. Only active when 'Achieve Minimum Count' is enabled.", - "long_description": "When this entity is enabled, its value overrides the 'Minimum Periods' setting from the options flow for peak price period calculations.", - "usage_tips": "Adjust based on how many peak periods you want to identify and avoid." - }, - "peak_price_relaxation_attempts_override": { - "description": "How many flex levels (attempts) to try before giving up. Each attempt runs all filter combinations at the new flex level. More attempts increase the chance of finding additional peak periods at the cost of longer processing time.", - "long_description": "When this entity is enabled, its value overrides the 'Relaxation Attempts' setting from the options flow for peak price period calculations.", - "usage_tips": "Increase when peak periods are hard to detect. Decrease for stricter peak price filtering." - }, - "peak_price_gap_count_override": { - "description": "Maximum number of consecutive intervals allowed that deviate by exactly one level step from the required level. This prevents periods from being split by occasional level deviations. Gap tolerance requires periods ≥90 minutes (6 intervals) to detect outliers effectively.", - "long_description": "When this entity is enabled, its value overrides the 'Gap Tolerance' setting from the options flow for peak price period calculations.", - "usage_tips": "Increase to identify sustained expensive periods with brief dips. Keep low for stricter continuous peak detection." - } + "previous_interval_price": { + "description": "The previous interval electricity price per kWh", + "long_description": "Shows the price for the previous 15-minute interval from your Tibber subscription", + "usage_tips": "Use this to review past price changes or track price history" }, - "switch": { - "best_price_enable_relaxation_override": { - "description": "When enabled, filters will be gradually relaxed if not enough periods are found. This attempts to reach the desired minimum number of periods, which may include less optimal time windows as best-price periods.", - "long_description": "When this entity is enabled, its value overrides the 'Achieve Minimum Count' setting from the options flow for best price period calculations.", - "usage_tips": "Turn OFF to disable relaxation and use strict filtering only. Turn ON to allow the algorithm to relax criteria to find more periods." - }, - "peak_price_enable_relaxation_override": { - "description": "When enabled, filters will be gradually relaxed if not enough periods are found. This attempts to reach the desired minimum number of periods to ensure you're warned about expensive periods even on days with unusual price patterns.", - "long_description": "When this entity is enabled, its value overrides the 'Achieve Minimum Count' setting from the options flow for peak price period calculations.", - "usage_tips": "Turn OFF to disable relaxation and use strict filtering only. Turn ON to allow the algorithm to relax criteria to find more peak periods." - } + "current_hour_average_price": { + "description": "Rolling 5-interval average price per kWh", + "long_description": "Shows the average price per kWh calculated from 5 intervals: 2 previous, current, and 2 next intervals (approximately 75 minutes total). This provides a smoothed 'hour price' that adapts as time moves, rather than being fixed to clock hours.", + "usage_tips": "Use this for a more stable price indicator that smooths out short-term fluctuations while still being responsive to price changes. Better than fixed hourly prices for making consumption decisions." }, - "home_types": { - "APARTMENT": "Apartment", - "ROWHOUSE": "Rowhouse", - "HOUSE": "House", - "COTTAGE": "Cottage" + "next_hour_average_price": { + "description": "Rolling 5-interval average price for next hour per kWh", + "long_description": "Shows the average price per kWh calculated from 5 intervals centered one hour ahead: approximately intervals +2 through +6 from now (covering minutes +30 to +105). This provides a forward-looking smoothed 'hour price' for planning consumption.", + "usage_tips": "Use this to anticipate price changes in the next hour. Helpful for scheduling high-consumption activities like charging electric vehicles, running dishwashers, or heating systems." }, - "time_units": { - "day": "{count} day", - "days": "{count} days", - "hour": "{count} hour", - "hours": "{count} hours", - "minute": "{count} minute", - "minutes": "{count} minutes", - "ago": "{parts} ago", - "now": "now" + "lowest_price_today": { + "description": "The lowest electricity price for today per kWh", + "long_description": "Shows the lowest price per kWh for the current day from your Tibber subscription", + "usage_tips": "Use this to compare current prices to the cheapest time of the day" }, - "attribution": "Data provided by Tibber" + "highest_price_today": { + "description": "The highest electricity price for today per kWh", + "long_description": "Shows the highest price per kWh for the current day from your Tibber subscription", + "usage_tips": "Use this to avoid running appliances during peak price times" + }, + "average_price_today": { + "description": "The typical electricity price for today per kWh (configurable display format)", + "long_description": "Shows the typical price per kWh for today. **By default, the state displays the median** (resistant to extreme spikes, showing what you can generally expect). You can change this in the integration options to show the arithmetic mean instead. The alternate value is always available as attribute `price_mean` or `price_median` for automations.", + "usage_tips": "Use the state value for display. For exact cost calculations in automations, use: {{ state_attr('sensor.average_price_today', 'price_mean') }}" + }, + "lowest_price_tomorrow": { + "description": "The lowest electricity price for tomorrow per kWh", + "long_description": "Shows the lowest price per kWh for tomorrow from your Tibber subscription. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", + "usage_tips": "Use this to plan energy-intensive activities for tomorrow's cheapest time. Perfect for pre-scheduling heating, EV charging, or appliances." + }, + "highest_price_tomorrow": { + "description": "The highest electricity price for tomorrow per kWh", + "long_description": "Shows the highest price per kWh for tomorrow from your Tibber subscription. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", + "usage_tips": "Use this to avoid running appliances during tomorrow's peak price times. Helpful for planning around expensive periods." + }, + "average_price_tomorrow": { + "description": "The typical electricity price for tomorrow per kWh (configurable display format)", + "long_description": "Shows the typical price per kWh for tomorrow. **By default, the state displays the median** (resistant to extreme spikes). You can change this in the integration options to show the arithmetic mean instead. The alternate value is available as attribute. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", + "usage_tips": "Use this to plan tomorrow's energy consumption. For cost calculations, use: {{ state_attr('sensor.average_price_tomorrow', 'price_mean') }}" + }, + "yesterday_price_level": { + "description": "Aggregated price level for yesterday", + "long_description": "Shows the aggregated price level classification for all intervals in yesterday. Uses the same logic as hourly sensors to determine the overall price level for the entire day.", + "usage_tips": "Use this to understand yesterday's overall price situation. Compare with today to see daily trends." + }, + "today_price_level": { + "description": "Aggregated price level for today", + "long_description": "Shows the aggregated price level classification for all intervals in today. Uses the same logic as hourly sensors to determine the overall price level for the entire day.", + "usage_tips": "Use this to understand today's overall price situation at a glance. Helpful for quick assessments of whether today is generally cheap or expensive." + }, + "tomorrow_price_level": { + "description": "Aggregated price level for tomorrow", + "long_description": "Shows the aggregated price level classification for all intervals in tomorrow. Uses the same logic as hourly sensors to determine the overall price level for the entire day. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", + "usage_tips": "Use this to understand tomorrow's overall price situation. Compare with today to see if tomorrow will be more or less favorable for energy consumption." + }, + "yesterday_price_rating": { + "description": "Aggregated price rating for yesterday", + "long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in yesterday, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day.", + "usage_tips": "Use this to understand yesterday's price situation relative to your personalized thresholds. Compare with today for trend analysis." + }, + "today_price_rating": { + "description": "Aggregated price rating for today", + "long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in today, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day.", + "usage_tips": "Use this to quickly assess today's price situation relative to your personalized thresholds. Helps make consumption decisions for the current day." + }, + "tomorrow_price_rating": { + "description": "Aggregated price rating for tomorrow", + "long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in tomorrow, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).", + "usage_tips": "Use this to plan tomorrow's energy consumption based on your personalized price thresholds. Compare with today to decide if you should shift consumption to tomorrow or use energy today." + }, + "trailing_price_average": { + "description": "The typical electricity price for the past 24 hours per kWh (configurable display format)", + "long_description": "Shows the typical price per kWh for the past 24 hours. **By default, the state displays the median** (resistant to extreme spikes, showing what price level was typical). You can change this in the integration options to show the arithmetic mean instead. The alternate value is available as attribute. Updates every 15 minutes.", + "usage_tips": "Use the state value to see the typical recent price level. For cost calculations, use: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" + }, + "leading_price_average": { + "description": "The typical electricity price for the next 24 hours per kWh (configurable display format)", + "long_description": "Shows the typical price per kWh for the next 24 hours. **By default, the state displays the median** (resistant to extreme spikes, showing what price level to expect). You can change this in the integration options to show the arithmetic mean instead. The alternate value is available as attribute.", + "usage_tips": "Use the state value to see the typical upcoming price level. For cost calculations, use: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" + }, + "trailing_price_min": { + "description": "The minimum electricity price for the past 24 hours per kWh", + "long_description": "Shows the minimum price per kWh from the past 24 hours (trailing minimum) from your Tibber subscription. This provides the lowest price seen in the last 24 hours.", + "usage_tips": "Use this to see the best price opportunity you had in the past 24 hours and compare it with current prices." + }, + "trailing_price_max": { + "description": "The maximum electricity price for the past 24 hours per kWh", + "long_description": "Shows the maximum price per kWh from the past 24 hours (trailing maximum) from your Tibber subscription. This provides the highest price seen in the last 24 hours.", + "usage_tips": "Use this to see the peak price in the past 24 hours and assess price volatility." + }, + "leading_price_min": { + "description": "The minimum electricity price for the next 24 hours per kWh", + "long_description": "Shows the minimum price per kWh from the next 24 hours (leading minimum) from your Tibber subscription. This provides the lowest price expected in the next 24 hours based on forecast data.", + "usage_tips": "Use this to identify the best price opportunity coming up and schedule energy-intensive tasks accordingly." + }, + "leading_price_max": { + "description": "The maximum electricity price for the next 24 hours per kWh", + "long_description": "Shows the maximum price per kWh from the next 24 hours (leading maximum) from your Tibber subscription. This provides the highest price expected in the next 24 hours based on forecast data.", + "usage_tips": "Use this to avoid running appliances during upcoming peak price periods." + }, + "current_interval_price_level": { + "description": "The current price level classification", + "long_description": "Shows Tibber's classification of the current price compared to historical prices", + "usage_tips": "Use this to create automations based on relative price levels rather than absolute prices" + }, + "next_interval_price_level": { + "description": "Price level for the next 15-minute interval", + "long_description": "Shows the price level classification for the upcoming interval. Helps anticipate short-term price changes for immediate planning.", + "usage_tips": "Use for quick decisions about starting or stopping high-power devices in the next few minutes." + }, + "previous_interval_price_level": { + "description": "Price level for the previous 15-minute interval", + "long_description": "Shows the price level classification for the last interval. Useful for historical comparison and understanding recent price trends.", + "usage_tips": "Use to compare current vs recent price levels or analyze consumption patterns against historical prices." + }, + "current_hour_price_level": { + "description": "Aggregated price level for current rolling hour (5 intervals)", + "long_description": "Shows the median price level across 5 intervals (2 before, current, 2 after) covering approximately 75 minutes. Provides a more stable price level indicator that smooths out short-term fluctuations.", + "usage_tips": "Use for medium-term planning decisions where you want to avoid reacting to brief price spikes or dips." + }, + "next_hour_price_level": { + "description": "Aggregated price level for next rolling hour (5 intervals ahead)", + "long_description": "Shows the median price level across 5 intervals centered one hour ahead. Helps plan consumption based on upcoming price trends rather than instantaneous future prices.", + "usage_tips": "Use to schedule activities for the next hour based on a smoothed price level forecast." + }, + "current_interval_price_rating": { + "description": "How the current interval's price compares to historical data", + "long_description": "Shows how the current interval's price compares to historical price data as a percentage", + "usage_tips": "A positive percentage means the current price is above average, negative means below average" + }, + "next_interval_price_rating": { + "description": "Price rating for the next 15-minute interval", + "long_description": "Shows how the next interval's price compares to the rolling 24-hour average. Helps anticipate if upcoming prices are above or below the recent trend.", + "usage_tips": "Use to make quick decisions about starting activities in the next interval based on relative price position." + }, + "previous_interval_price_rating": { + "description": "Price rating for the previous 15-minute interval", + "long_description": "Shows how the last interval's price compared to the rolling average. Useful for understanding recent price behavior.", + "usage_tips": "Use for analyzing how price ratings changed over time or validating past consumption decisions." + }, + "current_hour_price_rating": { + "description": "Aggregated price rating for current rolling hour (5 intervals)", + "long_description": "Shows the average rating across 5 intervals (2 before, current, 2 after). Based on the average percentage difference from rolling 24h average, providing a smoothed rating indicator.", + "usage_tips": "Use for stable medium-term price assessment that doesn't overreact to brief price anomalies." + }, + "next_hour_price_rating": { + "description": "Aggregated price rating for next rolling hour (5 intervals ahead)", + "long_description": "Shows the averaged rating for 5 intervals centered one hour ahead. Helps understand if the next hour will generally be above or below average pricing.", + "usage_tips": "Use to decide if you should wait an hour before starting high-consumption activities." + }, + "next_avg_1h": { + "description": "Average price for the next 1 hour (forward-only from next interval)", + "long_description": "Forward-looking average: Shows average of next 4 intervals (1 hour) starting from the NEXT 15-minute interval (not including current). Different from current_hour_average_price which includes past intervals. Use for absolute price threshold planning.", + "usage_tips": "Absolute price threshold: Only start appliances when average stays below your maximum acceptable price (e.g., below 0.25 EUR/kWh). Combine with trend sensor for optimal timing. Note: This is NOT a replacement for hourly prices - use current_hour_average_price for that." + }, + "next_avg_2h": { + "description": "Average price for the next 2 hours", + "long_description": "Shows the average price for the next 8 intervals (2 hours) starting from the next 15-minute interval.", + "usage_tips": "Absolute price threshold: Set a maximum acceptable average price for standard appliances like washing machines. Ensures you never pay more than your limit." + }, + "next_avg_3h": { + "description": "Average price for the next 3 hours", + "long_description": "Shows the average price for the next 12 intervals (3 hours) starting from the next 15-minute interval.", + "usage_tips": "Absolute price threshold: For EU Eco programs (dishwashers, 3-4h runtime). Only start when 3h average is below your price limit. Use with trend sensor to find best moment within acceptable price range." + }, + "next_avg_4h": { + "description": "Average price for the next 4 hours", + "long_description": "Shows the average price for the next 16 intervals (4 hours) starting from the next 15-minute interval.", + "usage_tips": "Absolute price threshold: Set maximum acceptable price for heat pumps or water heaters. Prevents operation during expensive periods regardless of relative trends." + }, + "next_avg_5h": { + "description": "Average price for the next 5 hours", + "long_description": "Shows the average price for the next 20 intervals (5 hours) starting from the next 15-minute interval.", + "usage_tips": "Absolute price threshold: Bridge between short and long-term planning. Use for extended cycles with hard price limits (e.g., pool pumps, extended heating cycles)." + }, + "next_avg_6h": { + "description": "Average price for the next 6 hours", + "long_description": "Shows the average price for the next 24 intervals (6 hours) starting from the next 15-minute interval.", + "usage_tips": "Absolute price threshold: Evening planning with price caps. Only schedule tasks if 6h average stays below your maximum acceptable cost." + }, + "next_avg_8h": { + "description": "Average price for the next 8 hours", + "long_description": "Shows the average price for the next 32 intervals (8 hours) starting from the next 15-minute interval.", + "usage_tips": "Absolute price threshold: Overnight operation decisions. Set hard price limits for night loads (battery charging, thermal storage). Never exceed your budget." + }, + "next_avg_12h": { + "description": "Average price for the next 12 hours", + "long_description": "Shows the average price for the next 48 intervals (12 hours) starting from the next 15-minute interval.", + "usage_tips": "Absolute price threshold: Strategic decisions with price caps. Only proceed if 12h average is below your maximum acceptable price. Good for postponable large loads." + }, + "price_outlook_1h": { + "description": "Price outlook for the next hour", + "long_description": "Compares your current price with the average of all intervals in the next hour (4 intervals). All outlook sensors (1h–12h) share the same base: your current price — they differ only in window size. Larger windows include more future hours and smooth out short-term spikes. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Decision guide: 'rising' = ACT NOW, your current price is cheaper than the next hour average. 'falling' = WAIT, the next hour average is cheaper than now. 'stable' = timing doesn't matter. Common misconception: 'rising' does NOT mean 'too late' — it means right now is a good price! Works regardless of absolute price level." + }, + "price_outlook_2h": { + "description": "Price outlook for the next 2 hours", + "long_description": "Compares your current price with the average of all intervals in the next 2 hours (8 intervals). 'rising' = current price is below the 2h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Appliances: 'rising' = start now, you're at a good price relative to the next 2h. 'falling' = better prices ahead, postpone if possible. 'stable' = doesn't matter, start when convenient. Pair with price_trajectory_2h to distinguish 'falling now, rising later' from 'falling throughout'." + }, + "price_outlook_3h": { + "description": "Price outlook for the next 3 hours", + "long_description": "Compares your current price with the average of all intervals in the next 3 hours (12 intervals). 'rising' = current price is below the 3h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Eco programs: 'rising' = start the eco cycle now, prices go up from here on average. 'falling' = wait, cheaper overall window coming. Combine with avg sensor for price cap: start when outlook is 'rising' or 'stable' AND avg < your limit." + }, + "price_outlook_4h": { + "description": "Price outlook for the next 4 hours", + "long_description": "Compares your current price with the average of all intervals in the next 4 hours (16 intervals). 'rising' = current price is below the 4h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Heat pump/battery: 'rising' = charge now, you're at a relative low. 'falling' = wait for better window on average. Important: 'strongly_falling' at a price minimum means the 4h average is much cheaper — but combine with price_trajectory_4h to tell if prices are still dropping or already bouncing back." + }, + "price_outlook_5h": { + "description": "Price outlook for the next 5 hours", + "long_description": "Compares your current price with the average of all intervals in the next 5 hours (20 intervals). 'rising' = current price is below the 5h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Extended operations: 'rising' or 'stable' = good time to start, prices won't be cheaper on average. 'falling' = wait if your schedule allows. Adapts to market conditions — finds best relative timing in any price environment." + }, + "price_outlook_6h": { + "description": "Price outlook for the next 6 hours", + "long_description": "Compares your current price with the average of all intervals in the next 6 hours (24 intervals). 'rising' = current price is below the 6h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Evening decisions: 'rising' = use electricity now while it's relatively cheap. 'falling' = evening/night prices will be better on average, wait if possible. Automatically adjusts to winter/summer price levels — no fixed thresholds needed." + }, + "price_outlook_8h": { + "description": "Price outlook for the next 8 hours", + "long_description": "Compares your current price with the average of all intervals in the next 8 hours (32 intervals). 'rising' = current price is below the 8h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Night planning: 'rising' = tonight/tomorrow will be more expensive on average, use power now. 'falling' = night prices will be cheaper, worth waiting. 'stable' = start when convenient. Works year-round without manual threshold adjustments." + }, + "price_outlook_12h": { + "description": "Price outlook for the next 12 hours", + "long_description": "Compares your current price with the average of all intervals in the next 12 hours (48 intervals). 'rising' = current price is below the 12h window average; 'falling' = window average is cheaper than now. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Strategic decisions: 'rising' = you're at a low point relative to the next 12h, good time for high-consumption tasks. 'falling' = significantly better prices coming on average, wait if possible. Best combined with avg sensor price cap for absolute limits." + }, + "price_trajectory_2h": { + "description": "Price direction within the next 2-hour window", + "long_description": "Compares the average of the first hour (4 intervals) with the average of the second hour (4 intervals) within the next 2-hour window. 'rising' = second half more expensive than first half — prices are climbing within the window. 'falling' = second half cheaper — prices are dropping within the window. Reveals the direction of price movement inside the outlook window. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (because window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive than first) — revealing the upcoming reversal. Power combination: 'outlook: falling + trajectory: rising' = you're AT the minimum, act now. 'outlook: falling + trajectory: falling' = prices still dropping, keep waiting." + }, + "price_trajectory_3h": { + "description": "Price direction within the next 3-hour window", + "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing over the 3h window; 'falling' = prices are dropping. Reveals the direction of price movement independent of the current price level. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, the window average is low but prices are already recovering — start now. 'outlook: stable + trajectory: rising' = quiet market with an upward drift — no urgency but slight favor to starting now." + }, + "price_trajectory_4h": { + "description": "Price direction within the next 4-hour window", + "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing over the 4h window; 'falling' = prices are dropping. Complementary to price_outlook_4h: outlook answers 'is NOW cheap vs the window average?', trajectory answers 'are prices rising or falling within the window?'. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Heat pump charging: 'rising' = first half window is cheaper, charge now before prices climb. 'falling' = second half window is cheaper, wait if you can. 'stable' = prices flat throughout 4h — charge when convenient. Combine with outlook: if both rising, very strong signal to act now." + }, + "price_trajectory_5h": { + "description": "Price direction within the next 5-hour window", + "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing over the 5h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Eco/long cycles: combine both sensors — 'outlook: rising + trajectory: rising' = clear signal to start the long program now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start before costs climb. 'outlook: falling + trajectory: falling' = wait, still getting cheaper." + }, + "price_trajectory_6h": { + "description": "Price direction within the next 6-hour window", + "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing over the 6h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the day's low — good time for high consumption. Pairs well with daily volatility sensors to decide if 6h window optimization is worthwhile." + }, + "price_trajectory_8h": { + "description": "Price direction within the next 8-hour window", + "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing over the 8h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half of night will be cheapest, delay start. Useful for EV smart charging where you only need half the night's window." + }, + "price_trajectory_12h": { + "description": "Price direction within the next 12-hour window", + "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing over the 12h window; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = prices drop in the second part of the day, afternoon/evening scheduling is better. Useful for large scale decisions: hot water systems, home battery charge scheduling." + }, + "current_price_trend": { + "description": "Current price trend direction and how long it will last", + "long_description": "Shows the current price trend (rising/falling/stable) by combining historical momentum (weighted 1h lookback) with future outlook. Recognizes ongoing trends earlier than future-only analysis. Uses ±3% momentum threshold and volatility-adaptive future comparison. Calculates dynamically until the next trend change occurs (or 3h default if no change in 24h). The state shows the current direction, attributes show when it changes and what comes next.", + "usage_tips": "Status display: Dashboard visibility of 'what's happening now until when'. Perfectly synchronized with next_price_trend_change. Example: Badge showing 'Rising for 2.5h' or 'Falling until 16:45'. Better than time-window sensors because it understands you're ALREADY in a trend, not just predicting future changes. Use for quick visual overview, not automation triggers." + }, + "next_price_trend_change": { + "description": "When the next significant price trend change will occur", + "long_description": "Scans the next 24 hours (96 intervals) to find when the price trend direction will change. Only direction changes count: rising/strongly_rising are one group, falling/strongly_falling another, stable is its own. A change from rising to strongly_rising is NOT a trend change. Uses volatility-adaptive thresholds (default: ±3%/±9%) with hysteresis (default: 3 consecutive intervals). Returns the timestamp when the change is expected.", + "usage_tips": "Event-based automation: Trigger actions WHEN trend changes, not IN X hours. Example: 'Charge EV when next trend change shows falling prices' or 'Run dishwasher before prices start rising'. More accurate than simple future comparison because it knows if you're already in a trend. Complements time-window sensors (price_trend_Xh) which answer 'WILL prices be higher in X hours?'" + }, + "next_price_trend_change_in": { + "description": "Time until the next price trend change", + "long_description": "Shows how long until the next significant price trend change occurs. The state displays in hours (e.g., 2.25 h) for dashboards. Shares the same analysis as the Next Price Trend Change timestamp sensor but presents it as a countdown duration. Updates every minute for accurate countdowns. Returns unknown when no trend change is expected in the next 24 hours.", + "usage_tips": "Dashboard countdown: Show 'Trend changes in 1.5 h' as a live countdown. For automations: 'If next_price_trend_change_in state < 0.25 (15 min), prepare for price direction change'. Pairs with Next Price Trend Change (timestamp) — use the timestamp for 'WHEN' and this sensor for 'HOW LONG'." + }, + "daily_rating": { + "description": "How today's prices compare to historical data", + "long_description": "Shows how today's prices compare to historical price data as a percentage", + "usage_tips": "A positive percentage means today's prices are above average, negative means below average" + }, + "monthly_rating": { + "description": "How this month's prices compare to historical data", + "long_description": "Shows how this month's prices compare to historical price data as a percentage", + "usage_tips": "A positive percentage means this month's prices are above average, negative means below average" + }, + "data_timestamp": { + "description": "Timestamp of the latest available price data interval", + "long_description": "Shows the timestamp of the latest available price data interval from your Tibber subscription" + }, + "today_volatility": { + "description": "How much electricity prices change throughout today", + "long_description": "Indicates whether today's prices are stable or have big swings. Low volatility means prices stay fairly consistent—timing doesn't matter much. High volatility means significant price differences throughout the day—great opportunity to shift consumption to cheaper periods. Check `price_coefficient_variation_%` for the variance percentage and `price_spread` for the absolute price span.", + "usage_tips": "Use this to decide if optimization is worth your effort. On low-volatility days, you can run devices anytime. On high-volatility days, following Best Price periods saves meaningful money." + }, + "tomorrow_volatility": { + "description": "How much electricity prices will change tomorrow", + "long_description": "Indicates whether tomorrow's prices will be stable or have big swings. Available once tomorrow's data is published (typically 13:00-14:00 CET). Low volatility means prices stay fairly consistent—timing isn't critical. High volatility means significant price differences throughout the day—good opportunity for scheduling energy-intensive activities. Check `price_coefficient_variation_%` for the variance percentage and `price_spread` for the absolute price span.", + "usage_tips": "Use for planning tomorrow's energy consumption. High volatility? Schedule flexible loads during Best Price periods. Low volatility? Run devices whenever is convenient." + }, + "next_24h_volatility": { + "description": "How much prices will change over the next 24 hours", + "long_description": "Indicates price volatility for a rolling 24-hour window from now (updates every 15 minutes). Low volatility means prices stay fairly consistent. High volatility means significant price swings offer optimization opportunities. Unlike today/tomorrow sensors, this crosses day boundaries and provides a continuous forward-looking assessment. Check `price_coefficient_variation_%` for the variance percentage and `price_spread` for the absolute price span.", + "usage_tips": "Best for real-time decisions. Use when planning battery charging strategies or other flexible loads that might span across midnight. Provides consistent 24h perspective regardless of calendar day." + }, + "today_tomorrow_volatility": { + "description": "Combined price volatility across today and tomorrow", + "long_description": "Shows overall price volatility when considering both today and tomorrow together (when available). Indicates whether there are significant price differences across the day boundary. Falls back to today-only when tomorrow's data isn't available yet. Useful for understanding multi-day optimization opportunities. Check `price_coefficient_variation_%` for the variance percentage and `price_spread` for the absolute price span.", + "usage_tips": "Use for planning tasks that span multiple days. Check if prices vary enough to make scheduling worthwhile. The individual day volatility sensors show breakdown per day if you need more detail." + }, + "data_lifecycle_status": { + "description": "Current state of price data lifecycle and caching", + "long_description": "Shows whether the integration is using cached data or fresh data from the API. Displays current lifecycle state: 'cached' (using stored data), 'fresh' (just fetched from API), 'refreshing' (currently fetching), 'searching_tomorrow' (actively polling for tomorrow's data after 13:00), 'turnover_pending' (within 15 minutes of midnight, 23:45-00:00), or 'error' (fetch failed). Includes comprehensive attributes like cache age, next API poll time, data completeness, and API call statistics.", + "usage_tips": "Use this diagnostic sensor to understand data freshness and API call patterns. Check 'cache_age' attribute to see how old the current data is. Monitor 'next_api_poll' to know when the next update is scheduled. Use 'data_completeness' to see if yesterday/today/tomorrow data is available. The 'api_calls_today' counter helps track API usage. Perfect for troubleshooting or understanding the integration's behavior." + }, + "best_price_end_time": { + "description": "When the current or next best price period ends", + "long_description": "Shows the end timestamp of the current best price period when active, or the end of the next period when no period is active. Always shows a useful time reference for planning. Returns 'Unknown' only when no periods are configured.", + "usage_tips": "Use this to display a countdown like 'Cheap period ends in 2 hours' (when active) or 'Next cheap period ends at 14:00' (when inactive). Home Assistant automatically shows relative time for timestamp sensors." + }, + "best_price_period_duration": { + "description": "Total length of current or next best price period", + "long_description": "Shows how long the best price period lasts in total. The state is displayed in hours (e.g., 1.5 h) for easy reading in the UI, while the `period_duration_minutes` attribute provides the same value in minutes (e.g., 90) for use in automations. During an active period, shows the duration of the current period. When no period is active, shows the duration of the next upcoming period. Returns 'Unknown' only when no periods are configured.", + "usage_tips": "For display: Use the state value (hours) in dashboards. For automations: Use `period_duration_minutes` attribute to check if there's enough time for long-running tasks (e.g., 'If period_duration_minutes >= 90, start washing machine')." + }, + "best_price_remaining_minutes": { + "description": "Time remaining in current best price period", + "long_description": "Shows how much time is left in the current best price period. The state displays in hours (e.g., 0.5 h) for easy reading, while the `remaining_minutes` attribute provides minutes (e.g., 30) for automation logic. Returns 0 when no period is active. Updates every minute. Check binary_sensor.best_price_period to see if a period is currently active.", + "usage_tips": "For automations: Use `remaining_minutes` attribute with numeric comparisons like 'If remaining_minutes > 0 AND remaining_minutes < 30, start washing machine now'. The value 0 makes it easy to check if a period is active (value > 0) or not (value = 0)." + }, + "best_price_progress": { + "description": "Progress through current best price period (0% when inactive)", + "long_description": "Shows progress through the current best price period as 0-100%. Returns 0% when no period is active. Updates every minute. 0% means period just started, 100% means it's about to end.", + "usage_tips": "Great for visual progress bars. Use in automations: 'If progress > 0 AND progress > 75, send notification that cheap period is ending soon'. Value 0 indicates no active period." + }, + "best_price_next_start_time": { + "description": "When the next best price period starts", + "long_description": "Shows when the next upcoming best price period starts. During an active period, this shows the start of the NEXT period after the current one. Returns 'Unknown' only when no future periods are configured.", + "usage_tips": "Always useful for planning ahead: 'Next cheap period starts in 3 hours' (whether you're in a period now or not). Combine with automations: 'When next start time is in 10 minutes, send notification to prepare washing machine'." + }, + "best_price_next_in_minutes": { + "description": "Time until next best price period starts", + "long_description": "Shows how long until the next best price period starts. The state displays in hours (e.g., 2.25 h) for dashboards, while the `next_in_minutes` attribute provides minutes (e.g., 135) for automation conditions. During an active period, shows time until the period AFTER the current one. Returns 0 during brief transition moments. Updates every minute.", + "usage_tips": "For automations: Use `next_in_minutes` attribute like 'If next_in_minutes > 0 AND next_in_minutes < 15, wait before starting dishwasher'. Value > 0 always indicates a future period is scheduled." + }, + "peak_price_end_time": { + "description": "When the current or next peak price period ends", + "long_description": "Shows the end timestamp of the current peak price period when active, or the end of the next period when no period is active. Always shows a useful time reference for planning. Returns 'Unknown' only when no periods are configured.", + "usage_tips": "Use this to display 'Expensive period ends in 1 hour' (when active) or 'Next expensive period ends at 18:00' (when inactive). Combine with automations to resume operations after peak." + }, + "peak_price_period_duration": { + "description": "Total length of current or next peak price period", + "long_description": "Shows how long the peak price period lasts in total. The state is displayed in hours (e.g., 0.75 h) for easy reading in the UI, while the `period_duration_minutes` attribute provides the same value in minutes (e.g., 45) for use in automations. During an active period, shows the duration of the current period. When no period is active, shows the duration of the next upcoming period. Returns 'Unknown' only when no periods are configured.", + "usage_tips": "For display: Use the state value (hours) in dashboards. For automations: Use `period_duration_minutes` attribute to decide whether to wait out the peak or proceed (e.g., 'If period_duration_minutes <= 60, pause operations')." + }, + "peak_price_remaining_minutes": { + "description": "Time remaining in current peak price period", + "long_description": "Shows how much time is left in the current peak price period. The state displays in hours (e.g., 1.0 h) for easy reading, while the `remaining_minutes` attribute provides minutes (e.g., 60) for automation logic. Returns 0 when no period is active. Updates every minute. Check binary_sensor.peak_price_period to see if a period is currently active.", + "usage_tips": "For automations: Use `remaining_minutes` attribute like 'If remaining_minutes > 60, cancel deferred charging session'. Value 0 makes it easy to distinguish active (value > 0) from inactive (value = 0) periods." + }, + "peak_price_progress": { + "description": "Progress through current peak price period (0% when inactive)", + "long_description": "Shows progress through the current peak price period as 0-100%. Returns 0% when no period is active. Updates every minute.", + "usage_tips": "Visual progress indicator in dashboards. Automation: 'If progress > 0 AND progress > 90, prepare to resume normal heating schedule'. Value 0 indicates no active period." + }, + "peak_price_next_start_time": { + "description": "When the next peak price period starts", + "long_description": "Shows when the next upcoming peak price period starts. During an active period, this shows the start of the NEXT period after the current one. Returns 'Unknown' only when no future periods are configured.", + "usage_tips": "Always useful for planning: 'Next expensive period starts in 2 hours'. Automation: 'When next start time is in 30 minutes, reduce heating temperature preemptively'." + }, + "peak_price_next_in_minutes": { + "description": "Time until next peak price period starts", + "long_description": "Shows how long until the next peak price period starts. The state displays in hours (e.g., 0.5 h) for dashboards, while the `next_in_minutes` attribute provides minutes (e.g., 30) for automation conditions. During an active period, shows time until the period AFTER the current one. Returns 0 during brief transition moments. Updates every minute.", + "usage_tips": "For automations: Use `next_in_minutes` attribute like 'If next_in_minutes > 0 AND next_in_minutes < 10, complete current charging cycle now before prices increase'." + }, + "home_type": { + "description": "Type of home (apartment, house, etc.)", + "long_description": "Shows the type of dwelling as configured in your Tibber account. This metadata can be useful for categorizing energy consumption patterns.", + "usage_tips": "Use this for organizing your smart home system or for analytics purposes." + }, + "home_size": { + "description": "Size of home in square meters", + "long_description": "Shows the size of your home in square meters as configured in your Tibber account. Can be used to calculate energy consumption per square meter.", + "usage_tips": "Use this in energy efficiency calculations: 'My home uses X kWh per square meter per year'." + }, + "main_fuse_size": { + "description": "Main electrical fuse size in amperes", + "long_description": "Shows the capacity of your main electrical fuse in amperes. This determines the maximum electrical load your home can handle simultaneously.", + "usage_tips": "Use this to prevent overloading: 'If total current consumption approaches fuse size, postpone starting additional appliances'." + }, + "number_of_residents": { + "description": "Number of people living in the home", + "long_description": "Shows the number of residents as configured in your Tibber account. Useful for per-capita energy consumption calculations.", + "usage_tips": "Use this for household energy analytics: 'Energy consumption per person per day'." + }, + "primary_heating_source": { + "description": "Primary heating system type", + "long_description": "Shows the type of heating system used in your home as configured in your Tibber account. This can be a heat pump, electric heating, gas, oil, or other heating sources.", + "usage_tips": "Use this to categorize heating-related automations or for energy consumption analysis by heating type." + }, + "grid_company": { + "description": "Name of your electricity grid operator", + "long_description": "Shows the name of the company operating the electrical grid in your area. This is the distribution system operator (DSO) responsible for delivering electricity to your home.", + "usage_tips": "Useful for administrative purposes and troubleshooting grid-related issues." + }, + "grid_area_code": { + "description": "Grid area identifier code", + "long_description": "Shows the code identifying your electrical grid area. This code is used by the grid operator for routing and billing purposes.", + "usage_tips": "Use this for administrative reference or when contacting your grid operator." + }, + "price_area_code": { + "description": "Electricity price area code", + "long_description": "Shows the code for your electricity price area (e.g., NO1, NO2, SE3, DK1). Different areas have different wholesale electricity prices based on regional supply and demand.", + "usage_tips": "Use this to understand which price region you're in. Useful when comparing prices with others or analyzing regional price patterns." + }, + "consumption_ean": { + "description": "EAN code for electricity consumption metering", + "long_description": "Shows the European Article Number (EAN) code that uniquely identifies your electricity consumption meter. This 18-digit code is used for billing and administrative purposes.", + "usage_tips": "Use this when communicating with your electricity provider or for administrative documentation." + }, + "production_ean": { + "description": "EAN code for electricity production metering", + "long_description": "Shows the European Article Number (EAN) code for your electricity production meter (if you have solar panels or other generation). This code tracks electricity you feed back into the grid.", + "usage_tips": "Relevant if you have solar panels or other electricity generation. Use for administrative purposes and when claiming feed-in compensation." + }, + "energy_tax_type": { + "description": "Type of energy tax applied", + "long_description": "Shows the energy tax category applied to your electricity consumption. Tax rates vary by country and sometimes by consumer type (residential, commercial, etc.).", + "usage_tips": "Use this for understanding your electricity bill breakdown and total cost calculations." + }, + "vat_type": { + "description": "VAT (Value Added Tax) category", + "long_description": "Shows the VAT category applied to your electricity consumption. VAT rates vary by country and may differ for electricity compared to other goods and services.", + "usage_tips": "Use this for understanding your electricity bill and calculating total costs including taxes." + }, + "estimated_annual_consumption": { + "description": "Estimated yearly electricity consumption in kWh", + "long_description": "Shows your estimated annual electricity consumption in kilowatt-hours as calculated or configured in your Tibber account. This estimate is used for comparing actual consumption to expected values.", + "usage_tips": "Use this to track if your actual consumption is above or below expectations. Compare monthly consumption to 1/12 of this value to identify unusual patterns." + }, + "subscription_status": { + "description": "Status of your Tibber subscription", + "long_description": "Shows whether your Tibber subscription is currently running, has ended, or is pending activation. A status of 'running' means you're actively receiving electricity through Tibber.", + "usage_tips": "Use this to monitor your subscription status. Set up alerts if status changes from 'running' to ensure uninterrupted service." + }, + "day_pattern_yesterday": { + "description": "Detected price shape of yesterday's electricity prices", + "long_description": "Classifies yesterday into a price shape: Valley (cheap in the middle), Peak (expensive in the middle), Double Valley (two cheap periods), Double Peak (two expensive periods), Flat (little variation), Rising, Falling, or Mixed. The confidence and CV attributes indicate how reliably the pattern was detected.", + "usage_tips": "Use yesterday's pattern to refine automations: a Valley day often repeats the next day, suggesting you should pre-schedule cheap-hour loads. Pair with the confidence attribute to filter unreliable detections." + }, + "day_pattern_today": { + "description": "Detected price shape of today's electricity prices", + "long_description": "Classifies today into a price shape: Valley (cheap in the middle of the day), Peak (expensive in the middle), Double Valley (W-shape, two cheap windows), Double Peak (M-shape, two expensive peaks), Flat (prices barely move), Rising (prices climb through the day), Falling (prices drop through the day), or Mixed. Attributes include confidence (0–1), coefficient of variation, knee-point times, and intra-day segments.", + "usage_tips": "Use today's pattern to decide when to shift loads. A Valley day means cheap prices around midday — ideal for running the dishwasher, washing machine, or charging the EV. A Peak day means expensive midday — run appliances early morning or late evening. Use valley_start and valley_end attributes to schedule automations precisely." + }, + "day_pattern_tomorrow": { + "description": "Detected price shape of tomorrow's electricity prices", + "long_description": "Classifies tomorrow (once data is available, typically after 13:00) into a price shape using the same algorithm as today. The valley_start / valley_end or peak_start / peak_end attributes give knee-point times for the primary extremum so you can pre-schedule loads the evening before.", + "usage_tips": "Set up evening automations that read tomorrow's pattern and pre-configure heat pump schedules, car charging timers, or water heater settings for the following day. Pair with the tomorrow_data_available binary sensor to trigger the automation only when data is ready." + }, + "chart_data_export": { + "description": "Data export for dashboard integrations", + "long_description": "This binary sensor calls the get_chartdata service with your configured YAML parameters and exposes the result as entity attributes. The state is 'on' when the service call succeeds and data is available, 'off' when the call fails or no configuration is set. Perfect for dashboard integrations like ApexCharts that need to read price data from entity attributes.", + "usage_tips": "Configure the YAML parameters in the integration options to match your get_chartdata service call. The sensor will automatically refresh when price data updates (typically after midnight and when tomorrow's data arrives). Access the service response data directly from the entity's attributes - the structure matches exactly what get_chartdata returns." + }, + "chart_metadata": { + "description": "Lightweight metadata for chart configuration", + "long_description": "Provides essential chart configuration values as sensor attributes. Useful for any chart card that needs Y-axis bounds. The sensor calls get_chartdata with metadata-only mode (no data processing) and extracts: yaxis_min, yaxis_max (suggested Y-axis range for optimal scaling). The state reflects the service call result: 'ready' when successful, 'error' on failure, 'pending' during initialization.", + "usage_tips": "Configure via configuration.yaml under tibber_prices.chart_metadata_config (optional: day, subunit_currency, resolution). The sensor automatically refreshes when price data updates. Access metadata from attributes: yaxis_min, yaxis_max. Use with config-template-card or any tool that reads entity attributes - perfect for dynamic chart configuration without manual calculations." + }, + "current_interval_price_rank_today": { + "description": "Where the current interval's price sits in today's ranking — its percentile rank (0% = cheapest moment)", + "long_description": "Shows how cheap or expensive the current quarter-hour interval's price is compared to all of today's 96 quarter-hour slots. 0% means this is the cheapest moment of the day — every other slot costs more. 50% means half of today's slots are cheaper. ~99% means it's the most expensive slot of the day. Formula (percentile rank): how many slots are cheaper ÷ total slots × 100. Attributes: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Ideal for automations: 'If current_interval_price_rank_today < 25, start dishwasher' (cheapest quarter of the day). Or 'If current_interval_price_rank_today > 75, pause heat pump' (most expensive quarter). A value of 0 guarantees you're at the cheapest slot of the day." + }, + "current_interval_price_rank_tomorrow": { + "description": "Where the current interval's price sits in tomorrow's percentile ranking (0% = cheapest of tomorrow)", + "long_description": "Shows how the current interval's price compares to all of tomorrow's 96 quarter-hour slots — its percentile rank within tomorrow's distribution. Useful for deciding whether to wait until tomorrow. 0% means the current price is cheaper than every slot tomorrow. Returns 'Unknown' until tomorrow's data arrives (typically after 13:00). Attributes: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Use to decide whether to wait: 'If current_interval_price_rank_tomorrow < 10, tomorrow has even cheaper slots — postpone the task'. Best combined with a binary sensor to confirm the task can actually run tomorrow." + }, + "current_interval_price_rank_today_tomorrow": { + "description": "Current interval's percentile rank across today and tomorrow combined (0% = cheapest of the two-day window)", + "long_description": "Shows how cheap or expensive the current interval's price is compared to all slots across today and tomorrow together (up to 192 quarter-hour slots when both days are available) — the percentile rank within the two-day distribution. Gives the broadest view for flexible tasks. Falls back to today-only when tomorrow's data isn't available yet. 0% = cheapest of the combined two-day window. Attributes: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "The broadest signal for 'is now a good time?'. Use 'If current_interval_price_rank_today_tomorrow < 20, run energy-intensive task now'. Especially valuable when tasks can wait a full day — a value near 0 across two days is a genuinely exceptional price." + }, + "next_interval_price_rank_today": { + "description": "Where the next interval's price sits in today's ranking (0% = cheapest moment of today)", + "long_description": "Shows the percentile rank of the upcoming quarter-hour interval's price within today's 96 slots. Lets you see at a glance how the next interval compares to the rest of the day before it starts. Attributes: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Use to prepare for the next interval: 'If next_interval_price_rank_today < 15, start pre-heating now so the device runs during the next cheap slot'." + }, + "next_interval_price_rank_today_tomorrow": { + "description": "Next interval's percentile rank across today and tomorrow combined (0% = cheapest of the two-day window)", + "long_description": "Shows the percentile rank of the upcoming quarter-hour interval's price within the combined today+tomorrow pool (up to 192 slots). Falls back to today-only when tomorrow's data isn't available. Attributes: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Broadest look-ahead: 'If next_interval_price_rank_today_tomorrow < 10, the next interval is among the cheapest slots of the two-day window — optimal time to start long tasks'." + }, + "previous_interval_price_rank_today": { + "description": "Where the previous interval's price sat in today's ranking (0% = cheapest moment of today)", + "long_description": "Shows the percentile rank of the just-ended quarter-hour interval's price within today's 96 slots. Useful for logging how cheap/expensive the last interval was. Attributes: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Useful for retrospective automations or logging: 'Record the cost tier of the last interval for energy reports'." + }, + "previous_interval_price_rank_today_tomorrow": { + "description": "Previous interval's percentile rank across today and tomorrow combined (0% = cheapest of the two-day window)", + "long_description": "Shows the percentile rank of the just-ended quarter-hour interval's price within the combined today+tomorrow pool (up to 192 slots). Falls back to today-only when tomorrow's data isn't available. Attributes: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Useful for retrospective comparisons across a two-day window." + }, + "current_hour_price_rank_today": { + "description": "Percentile rank of the current rolling hour's average price within today's distribution (0% = cheapest hour)", + "long_description": "Shows where the 5-interval rolling average (2 intervals before + current + 2 after, ~1 hour) sits in today's price ranking. Smooths out short spikes and gives a broader view of whether this hour is cheap or expensive relative to the day. Attributes: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "For tasks that take about an hour: 'If current_hour_price_rank_today < 20, this is a cheap hour — run the washing machine'." + }, + "current_hour_price_rank_today_tomorrow": { + "description": "Current rolling hour's average price rank across today and tomorrow combined (0% = cheapest hour of the two-day window)", + "long_description": "Shows where the 5-interval rolling average (±2 intervals, ~1 hour) sits in the combined today+tomorrow price ranking (up to 192 slots). Falls back to today-only when tomorrow's data isn't available. Attributes: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Broadest hourly signal: 'If current_hour_price_rank_today_tomorrow < 15, this is one of the cheapest hours across two days — ideal for long flexible tasks'." + }, + "next_hour_price_rank_today": { + "description": "Percentile rank of the next rolling hour's average price within today's distribution (0% = cheapest hour of today)", + "long_description": "Shows where the 5-interval rolling average centered on the next interval sits in today's price ranking. Lets you plan one hour ahead — is the upcoming hour cheap or expensive relative to today? Attributes: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Plan one hour ahead: 'If next_hour_price_rank_today < 20, the upcoming hour is cheap — start a task now to run through it'." + }, + "next_hour_price_rank_today_tomorrow": { + "description": "Next rolling hour's average price rank across today and tomorrow combined (0% = cheapest hour of the two-day window)", + "long_description": "Shows where the 5-interval rolling average centered on the next interval sits in the combined today+tomorrow price ranking (up to 192 slots). Falls back to today-only when tomorrow's data isn't available. Attributes: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Broadest hourly look-ahead: 'If next_hour_price_rank_today_tomorrow < 10, the upcoming hour is among the cheapest of the two-day window'." + } + }, + "binary_sensor": { + "tomorrow_data_available": { + "description": "Whether price data for tomorrow is available", + "long_description": "Indicates if price data for the following day has been received from Tibber", + "usage_tips": "Use this to check if tomorrow's prices are available for planning" + }, + "peak_price_period": { + "description": "Whether the current interval is among the most expensive of the day", + "long_description": "Turns on when the current price is in the top 20% of today's prices", + "usage_tips": "Use this to avoid running high-consumption appliances during expensive intervals" + }, + "best_price_period": { + "description": "Whether the current interval is among the cheapest of the day", + "long_description": "Turns on when the current price is in the bottom 20% of today's prices", + "usage_tips": "Use this to run high-consumption appliances during the cheapest intervals" + }, + "connection": { + "description": "Whether the connection to the Tibber API is working", + "long_description": "Indicates if the integration can successfully connect to the Tibber API", + "usage_tips": "Use this to monitor the connection status to the Tibber API" + }, + "has_ventilation_system": { + "description": "Whether your home has a ventilation system", + "long_description": "Indicates if a ventilation system is registered for your home in the Tibber account. Ventilation systems can be significant electricity consumers that may benefit from smart scheduling.", + "usage_tips": "Use this to enable ventilation-specific automations or energy monitoring. If true, consider scheduling ventilation during low-price periods." + }, + "realtime_consumption_enabled": { + "description": "Whether realtime consumption monitoring is active", + "long_description": "Indicates if realtime electricity consumption monitoring is enabled and active for your Tibber home. This requires compatible metering hardware (e.g., Tibber Pulse) and an active subscription.", + "usage_tips": "Use this to verify that realtime consumption data is available. Enable notifications if this changes to 'off' unexpectedly, indicating potential hardware or connectivity issues." + } + }, + "number": { + "best_price_flex_override": { + "description": "Maximum above the daily minimum price that intervals can be and still qualify as 'best price'. Recommended: 15-20 with relaxation enabled (default), or 25-35 without relaxation. Maximum: 50 (hard cap for reliable period detection).", + "long_description": "When this entity is enabled, its value overrides the 'Flexibility' setting from the options flow for best price period calculations.", + "usage_tips": "Enable this entity to dynamically adjust best price detection via automations. Higher values create longer periods, lower values are stricter." + }, + "best_price_min_distance_override": { + "description": "Ensures periods are significantly cheaper than the daily average, not just marginally below it. This filters out noise and prevents marking slightly-below-average periods as 'best price' on days with flat prices. Higher values = stricter filtering (only truly cheap periods qualify).", + "long_description": "When this entity is enabled, its value overrides the 'Minimum Distance' setting from the options flow for best price period calculations.", + "usage_tips": "Use in automations to adjust how much better than average the best price periods must be. Higher values require prices to be further below average." + }, + "best_price_min_period_length_override": { + "description": "Minimum duration for a period to be considered as 'best price'. Longer periods are more practical for running appliances like dishwashers or heat pumps. Best price periods require 60 minutes minimum (vs. 30 minutes for peak price warnings) because they should provide meaningful time windows for consumption planning.", + "long_description": "When this entity is enabled, its value overrides the 'Minimum Period Length' setting from the options flow for best price period calculations.", + "usage_tips": "Increase when your appliances need longer uninterrupted run times (e.g., washing machines, dishwashers)." + }, + "best_price_min_periods_override": { + "description": "Minimum number of best price periods to aim for per day. Filters will be relaxed step-by-step to try achieving this count. Only active when 'Achieve Minimum Count' is enabled.", + "long_description": "When this entity is enabled, its value overrides the 'Minimum Periods' setting from the options flow for best price period calculations.", + "usage_tips": "Adjust dynamically based on how many times per day you need cheap electricity windows." + }, + "best_price_relaxation_attempts_override": { + "description": "How many flex levels (attempts) to try before giving up. Each attempt runs all filter combinations at the new flex level. More attempts increase the chance of finding additional periods at the cost of longer processing time.", + "long_description": "When this entity is enabled, its value overrides the 'Relaxation Attempts' setting from the options flow for best price period calculations.", + "usage_tips": "Increase when periods are hard to find. Decrease for stricter price filtering." + }, + "best_price_gap_count_override": { + "description": "Maximum number of consecutive intervals allowed that deviate by exactly one level step from the required level. This prevents periods from being split by occasional level deviations. Gap tolerance requires periods ≥90 minutes (6 intervals) to detect outliers effectively.", + "long_description": "When this entity is enabled, its value overrides the 'Gap Tolerance' setting from the options flow for best price period calculations.", + "usage_tips": "Increase to allow longer periods with occasional price spikes. Keep low for stricter continuous cheap periods." + }, + "peak_price_flex_override": { + "description": "Maximum below the daily maximum price that intervals can be and still qualify as 'peak price'. Recommended: -15 to -20 with relaxation enabled (default), or -25 to -35 without relaxation. Maximum: -50 (hard cap for reliable period detection). Note: Negative values indicate distance below maximum.", + "long_description": "When this entity is enabled, its value overrides the 'Flexibility' setting from the options flow for peak price period calculations.", + "usage_tips": "Enable this entity to dynamically adjust peak price detection via automations. Higher values create longer peak periods." + }, + "peak_price_min_distance_override": { + "description": "Ensures periods are significantly more expensive than the daily average, not just marginally above it. This filters out noise and prevents marking slightly-above-average periods as 'peak price' on days with flat prices. Higher values = stricter filtering (only truly expensive periods qualify).", + "long_description": "When this entity is enabled, its value overrides the 'Minimum Distance' setting from the options flow for peak price period calculations.", + "usage_tips": "Use in automations to adjust how much higher than average the peak price periods must be." + }, + "peak_price_min_period_length_override": { + "description": "Minimum duration for a period to be considered as 'peak price'. Peak price warnings are allowed for shorter periods (30 minutes minimum vs. 60 minutes for best price) because brief expensive spikes are worth alerting about, even if they're too short for consumption planning.", + "long_description": "When this entity is enabled, its value overrides the 'Minimum Period Length' setting from the options flow for peak price period calculations.", + "usage_tips": "Increase to filter out brief price spikes, focusing on sustained expensive periods." + }, + "peak_price_min_periods_override": { + "description": "Minimum number of peak price periods to aim for per day. Filters will be relaxed step-by-step to try achieving this count. Only active when 'Achieve Minimum Count' is enabled.", + "long_description": "When this entity is enabled, its value overrides the 'Minimum Periods' setting from the options flow for peak price period calculations.", + "usage_tips": "Adjust based on how many peak periods you want to identify and avoid." + }, + "peak_price_relaxation_attempts_override": { + "description": "How many flex levels (attempts) to try before giving up. Each attempt runs all filter combinations at the new flex level. More attempts increase the chance of finding additional peak periods at the cost of longer processing time.", + "long_description": "When this entity is enabled, its value overrides the 'Relaxation Attempts' setting from the options flow for peak price period calculations.", + "usage_tips": "Increase when peak periods are hard to detect. Decrease for stricter peak price filtering." + }, + "peak_price_gap_count_override": { + "description": "Maximum number of consecutive intervals allowed that deviate by exactly one level step from the required level. This prevents periods from being split by occasional level deviations. Gap tolerance requires periods ≥90 minutes (6 intervals) to detect outliers effectively.", + "long_description": "When this entity is enabled, its value overrides the 'Gap Tolerance' setting from the options flow for peak price period calculations.", + "usage_tips": "Increase to identify sustained expensive periods with brief dips. Keep low for stricter continuous peak detection." + } + }, + "switch": { + "best_price_enable_relaxation_override": { + "description": "When enabled, filters will be gradually relaxed if not enough periods are found. This attempts to reach the desired minimum number of periods, which may include less optimal time windows as best-price periods.", + "long_description": "When this entity is enabled, its value overrides the 'Achieve Minimum Count' setting from the options flow for best price period calculations.", + "usage_tips": "Turn OFF to disable relaxation and use strict filtering only. Turn ON to allow the algorithm to relax criteria to find more periods." + }, + "peak_price_enable_relaxation_override": { + "description": "When enabled, filters will be gradually relaxed if not enough periods are found. This attempts to reach the desired minimum number of periods to ensure you're warned about expensive periods even on days with unusual price patterns.", + "long_description": "When this entity is enabled, its value overrides the 'Achieve Minimum Count' setting from the options flow for peak price period calculations.", + "usage_tips": "Turn OFF to disable relaxation and use strict filtering only. Turn ON to allow the algorithm to relax criteria to find more peak periods." + } + }, + "home_types": { + "APARTMENT": "Apartment", + "ROWHOUSE": "Rowhouse", + "HOUSE": "House", + "COTTAGE": "Cottage" + }, + "time_units": { + "day": "{count} day", + "days": "{count} days", + "hour": "{count} hour", + "hours": "{count} hours", + "minute": "{count} minute", + "minutes": "{count} minutes", + "ago": "{parts} ago", + "now": "now" + }, + "attribution": "Data provided by Tibber" } diff --git a/custom_components/tibber_prices/custom_translations/nb.json b/custom_components/tibber_prices/custom_translations/nb.json index 9eda1e2..3e1b726 100644 --- a/custom_components/tibber_prices/custom_translations/nb.json +++ b/custom_components/tibber_prices/custom_translations/nb.json @@ -1,653 +1,693 @@ { - "apexcharts": { - "title_rating_level": "Prisfaser dagsfremdrift", - "title_level": "Prisnivå", - "hourly_suffix": "(Ø per time)", - "best_price_period_name": "Beste prisperiode", - "peak_price_period_name": "Toppprisperiode", - "notification": { - "metadata_sensor_unavailable": { - "title": "Tibber Prices: ApexCharts YAML generert med begrenset funksjonalitet", - "message": "Du har nettopp generert en ApexCharts-kort-konfigurasjon via Utviklerverktøy. Diagram-metadata-sensoren er deaktivert, så den genererte YAML-en vil bare vise **grunnleggende funksjonalitet** (auto-skalering, fast gradient på 50%).\n\n**For full funksjonalitet** (optimert skalering, dynamiske gradientfarger):\n1. [Åpne Tibber Prices-integrasjonen](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Aktiver 'Chart Metadata'-sensoren\n3. **Generer YAML-en på nytt** via Utviklerverktøy\n4. **Erstatt den gamle YAML-en** i dashbordet ditt med den nye versjonen\n\n⚠️ Det er ikke nok å bare aktivere sensoren - du må regenerere og erstatte YAML-koden!" - }, - "missing_cards": { - "title": "Tibber Prices: ApexCharts YAML kan ikke brukes", - "message": "Du har nettopp generert en ApexCharts-kort-konfigurasjon via Utviklerverktøy, men den genererte YAML-en **vil ikke fungere** fordi nødvendige tilpassede kort mangler.\n\n**Manglende kort:**\n{cards}\n\n**For å bruke den genererte YAML-en:**\n1. Klikk på lenkene ovenfor for å installere de manglende kortene fra HACS\n2. Start Home Assistant på nytt (noen ganger nødvendig)\n3. **Generer YAML-en på nytt** via Utviklerverktøy\n4. Legg til YAML-en i dashbordet ditt\n\n⚠️ Den nåværende YAML-koden vil ikke fungere før alle kort er installert!" - } - } + "apexcharts": { + "title_rating_level": "Prisfaser dagsfremdrift", + "title_level": "Prisnivå", + "hourly_suffix": "(Ø per time)", + "best_price_period_name": "Beste prisperiode", + "peak_price_period_name": "Toppprisperiode", + "notification": { + "metadata_sensor_unavailable": { + "title": "Tibber Prices: ApexCharts YAML generert med begrenset funksjonalitet", + "message": "Du har nettopp generert en ApexCharts-kort-konfigurasjon via Utviklerverktøy. Diagram-metadata-sensoren er deaktivert, så den genererte YAML-en vil bare vise **grunnleggende funksjonalitet** (auto-skalering, fast gradient på 50%).\n\n**For full funksjonalitet** (optimert skalering, dynamiske gradientfarger):\n1. [Åpne Tibber Prices-integrasjonen](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Aktiver 'Chart Metadata'-sensoren\n3. **Generer YAML-en på nytt** via Utviklerverktøy\n4. **Erstatt den gamle YAML-en** i dashbordet ditt med den nye versjonen\n\n⚠️ Det er ikke nok å bare aktivere sensoren - du må regenerere og erstatte YAML-koden!" + }, + "missing_cards": { + "title": "Tibber Prices: ApexCharts YAML kan ikke brukes", + "message": "Du har nettopp generert en ApexCharts-kort-konfigurasjon via Utviklerverktøy, men den genererte YAML-en **vil ikke fungere** fordi nødvendige tilpassede kort mangler.\n\n**Manglende kort:**\n{cards}\n\n**For å bruke den genererte YAML-en:**\n1. Klikk på lenkene ovenfor for å installere de manglende kortene fra HACS\n2. Start Home Assistant på nytt (noen ganger nødvendig)\n3. **Generer YAML-en på nytt** via Utviklerverktøy\n4. Legg til YAML-en i dashbordet ditt\n\n⚠️ Den nåværende YAML-koden vil ikke fungere før alle kort er installert!" + } + } + }, + "sensor": { + "current_interval_price": { + "description": "Den nåværende elektrisitetsprisen per kWh", + "long_description": "Viser nåværende pris per kWh fra ditt Tibber-abonnement", + "usage_tips": "Bruk dette til å spore priser eller lage automatiseringer som kjører når strøm er billig" }, - "sensor": { - "current_interval_price": { - "description": "Den nåværende elektrisitetsprisen per kWh", - "long_description": "Viser nåværende pris per kWh fra ditt Tibber-abonnement", - "usage_tips": "Bruk dette til å spore priser eller lage automatiseringer som kjører når strøm er billig" - }, - "current_interval_price_base": { - "description": "Nåværende elektrisitetspris i hovedvaluta (EUR/kWh, NOK/kWh, osv.) for Energi-dashboard", - "long_description": "Viser nåværende pris per kWh i hovedvalutaenheter (f.eks. EUR/kWh i stedet for ct/kWh, NOK/kWh i stedet for øre/kWh). Denne sensoren er spesielt designet for bruk med Home Assistants Energi-dashboard, som krever priser i standard valutaenheter.", - "usage_tips": "Bruk denne sensoren når du konfigurerer Energi-dashboardet under Innstillinger → Dashbord → Energi. Velg denne sensoren som 'Entitet med nåværende pris' for automatisk å beregne energikostnadene. Energi-dashboardet multipliserer energiforbruket ditt (kWh) med denne prisen for å vise totale kostnader." - }, - "next_interval_price": { - "description": "Neste intervalls elektrisitetspris per kWh", - "long_description": "Viser prisen for det neste 15-minutters intervallet fra ditt Tibber-abonnement", - "usage_tips": "Bruk dette til å forberede deg på kommende prisendringer eller planlegge enheter til å kjøre i billigere intervaller" - }, - "previous_interval_price": { - "description": "Forrige intervalls elektrisitetspris per kWh", - "long_description": "Viser prisen for det forrige 15-minutters intervallet fra ditt Tibber-abonnement", - "usage_tips": "Bruk dette til å gjennomgå tidligere prisendringer eller spore prishistorikk" - }, - "current_hour_average_price": { - "description": "Rullende 5-intervalls gjennomsnittspris per kWh", - "long_description": "Viser gjennomsnittsprisen per kWh beregnet fra 5 intervaller: 2 foregående, nåværende og 2 neste intervaller (omtrent 75 minutter totalt). Dette gir en utjevnet 'timepris' som tilpasser seg etter hvert som tiden går, i stedet for å være fiksert til klokkeslett.", - "usage_tips": "Bruk dette for en mer stabil prisindikator som jevner ut kortsiktige svingninger mens den fortsatt er responsiv til prisendringer. Bedre enn faste timepriser for å ta forbruksbeslutninger." - }, - "next_hour_average_price": { - "description": "Rullende 5-intervalls gjennomsnittspris for neste time per kWh", - "long_description": "Viser gjennomsnittsprisen per kWh beregnet fra 5 intervaller sentrert en time frem: omtrent intervallene +2 til +6 fra nå (dekker minutter +30 til +105). Dette gir en fremtidsrettet utjevnet 'timepris' for å planlegge forbruk.", - "usage_tips": "Bruk dette til å forutse prisendringer i neste time. Nyttig for å planlegge høyforbruksaktiviteter som lading av elbiler, kjøring av oppvaskmaskiner eller varmesystemer." - }, - "lowest_price_today": { - "description": "Den laveste elektrisitetsprisen i dag per kWh", - "long_description": "Viser den laveste prisen per kWh for gjeldende dag fra ditt Tibber-abonnement", - "usage_tips": "Bruk dette til å sammenligne nåværende priser med den billigste tiden på dagen" - }, - "highest_price_today": { - "description": "Den høyeste elektrisitetsprisen i dag per kWh", - "long_description": "Viser den høyeste prisen per kWh for gjeldende dag fra ditt Tibber-abonnement", - "usage_tips": "Bruk dette til å unngå å kjøre apparater i toppristider" - }, - "average_price_today": { - "description": "Typisk elektrisitetspris i dag per kWh (konfigurerbart visningsformat)", - "long_description": "Viser prisen per kWh for gjeldende dag fra ditt Tibber-abonnement. **Som standard viser statusen medianen** (motstandsdyktig mot ekstreme prisspiss, viser typisk prisnivå). Du kan endre dette i integrasjonsinnstillingene for å vise det aritmetiske gjennomsnittet i stedet. Den alternative verdien er tilgjengelig som attributt.", - "usage_tips": "Bruk dette som baseline for å sammenligne nåværende priser. For beregninger bruk: {{ state_attr('sensor.average_price_today', 'price_mean') }}" - }, - "lowest_price_tomorrow": { - "description": "Den laveste elektrisitetsprisen i morgen per kWh", - "long_description": "Viser den laveste prisen per kWh for morgendagen fra ditt Tibber-abonnement. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", - "usage_tips": "Bruk dette til å planlegge energikrevende aktiviteter for morgendagens billigste tid. Perfekt for forhåndsplanlegging av oppvarming, elbillading eller apparater." - }, - "highest_price_tomorrow": { - "description": "Den høyeste elektrisitetsprisen i morgen per kWh", - "long_description": "Viser den høyeste prisen per kWh for morgendagen fra ditt Tibber-abonnement. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", - "usage_tips": "Bruk dette til å unngå å kjøre apparater i morgendagens toppristider. Nyttig for å planlegge rundt dyre perioder." - }, - "average_price_tomorrow": { - "description": "Typisk elektrisitetspris i morgen per kWh (konfigurerbart visningsformat)", - "long_description": "Viser prisen per kWh for morgendagen fra ditt Tibber-abonnement. **Som standard viser statusen medianen** (motstandsdyktig mot ekstreme prisspiss). Du kan endre dette i integrasjonsinnstillingene for å vise det aritmetiske gjennomsnittet i stedet. Den alternative verdien er tilgjengelig som attributt. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", - "usage_tips": "Bruk dette som baseline for å sammenligne morgendagens priser og planlegge forbruk. Sammenlign med dagens median for å se om morgendagen vil være mer eller mindre dyr totalt sett." - }, - "yesterday_price_level": { - "description": "Aggregert prisnivå for i går", - "long_description": "Viser det aggregerte prisnivået for alle intervaller i går. Bruker samme logikk som timesensorene for å bestemme det samlede prisnivået for hele dagen.", - "usage_tips": "Bruk dette for å forstå gårsdagens generelle prissituasjon. Sammenlign med i dag for å se daglige trender." - }, - "today_price_level": { - "description": "Aggregert prisnivå for i dag", - "long_description": "Viser det aggregerte prisnivået for alle intervaller i dag. Bruker samme logikk som timesensorene for å bestemme det samlede prisnivået for hele dagen.", - "usage_tips": "Bruk dette for å forstå dagens generelle prissituasjon på et øyeblikk. Nyttig for raske vurderinger av om i dag generelt er billig eller dyrt." - }, - "tomorrow_price_level": { - "description": "Aggregert prisnivå for i morgen", - "long_description": "Viser det aggregerte prisnivået for alle intervaller i morgen. Bruker samme logikk som timesensorene for å bestemme det samlede prisnivået for hele dagen. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", - "usage_tips": "Bruk dette for å forstå morgendagens generelle prissituasjon. Sammenlign med i dag for å se om morgendagen vil være mer eller mindre gunstig for energiforbruk." - }, - "yesterday_price_rating": { - "description": "Aggregert prisvurdering for i går", - "long_description": "Viser den aggregerte prisvurderingen (lav/normal/høy) for alle intervaller i går, basert på dine konfigurerte terskelverdier. Bruker samme logikk som timesensorene for å bestemme den samlede vurderingen for hele dagen.", - "usage_tips": "Bruk dette for å forstå gårsdagens prissituasjon i forhold til dine personlige terskelverdier. Sammenlign med i dag for trendanalyse." - }, - "today_price_rating": { - "description": "Aggregert prisvurdering for i dag", - "long_description": "Viser den aggregerte prisvurderingen (lav/normal/høy) for alle intervaller i dag, basert på dine konfigurerte terskelverdier. Bruker samme logikk som timesensorene for å bestemme den samlede vurderingen for hele dagen.", - "usage_tips": "Bruk dette for raskt å vurdere dagens prissituasjon i forhold til dine personlige terskelverdier. Hjelper med å ta forbruksbeslutninger for gjeldende dag." - }, - "tomorrow_price_rating": { - "description": "Aggregert prisvurdering for i morgen", - "long_description": "Viser den aggregerte prisvurderingen (lav/normal/høy) for alle intervaller i morgen, basert på dine konfigurerte terskelverdier. Bruker samme logikk som timesensorene for å bestemme den samlede vurderingen for hele dagen. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", - "usage_tips": "Bruk dette for å planlegge morgendagens energiforbruk basert på dine personlige pristerskelverdier. Sammenlign med i dag for å bestemme om du skal flytte forbruk til i morgen eller bruke energi i dag." - }, - "trailing_price_average": { - "description": "Typisk elektrisitetspris for de siste 24 timene per kWh (konfigurerbart visningsformat)", - "long_description": "Viser prisen per kWh beregnet fra de siste 24 timene. **Som standard viser statusen medianen** (motstandsdyktig mot ekstreme prisspiss, viser typisk prisnivå). Du kan endre dette i integrasjonsinnstillingene for å vise det aritmetiske gjennomsnittet i stedet. Den alternative verdien er tilgjengelig som attributt. Oppdateres hvert 15. minutt.", - "usage_tips": "Bruk statusverdien for å se det typiske nåværende prisnivået. For kostnadsberegninger bruk: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" - }, - "leading_price_average": { - "description": "Typisk elektrisitetspris for de neste 24 timene per kWh (konfigurerbart visningsformat)", - "long_description": "Viser prisen per kWh beregnet fra de neste 24 timene. **Som standard viser statusen medianen** (motstandsdyktig mot ekstreme prisspiss, viser forventet prisnivå). Du kan endre dette i integrasjonsinnstillingene for å vise det aritmetiske gjennomsnittet i stedet. Den alternative verdien er tilgjengelig som attributt.", - "usage_tips": "Bruk statusverdien for å se det typiske kommende prisnivået. For kostnadsberegninger bruk: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" - }, - "trailing_price_min": { - "description": "Den minste elektrisitetsprisen for de siste 24 timene per kWh", - "long_description": "Viser minimumsprisen per kWh fra de siste 24 timene (glidende minimum) fra ditt Tibber-abonnement. Dette gir den laveste prisen sett i de siste 24 timene.", - "usage_tips": "Bruk dette til å se den beste prismuligheten du hadde i de siste 24 timene og sammenlign den med nåværende priser." - }, - "trailing_price_max": { - "description": "Den maksimale elektrisitetsprisen for de siste 24 timene per kWh", - "long_description": "Viser maksimumsprisen per kWh fra de siste 24 timene (glidende maksimum) fra ditt Tibber-abonnement. Dette gir den høyeste prisen sett i de siste 24 timene.", - "usage_tips": "Bruk dette til å se toppprisen i de siste 24 timene og vurdere prisvolatilitet." - }, - "leading_price_min": { - "description": "Den minste elektrisitetsprisen for de neste 24 timene per kWh", - "long_description": "Viser minimumsprisen per kWh fra de neste 24 timene (fremtidsrettet minimum) fra ditt Tibber-abonnement. Dette gir den laveste prisen forventet i de neste 24 timene basert på prognosedata.", - "usage_tips": "Bruk dette til å identifisere den beste prismuligheten som kommer og planlegge energikrevende oppgaver deretter." - }, - "leading_price_max": { - "description": "Den maksimale elektrisitetsprisen for de neste 24 timene per kWh", - "long_description": "Viser maksimumsprisen per kWh fra de neste 24 timene (fremtidsrettet maksimum) fra ditt Tibber-abonnement. Dette gir den høyeste prisen forventet i de neste 24 timene basert på prognosedata.", - "usage_tips": "Bruk dette til å unngå å kjøre apparater i kommende topprisperioder." - }, - "current_interval_price_level": { - "description": "Den nåværende prisnivåklassifiseringen", - "long_description": "Viser Tibbers klassifisering av nåværende pris sammenlignet med historiske priser", - "usage_tips": "Bruk dette til å lage automatiseringer basert på relative prisnivåer i stedet for absolutte priser" - }, - "next_interval_price_level": { - "description": "Prisnivå for det neste 15-minutters intervallet", - "long_description": "Viser prisnivåklassifiseringen for det kommende intervallet. Hjelper med å forutse kortsiktige prisendringer for umiddelbar planlegging.", - "usage_tips": "Bruk for raske beslutninger om å starte eller stoppe høyeffektenheter i de neste få minuttene." - }, - "previous_interval_price_level": { - "description": "Prisnivå for det forrige 15-minutters intervallet", - "long_description": "Viser prisnivåklassifiseringen for det siste intervallet. Nyttig for historisk sammenligning og forståelse av nylige pristrender.", - "usage_tips": "Bruk for å sammenligne nåværende vs nylige prisnivåer eller analysere forbruksmønstre mot historiske priser." - }, - "current_hour_price_level": { - "description": "Aggregert prisnivå for nåværende rullerende time (5 intervaller)", - "long_description": "Viser median prisnivå på tvers av 5 intervaller (2 før, nåværende, 2 etter) som dekker omtrent 75 minutter. Gir en mer stabil prisnivåindikator som jevner ut kortsiktige svingninger.", - "usage_tips": "Bruk for mellomlangsiktige planleggingsbeslutninger der du ønsker å unngå å reagere på korte pristopper eller fall." - }, - "next_hour_price_level": { - "description": "Aggregert prisnivå for neste rullerende time (5 intervaller frem)", - "long_description": "Viser median prisnivå på tvers av 5 intervaller sentrert en time frem. Hjelper med å planlegge forbruk basert på kommende pristrender i stedet for øyeblikkelige fremtidige priser.", - "usage_tips": "Bruk for å planlegge aktiviteter for neste time basert på en utjevnet prisnivåprognose." - }, - "current_interval_price_rating": { - "description": "Hvordan nåværende intervalls pris sammenlignes med historiske data", - "long_description": "Viser hvordan nåværende intervalls pris sammenlignes med historiske prisdata som en prosentandel", - "usage_tips": "En positiv prosentandel betyr at nåværende pris er over gjennomsnittet, negativ betyr under gjennomsnittet" - }, - "next_interval_price_rating": { - "description": "Prisvurdering for det neste 15-minutters intervallet", - "long_description": "Viser hvordan neste intervalls pris sammenlignes med det rullerende 24-timers gjennomsnittet. Hjelper med å forutse om kommende priser er over eller under den nylige trenden.", - "usage_tips": "Bruk for å ta raske beslutninger om å starte aktiviteter i neste intervall basert på relativ prisposisjon." - }, - "previous_interval_price_rating": { - "description": "Prisvurdering for det forrige 15-minutters intervallet", - "long_description": "Viser hvordan siste intervalls pris sammenlignes med det rullerende gjennomsnittet. Nyttig for å forstå nylig prisatferd.", - "usage_tips": "Bruk for å analysere hvordan prisvurderinger endret seg over tid eller validere tidligere forbruksbeslutninger." - }, - "current_hour_price_rating": { - "description": "Aggregert prisvurdering for nåværende rullerende time (5 intervaller)", - "long_description": "Viser gjennomsnittlig vurdering på tvers av 5 intervaller (2 før, nåværende, 2 etter). Basert på gjennomsnittlig prosentvis forskjell fra rullerende 24t gjennomsnitt, som gir en utjevnet vurderingsindikator.", - "usage_tips": "Bruk for stabil mellomlangsiktig prisvurdering som ikke overreagerer på kortvarige prisavvik." - }, - "next_hour_price_rating": { - "description": "Aggregert prisvurdering for neste rullerende time (5 intervaller frem)", - "long_description": "Viser gjennomsnittlig vurdering for 5 intervaller sentrert en time frem. Hjelper med å forstå om neste time generelt vil være over eller under gjennomsnittlig prising.", - "usage_tips": "Bruk for å avgjøre om du bør vente en time før du starter høyforbruksaktiviteter." - }, - "next_avg_1h": { - "description": "Gjennomsnittspris for neste 1 time (kun fremover fra neste intervall)", - "long_description": "Fremtidsrettet gjennomsnitt: Viser gjennomsnitt av neste 4 intervaller (1 time) fra og med NESTE 15-minutters intervall (ikke inkludert nåværende). Forskjellig fra current_hour_average_price som inkluderer tidligere intervaller. Bruk for planlegging med absolutt pristerskel.", - "usage_tips": "Absolutt pristerskel: Start kun apparater når gjennomsnittet forblir under din maksimalt akseptable pris (f.eks. under 0,25 EUR/kWh). Kombiner med trendsensor for optimal timing. Merk: Dette er IKKE en erstatning for timepriser - bruk current_hour_average_price for det." - }, - "next_avg_2h": { - "description": "Gjennomsnittspris for neste 2 timer", - "long_description": "Viser gjennomsnittsprisen for de neste 8 intervallene (2 timer) fra og med neste 15-minutters intervall.", - "usage_tips": "Absolutt pristerskel: Sett en maksimalt akseptabel gjennomsnittspris for standard apparater som vaskemaskiner. Sikrer at du aldri betaler mer enn din grense." - }, - "next_avg_3h": { - "description": "Gjennomsnittspris for neste 3 timer", - "long_description": "Viser gjennomsnittsprisen for de neste 12 intervallene (3 timer) fra og med neste 15-minutters intervall.", - "usage_tips": "Absolutt pristerskel: For EU Eco-programmer (oppvaskmaskiner, 3-4t kjøretid). Start kun når 3t gjennomsnitt er under din prisgrense. Bruk med trendsensor for å finne beste øyeblikk innenfor akseptabelt prisområde." - }, - "next_avg_4h": { - "description": "Gjennomsnittspris for neste 4 timer", - "long_description": "Viser gjennomsnittsprisen for de neste 16 intervallene (4 timer) fra og med neste 15-minutters intervall.", - "usage_tips": "Absolutt pristerskel: Sett maksimalt akseptabel pris for varmepumper eller varmtvannsberedere. Forhindrer drift i dyre perioder uavhengig av relative trender." - }, - "next_avg_5h": { - "description": "Gjennomsnittspris for neste 5 timer", - "long_description": "Viser gjennomsnittsprisen for de neste 20 intervallene (5 timer) fra og med neste 15-minutters intervall.", - "usage_tips": "Absolutt pristerskel: Bro mellom kort- og langsiktig planlegging. Bruk for utvidede sykluser med harde prisgrenser (f.eks. bassengpumper, utvidede oppvarmingssykluser)." - }, - "next_avg_6h": { - "description": "Gjennomsnittspris for neste 6 timer", - "long_description": "Viser gjennomsnittsprisen for de neste 24 intervallene (6 timer) fra og med neste 15-minutters intervall.", - "usage_tips": "Absolutt pristerskel: Kveldsplanlegging med pristak. Planlegg kun oppgaver hvis 6t gjennomsnitt forblir under din maksimalt akseptable kostnad." - }, - "next_avg_8h": { - "description": "Gjennomsnittspris for neste 8 timer", - "long_description": "Viser gjennomsnittsprisen for de neste 32 intervallene (8 timer) fra og med neste 15-minutters intervall.", - "usage_tips": "Absolutt pristerskel: Nattdriftsbeslutninger. Sett harde prisgrenser for nattbelastninger (batterilading, termolagring). Overskrid aldri budsjettet ditt." - }, - "next_avg_12h": { - "description": "Gjennomsnittspris for neste 12 timer", - "long_description": "Viser gjennomsnittsprisen for de neste 48 intervallene (12 timer) fra og med neste 15-minutters intervall.", - "usage_tips": "Absolutt pristerskel: Strategiske beslutninger med pristak. Fortsett kun hvis 12t gjennomsnitt er under din maksimalt akseptable pris. Bra for utsettbare store belastninger." - }, - "price_outlook_1h": { - "description": "Prisutblikk for neste time", - "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller den neste timen (4 intervaller). Alle utblikk-sensorer (1t–12t) har samme utgangspunkt: din nåværende pris — de skiller seg bare i vindustørrelse. Større vinduer dekker flere fremtidige timer og jevner ut kortsiktige topper. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", - "usage_tips": "Beslutningshjelp: 'stigende' = HANDLE NÅ, din nåværende pris er gunstigere enn vindusgjennomsnittet. 'fallende' = VENT, vindusgjennomsnittet er billigere enn nå. 'stabil' = timing spiller ingen rolle. Vanlig misforståelse: 'stigende' betyr IKKE 'for sent' — det betyr at nå er en god pris!" - }, - "price_outlook_2h": { - "description": "Prisutblikk for neste 2 timer", - "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 2 timene (8 intervaller). 'stigende' = nåværende pris er under 2t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", - "usage_tips": "Apparater: 'stigende' = start nå, du har en god pris i forhold til neste 2t. 'fallende' = bedre priser venter, utsett hvis mulig. Kombiner med price_trajectory_2h for å skille 'faller nå, stiger senere' fra 'faller gjennom hele vinduet'." - }, - "price_outlook_3h": { - "description": "Prisutblikk for neste 3 timer", - "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 3 timene (12 intervaller). 'stigende' = nåværende pris er under 3t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", - "usage_tips": "Eco-programmer: 'stigende' = start eco-syklusen nå, prisene er i snitt høyere fremover. 'fallende' = vent, billigere gjennomsnitt kommer. Kombiner med avg-sensor: start når utblikk er 'stigende' eller 'stabil' OG avg < din grense." - }, - "price_outlook_4h": { - "description": "Prisutblikk for neste 4 timer", - "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 4 timene (16 intervaller). 'stigende' = nåværende pris er under 4t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", - "usage_tips": "Varmepumpe/batteri: 'stigende' = lad nå, du er på et relativt lavpunkt. 'fallende' = vent på bedre gjennomsnittsvindu. Kombiner med price_trajectory_4h for å se om prisene fortsatt faller eller allerede stiger igjen." - }, - "price_outlook_5h": { - "description": "Prisutblikk for neste 5 timer", - "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 5 timene (20 intervaller). 'stigende' = nåværende pris er under 5t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", - "usage_tips": "Utvidede sykluser: 'stigende' eller 'stabil' = godt tidspunkt å starte. 'fallende' = vent hvis planen din tillater det." - }, - "price_outlook_6h": { - "description": "Prisutblikk for neste 6 timer", - "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 6 timene (24 intervaller). 'stigende' = nåværende pris er under 6t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", - "usage_tips": "Kveldsbeslutninger: 'stigende' = bruk strøm nå mens den er relativt billig. 'fallende' = kvelds-/nattprisene blir bedre i snitt, vent hvis mulig." - }, - "price_outlook_8h": { - "description": "Prisutblikk for neste 8 timer", - "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 8 timene (32 intervaller). 'stigende' = nåværende pris er under 8t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", - "usage_tips": "Nattplanlegging: 'stigende' = i natt/i morgen blir dyrere i snitt, bruk strøm nå. 'fallende' = nattprisene blir billigere, verdt å vente." - }, - "price_outlook_12h": { - "description": "Prisutblikk for de neste 12 timene", - "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 12 timene (48 intervaller). 'stigende' = nåværende pris er under 12t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", - "usage_tips": "Strategiske beslutninger: 'stigende' = du er på et lavpunkt relativt til neste 12t, godt tidspunkt for strømkrevende oppgaver. 'fallende' = betydelig bedre priser i snitt venter, vent hvis mulig." - }, - "price_trajectory_2h": { - "description": "Prisretning innenfor neste 2-timers vindu", - "long_description": "Compares the average of the first hour (4 intervals) with the average of the second hour (4 intervals) within the next 2-hour window. 'rising' = second half more expensive than first half — prices are climbing within the window. 'falling' = second half cheaper — prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive than first) — revealing the upcoming reversal. 'outlook: falling + trajectory: rising' = you're AT the minimum, act now." - }, - "price_trajectory_3h": { - "description": "Prisretning innenfor neste 3-timers vindu", - "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing over the 3h window; 'falling' = prices are dropping. Reveals direction of movement independent of current price level. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, prices are already recovering — start now." - }, - "price_trajectory_4h": { - "description": "Prisretning innenfor neste 4-timers vindu", - "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Complements price_outlook_4h: outlook answers 'is NOW cheap vs window average?', trajectory answers 'are prices rising or falling within the window?'. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Heat pump charging: 'rising' = first half is cheaper, charge now. 'falling' = second half is cheaper, wait. Combine with outlook: if both rising, very strong signal to act now." - }, - "price_trajectory_5h": { - "description": "Prisretning innenfor neste 5-timers vindu", - "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Long cycles: 'outlook: rising + trajectory: rising' = clear signal to start now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start before costs climb." - }, - "price_trajectory_6h": { - "description": "Prisretning innenfor neste 6-timers vindu", - "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the low — good time for high consumption." - }, - "price_trajectory_8h": { - "description": "Prisretning innenfor neste 8-timers vindu", - "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half of night will be cheapest, delay start." - }, - "price_trajectory_12h": { - "description": "Prisretning innenfor neste 12-timers vindu", - "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = prices drop in second part of the day, afternoon/evening scheduling is better." - }, - "current_price_trend": { - "description": "Nåværende pristrend-retning og hvor lenge den varer", - "long_description": "Viser nåværende pristrend (økende/synkende/stabil) ved å kombinere historisk momentum (vektet 1t tilbakeblikk) med fremtidsutsikt. Gjenkjenner pågående trender tidligere enn bare fremtidsanalyse. Bruker ±3 % momentum-terskel og volatilitetsavhengig fremtidssammenligning. Beregner dynamisk til neste trendendring (eller 3t standard hvis ingen endring på 24t). Status viser nåværende retning, attributter viser når den endres og hva som kommer etterpå.", - "usage_tips": "Statusvisning: Dashboard-synlighet av 'hva skjer nå til når'. Perfekt synkronisert med next_price_trend_change. Eksempel: Badge som viser 'Økende i 2,5t' eller 'Synkende til 16:45'. Bedre enn tidsvindu-sensorer fordi den forstår at du ALLEREDE er i en trend, ikke bare forutsier fremtidige endringer. Bruk for rask visuell oversikt, ikke automatiseringsutløsere." - }, - "next_price_trend_change": { - "description": "Når neste betydelige pristrendendring vil skje", - "long_description": "Skanner de neste 24 timene (96 intervaller) for å finne når pristrend-retningen vil endre seg. Kun retningsendringer teller: stigende/sterkt stigende er én gruppe, fallende/sterkt fallende en annen, stabil er egen. En endring fra stigende til sterkt stigende er IKKE en trendendring. Bruker volatilitetstilpassede terskelverdier (standard: ±3%/±9%) med hysterese (standard: 3 påfølgende intervaller). Returnerer tidsstempelet når endringen forventes.", - "usage_tips": "Hendelsesbasert automatisering: Utløs handlinger NÅR trenden endres, ikke OM X timer. Eksempel: 'Lad EV når neste trendendring viser synkende priser' eller 'Start oppvaskmaskin før prisene stiger'. Kompletterer tidsvindu-sensorer (price_trend_Xh) som svarer på 'VIL prisene være høyere om X timer?'" - }, - "next_price_trend_change_in": { - "description": "Tid til neste pristrendendring", - "long_description": "Viser hvor lenge det er til neste betydelige pristrendendring inntreffer. Verdien vises i timer (f.eks. 2,25 t) for dashboards. Deler samme analyse som tidsstempel-sensoren 'Neste trendendring', men presenterer den som en nedtellingsvarighet. Oppdateres hvert minutt for nøyaktige nedtellinger. Viser 'Ukjent' når ingen trendendring forventes i løpet av de neste 24 timene.", - "usage_tips": "Dashboard-nedtelling: Vis 'Trendendring om 1,5 t' som live nedtelling. For automatiseringer: 'Hvis next_price_trend_change_in < 0,25 (15 min), forbered på prisretningsendring'. Kompletterer 'Neste trendendring' (tidsstempel) — bruk tidsstempelet for 'NÅR' og denne sensoren for 'HVOR LENGE'." - }, - "daily_rating": { - "description": "Hvordan dagens priser sammenlignes med historiske data", - "long_description": "Viser hvordan dagens priser sammenlignes med historiske prisdata som en prosentandel", - "usage_tips": "En positiv prosentandel betyr at dagens priser er over gjennomsnittet, negativ betyr under gjennomsnittet" - }, - "monthly_rating": { - "description": "Hvordan denne månedens priser sammenlignes med historiske data", - "long_description": "Viser hvordan denne månedens priser sammenlignes med historiske prisdata som en prosentandel", - "usage_tips": "En positiv prosentandel betyr at denne månedens priser er over gjennomsnittet, negativ betyr under gjennomsnittet" - }, - "data_timestamp": { - "description": "Tidsstempel for siste tilgjengelige prisdataintervall", - "long_description": "Viser tidsstempelet for siste tilgjengelige prisdataintervall fra ditt Tibber-abonnement" - }, - "today_volatility": { - "description": "Hvor mye strømprisene endrer seg i dag", - "long_description": "Viser om dagens priser er stabile eller har store svingninger. Lav volatilitet betyr ganske jevne priser – timing betyr lite. Høy volatilitet betyr tydelige prisforskjeller gjennom dagen – en god sjanse til å flytte forbruk til billigere perioder. `price_coefficient_variation_%` viser prosentverdien, `price_spread` viser den absolutte prisspennet.", - "usage_tips": "Bruk dette for å avgjøre om optimalisering er verdt innsatsen. Ved lav volatilitet kan du kjøre enheter når som helst. Ved høy volatilitet sparer du merkbart ved å følge Best Price-perioder." - }, - "tomorrow_volatility": { - "description": "Hvor mye strømprisene vil endre seg i morgen", - "long_description": "Viser om prisene i morgen blir stabile eller får store svingninger. Tilgjengelig når morgendagens data er publisert (vanligvis 13:00–14:00 CET). Lav volatilitet betyr jevne priser – timing er ikke kritisk. Høy volatilitet betyr tydelige prisforskjeller gjennom dagen – en god mulighet til å planlegge energikrevende oppgaver. `price_coefficient_variation_%` viser prosentverdien, `price_spread` viser den absolutte prisspennet.", - "usage_tips": "Bruk dette til å planlegge morgendagens forbruk. Høy volatilitet? Planlegg fleksible laster i Best Price-perioder. Lav volatilitet? Kjør enheter når det passer deg." - }, - "next_24h_volatility": { - "description": "Hvor mye prisene endrer seg de neste 24 timene", - "long_description": "Viser prisvolatilitet for et rullerende 24-timers vindu fra nå (oppdateres hvert 15. minutt). Lav volatilitet betyr jevne priser. Høy volatilitet betyr merkbare prissvingninger og mulighet for optimalisering. I motsetning til i dag/i morgen-sensorer krysser denne daggrenser og gir en kontinuerlig fremoverskuende vurdering. `price_coefficient_variation_%` viser prosentverdien, `price_spread` viser den absolutte prisspennet.", - "usage_tips": "Best for beslutninger i sanntid. Bruk når du planlegger batterilading eller andre fleksible laster som kan gå over midnatt. Gir et konsistent 24t-bilde uavhengig av kalenderdag." - }, - "today_tomorrow_volatility": { - "description": "Kombinert prisvolatilitet for i dag og i morgen", - "long_description": "Viser samlet volatilitet når i dag og i morgen sees sammen (når morgendata er tilgjengelig). Viser om det finnes klare prisforskjeller over dagsgrensen. Faller tilbake til kun i dag hvis morgendata mangler. Nyttig for flerdagers optimalisering. `price_coefficient_variation_%` viser prosentverdien, `price_spread` viser den absolutte prisspennet.", - "usage_tips": "Bruk for oppgaver som går over flere dager. Sjekk om prisforskjellene er store nok til å planlegge etter. De enkelte dagssensorene viser bidrag per dag om du trenger mer detalj." - }, - "price_rank_today": { - "description": "Den gjeldende prisens posisjon i dagens rangering — dens persentilrang (0 % = billigste øyeblikk)", - "long_description": "Viser hvor billig eller dyr den gjeldende prisen er sammenlignet med alle 96 kvartersintervaller for i dag. 0 % betyr at dette er dagens billigste øyeblikk — alle andre intervaller koster mer. 50 % betyr at halvparten av intervallene er billigere. ~99 % betyr: dyreste intervall på dagen. Formel (persentilrang): Hvor mange intervaller er billigere ÷ totalt antall × 100. Attributter: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Ideelt for automasjoner: 'Hvis prisrang < 25, start oppvaskmaskin' (billigste fjerdedel av dagen). Eller 'Hvis prisrang > 75, sett varmepumpen på pause' (dyreste fjerdedel). Verdien 0 garanterer at du er på dagens billigste intervall." - }, - "price_rank_tomorrow": { - "description": "Persentilrang for gjeldende pris i morgendagens rangering (0 % = billigst i morgen)", - "long_description": "Viser hvordan den gjeldende prisen sammenlignes med alle 96 kvartersintervaller for i morgen — dens persentilrang innenfor morgendagens prisfordeling. Nyttig for å avgjere om det lønner seg å vente til i morgen. 0 % betyr at gjeldende pris er billigere enn alle morgendagens intervaller. Returnerer 'Ukjent' til morgendagens data ankommer (typisk etter 13:00). Attributter: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Bruk for å avgjøre om det lønner seg å vente: 'Hvis prisrang i morgen < 10, finnes det enda billigere tidspunkter i morgen — utsett oppgaven'. Best kombinert med en binærsensor som bekrefter at oppgaven faktisk kan utføres i morgen." - }, - "price_rank_today_tomorrow": { - "description": "Persentilrang for gjeldende pris over i dag+i morgen kombinert (0 % = billigst i todagersvinduet)", - "long_description": "Viser hvor billig eller dyr den gjeldende prisen er sammenlignet med alle intervaller for i dag og i morgen kombinert — dens persentilrang innenfor todagersfordelingen (opptil 192 intervaller når begge dagene er tilgjengelige). Gir det bredeste todagers-oversikten for fleksible oppgaver. Faller tilbake til kun i dag når morgendagens data mangler. 0 % = billigst i det kombinerte vinduet. Attributter: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Det bredeste signalet for 'Er nå et godt tidspunkt?'. Bruk 'Hvis prisrang i dag+i morgen < 20, kjør energikrevende oppgave nå'. Spesielt verdifullt når oppgaver kan vente en hel dag — en verdi nær 0 over to dager er en virkelig eksepsjonell pris." - }, - "data_lifecycle_status": { - "description": "Gjeldende tilstand for prisdatalivssyklus og hurtigbufring", - "long_description": "Viser om integrasjonen bruker hurtigbufrede data eller ferske data fra API-et. Viser gjeldende livssyklustilstand: 'cached' (bruker lagrede data), 'fresh' (nettopp hentet fra API), 'refreshing' (henter for øyeblikket), 'searching_tomorrow' (søker aktivt etter morgendagens data etter 13:00), 'turnover_pending' (innen 15 minutter før midnatt, 23:45-00:00), eller 'error' (henting mislyktes). Inkluderer omfattende attributter som cache-alder, neste API-spørring, datafullstendighet og API-anropsstatistikk.", - "usage_tips": "Bruk denne diagnosesensoren for å forstå dataferskhet og API-anropsmønstre. Sjekk 'cache_age'-attributtet for å se hvor gamle de nåværende dataene er. Overvåk 'next_api_poll' for å vite når neste oppdatering er planlagt. Bruk 'data_completeness' for å se om data for i går/i dag/i morgen er tilgjengelig. 'api_calls_today'-telleren hjelper med å spore API-bruk. Perfekt for feilsøking eller forståelse av integrasjonens oppførsel." - }, - "best_price_end_time": { - "description": "Total lengde på nåværende eller neste billigperiode (state i timer, attributt i minutter)", - "long_description": "Viser hvor lenge billigperioden varer. State bruker timer (desimal) for lesbar UI; attributtet `period_duration_minutes` beholder avrundede minutter for automasjoner. Aktiv → varighet for gjeldende periode, ellers neste.", - "usage_tips": "UI kan vise 1,5 t mens `period_duration_minutes` = 90 for automasjoner." - }, - "best_price_period_duration": { - "description": "Lengde på gjeldende/neste billigperiode", - "long_description": "Total varighet av gjeldende eller neste billigperiode. State vises i timer (f.eks. 1,5 t) for enkel lesing i UI, mens attributtet `period_duration_minutes` gir samme verdi i minutter (f.eks. 90) for automasjoner. Denne verdien representerer den **fulle planlagte varigheten** av perioden og er konstant gjennom hele perioden, selv om gjenværende tid (remaining_minutes) reduseres.", - "usage_tips": "Kombiner med remaining_minutes for å beregne når langvarige enheter skal stoppes: Perioden startet for `period_duration_minutes - remaining_minutes` minutter siden. Dette attributtet støtter energioptimeringsstrategier ved å hjelpe til med å planlegge høyforbruksaktiviteter innenfor billige perioder." - }, - "best_price_remaining_minutes": { - "description": "Gjenværende tid i gjeldende billigperiode", - "long_description": "Viser hvor mye tid som gjenstår i gjeldende billigperiode. State vises i timer (f.eks. 0,75 t) for enkel lesing i dashboards, mens attributtet `remaining_minutes` gir samme tid i minutter (f.eks. 45) for automasjonsbetingelser. **Nedtellingstimer**: Denne verdien reduseres hvert minutt under en aktiv periode. Returnerer 0 når ingen billigperiode er aktiv. Oppdateres hvert minutt.", - "usage_tips": "For automasjoner: Bruk attributtet `remaining_minutes` som 'Hvis remaining_minutes > 60, start oppvaskmaskinen nå (nok tid til å fullføre)' eller 'Hvis remaining_minutes < 15, fullfør gjeldende syklus snart'. UI viser brukervennlige timer (f.eks. 1,25 t). Verdi 0 indikerer ingen aktiv billigperiode." - }, - "best_price_progress": { - "description": "Fremdrift gjennom gjeldende billigperiode (0% når inaktiv)", - "long_description": "Viser fremdrift gjennom gjeldende billigperiode som 0-100%. Returnerer 0% når ingen periode er aktiv. Oppdateres hvert minutt. 0% betyr perioden nettopp startet, 100% betyr den slutter snart.", - "usage_tips": "Flott for visuelle fremgangsindikatorer. Bruk i automatiseringer: 'Hvis progress > 0 OG progress > 75, send varsel om at billigperioden snart slutter'. Verdi 0 indikerer ingen aktiv periode." - }, - "best_price_next_start_time": { - "description": "Total lengde på nåværende eller neste dyr-periode (state i timer, attributt i minutter)", - "long_description": "Viser hvor lenge den dyre perioden varer. State bruker timer (desimal) for UI; attributtet `period_duration_minutes` beholder avrundede minutter for automasjoner. Aktiv → varighet for gjeldende periode, ellers neste.", - "usage_tips": "UI kan vise 0,75 t mens `period_duration_minutes` = 45 for automasjoner." - }, - "best_price_next_in_minutes": { - "description": "Tid til neste billigperiode", - "long_description": "Viser hvor lenge til neste billigperiode. State vises i timer (f.eks. 2,25 t) for dashboards, mens attributtet `next_in_minutes` gir minutter (f.eks. 135) for automasjonsbetingelser. Under en aktiv periode viser dette tiden til perioden ETTER den gjeldende. Returnerer 0 under korte overgangsmomenter. Oppdateres hvert minutt.", - "usage_tips": "For automasjoner: Bruk attributtet `next_in_minutes` som 'Hvis next_in_minutes > 0 OG next_in_minutes < 15, vent før start av oppvaskmaskin'. Verdi > 0 indikerer alltid at en fremtidig periode er planlagt." - }, - "peak_price_end_time": { - "description": "Tid til neste dyr-periode (state i timer, attributt i minutter)", - "long_description": "Viser hvor lenge til neste dyre periode starter. State bruker timer (desimal); attributtet `next_in_minutes` beholder avrundede minutter for automasjoner. Under aktiv periode viser dette tiden til perioden etter den nåværende. 0 i korte overgangsøyeblikk. Oppdateres hvert minutt.", - "usage_tips": "Bruk `next_in_minutes` i automasjoner (f.eks. < 10) mens state er lett å lese i timer." - }, - "peak_price_period_duration": { - "description": "Lengde på gjeldende/neste dyr periode", - "long_description": "Total varighet av gjeldende eller neste dyre periode. State vises i timer (f.eks. 1,5 t) for enkel lesing i UI, mens attributtet `period_duration_minutes` gir samme verdi i minutter (f.eks. 90) for automasjoner. Denne verdien representerer den **fulle planlagte varigheten** av perioden og er konstant gjennom hele perioden, selv om gjenværende tid (remaining_minutes) reduseres.", - "usage_tips": "Kombiner med remaining_minutes for å beregne når langvarige enheter skal stoppes: Perioden startet for `period_duration_minutes - remaining_minutes` minutter siden. Dette attributtet støtter energisparingsstrategier ved å hjelpe til med å planlegge høyforbruksaktiviteter utenfor dyre perioder." - }, - "peak_price_remaining_minutes": { - "description": "Gjenværende tid i gjeldende dyre periode", - "long_description": "Viser hvor mye tid som gjenstår i gjeldende dyre periode. State vises i timer (f.eks. 0,75 t) for enkel lesing i dashboards, mens attributtet `remaining_minutes` gir samme tid i minutter (f.eks. 45) for automasjonsbetingelser. **Nedtellingstimer**: Denne verdien reduseres hvert minutt under en aktiv periode. Returnerer 0 når ingen dyr periode er aktiv. Oppdateres hvert minutt.", - "usage_tips": "For automasjoner: Bruk attributtet `remaining_minutes` som 'Hvis remaining_minutes > 60, avbryt utsatt ladeøkt' eller 'Hvis remaining_minutes < 15, fortsett normal drift snart'. UI viser brukervennlige timer (f.eks. 1,0 t). Verdi 0 indikerer ingen aktiv dyr periode." - }, - "peak_price_progress": { - "description": "Fremdrift gjennom gjeldende dyrperiode (0% når inaktiv)", - "long_description": "Viser fremdrift gjennom gjeldende dyrperiode som 0-100%. Returnerer 0% når ingen periode er aktiv. Oppdateres hvert minutt.", - "usage_tips": "Visuell fremdriftsindikator i dashboards. Automatisering: 'Hvis progress > 0 OG progress > 90, forbered normal varmestyringsplan'. Verdi 0 indikerer ingen aktiv periode." - }, - "peak_price_next_start_time": { - "description": "Når neste dyrperiode starter", - "long_description": "Viser når neste kommende dyrperiode starter. Under en aktiv periode viser dette starten av NESTE periode etter den gjeldende. Returnerer 'Ukjent' bare når ingen fremtidige perioder er konfigurert.", - "usage_tips": "Alltid nyttig for planlegging: 'Neste dyrperiode starter om 2 timer'. Automatisering: 'Når neste starttid er om 30 minutter, reduser varmetemperatur forebyggende'." - }, - "peak_price_next_in_minutes": { - "description": "Tid til neste dyre periode", - "long_description": "Viser hvor lenge til neste dyre periode starter. State vises i timer (f.eks. 0,5 t) for dashboards, mens attributtet `next_in_minutes` gir minutter (f.eks. 30) for automasjonsbetingelser. Under en aktiv periode viser dette tiden til perioden ETTER den gjeldende. Returnerer 0 under korte overgangsmomenter. Oppdateres hvert minutt.", - "usage_tips": "For automasjoner: Bruk attributtet `next_in_minutes` som 'Hvis next_in_minutes > 0 OG next_in_minutes < 10, fullfør gjeldende ladesyklus nå før prisene øker'. Verdi > 0 indikerer alltid at en fremtidig dyr periode er planlagt." - }, - "home_type": { - "description": "Type bolig (leilighet, hus osv.)", - "long_description": "Viser boligtypen som er konfigurert i Tibber-kontoen din. Disse metadataene kan være nyttige for å kategorisere energiforbruksmønstre.", - "usage_tips": "Bruk dette til å organisere smarthussystemet ditt eller for analyseformål." - }, - "home_size": { - "description": "Boligareal i kvadratmeter", - "long_description": "Viser størrelsen på boligen din i kvadratmeter som konfigurert i Tibber-kontoen din. Kan brukes til å beregne energiforbruk per kvadratmeter.", - "usage_tips": "Bruk dette i energieffektivitetsberegninger: 'Boligen min bruker X kWh per kvadratmeter per år'." - }, - "main_fuse_size": { - "description": "Hovedsikringsstørrelse i ampere", - "long_description": "Viser kapasiteten til hovedsikringen din i ampere. Dette bestemmer maksimal elektrisk belastning boligen din kan håndtere samtidig.", - "usage_tips": "Bruk dette til å forhindre overbelastning: 'Hvis totalt strømforbruk nærmer seg sikringsstørrelsen, utsett oppstart av flere apparater'." - }, - "number_of_residents": { - "description": "Antall personer som bor i boligen", - "long_description": "Viser antall beboere som konfigurert i Tibber-kontoen din. Nyttig for beregninger av energiforbruk per person.", - "usage_tips": "Bruk dette til energianalyse for husholdningen: 'Energiforbruk per person per dag'." - }, - "primary_heating_source": { - "description": "Primær varmesystemtype", - "long_description": "Viser typen varmesystem som brukes i boligen din som konfigurert i Tibber-kontoen din. Dette kan være en varmepumpe, elektrisk oppvarming, gass, olje eller andre varmekilder.", - "usage_tips": "Bruk dette til å kategorisere varmerelaterte automatiseringer eller for energiforbruksanalyse etter varmetype." - }, - "grid_company": { - "description": "Navn på nettoperatøren din", - "long_description": "Viser navnet på selskapet som driver strømnettet i området ditt. Dette er distribusjonssystemoperatøren (DSO) som er ansvarlig for strømleveransen til hjemmet ditt.", - "usage_tips": "Nyttig for administrative formål og feilsøking av nettrelaterte problemer." - }, - "grid_area_code": { - "description": "Nettområdets identifikasjonskode", - "long_description": "Viser koden som identifiserer strømnettsområdet ditt. Denne koden brukes av nettoperatøren til routing og faktureringsformål.", - "usage_tips": "Bruk dette som administrativ referanse eller når du kontakter nettoperatøren din." - }, - "price_area_code": { - "description": "Strømprisområdekode", - "long_description": "Viser koden for strømprisområdet ditt (f.eks. NO1, NO2, SE3, DK1). Ulike områder har forskjellige engrosstrømpriser basert på regional tilbud og etterspørsel.", - "usage_tips": "Bruk dette til å forstå hvilket prisområde du er i. Nyttig ved sammenligning av priser med andre eller analyse av regionale prismønstre." - }, - "consumption_ean": { - "description": "EAN-kode for strømforbruksmåling", - "long_description": "Viser European Article Number (EAN)-koden som unikt identifiserer strømforbruksmåleren din. Denne 18-sifrede koden brukes til fakturerings- og administrasjonsformål.", - "usage_tips": "Bruk dette ved kommunikasjon med strømleverandøren din eller for administrativ dokumentasjon." - }, - "production_ean": { - "description": "EAN-kode for strømproduksjonsmåling", - "long_description": "Viser European Article Number (EAN)-koden for strømproduksjonsmåleren din (hvis du har solcellepaneler eller annen produksjon). Denne koden sporer strøm du sender tilbake til nettet.", - "usage_tips": "Relevant hvis du har solcellepaneler eller annen strømproduksjon. Bruk til administrative formål og ved krav om innmatingsutbetaling." - }, - "energy_tax_type": { - "description": "Type energiavgift som påløper", - "long_description": "Viser energiavgiftskategorien som gjelder for strømforbruket ditt. Avgiftssatser varierer etter land og noen ganger etter forbrukertype (privat, næring osv.).", - "usage_tips": "Bruk dette til å forstå nedbrytningen av strømregningen din og for totale kostnadsberegninger." - }, - "vat_type": { - "description": "MVA-kategori (merverdiavgift)", - "long_description": "Viser MVA-kategorien som gjelder for strømforbruket ditt. MVA-satser varierer etter land og kan være forskjellige for strøm sammenlignet med andre varer og tjenester.", - "usage_tips": "Bruk dette til å forstå strømregningen din og beregne totale kostnader inkludert avgifter." - }, - "estimated_annual_consumption": { - "description": "Estimert årlig strømforbruk i kWh", - "long_description": "Viser ditt estimerte årlige strømforbruk i kilowattimer som beregnet eller konfigurert i Tibber-kontoen din. Dette estimatet brukes til å sammenligne faktisk forbruk med forventede verdier.", - "usage_tips": "Bruk dette til å spore om ditt faktiske forbruk er over eller under forventningene. Sammenlign månedlig forbruk med 1/12 av denne verdien for å identifisere uvanlige mønstre." - }, - "subscription_status": { - "description": "Status for Tibber-abonnementet ditt", - "long_description": "Viser om Tibber-abonnementet ditt for øyeblikket er aktivt, avsluttet eller venter på aktivering. En status 'Aktiv' betyr at du aktivt mottar strøm gjennom Tibber.", - "usage_tips": "Bruk dette til å overvåke abonnementsstatusen din. Sett opp varsler hvis statusen endres fra 'Aktiv' for å sikre uavbrutt tjeneste." - }, - "day_pattern_yesterday": { - "description": "Oppdaget prismønster for gårsdagens strømpriser", - "long_description": "Klassifiserer i går i et prismønster: Dal (billig midt på dagen), Topp (dyrt midt på dagen), Dobbel dal (to billige perioder), Dobbel topp (to dyre perioder), Flat (liten variasjon), Stigende, Fallende eller Blandet. Konfidensen og CV-attributtene viser hvor pålitelig mønsteret ble oppdaget.", - "usage_tips": "Bruk gårsdagens mønster til å forbedre automatikaene dine: et Dalmønster gjentar seg ofte neste dag og antyder at du bør forhåndsplanlegge billige middagstimer." - }, - "day_pattern_today": { - "description": "Oppdaget prismønster for dagens strømpriser", - "long_description": "Klassifiserer i dag i et prismønster: Dal (billig midt på dagen), Topp (dyrt midt på dagen), Dobbel dal (W-form), Dobbel topp (M-form), Flat, Stigende, Fallende eller Blandet. Attributter inkluderer konfidensverdi (0–1), variasjonskoeffisient, knepunktstider og dagsegmenter.", - "usage_tips": "Bruk dagens mønster til å flytte forbruk. Daldag: kjør oppvaskmaskin, vaskemaskin eller lad elbilen rundt billige middagstimer. Toppdag: kjør apparater tidlig morgen eller sent kveld. Bruk valley_start og valley_end for presise automatikaer." - }, - "day_pattern_tomorrow": { - "description": "Oppdaget prismønster for morgendagens strømpriser", - "long_description": "Klassifiserer i morgen (når data er tilgjengelig, typisk etter kl. 13) i et prismønster med samme algoritme som i dag. Attributtene valley_start/valley_end eller peak_start/peak_end gir knepunktstider.", - "usage_tips": "Sett opp kveldsautomasjonar som leser morgendagens mønster og forhåndskonfigurerer varmepumpe, billader eller varmtvannsberedere. Kombiner med tomorrow_data_available-binærsensoren." - }, - "chart_data_export": { - "description": "Dataeksport for dashboardintegrasjoner", - "long_description": "Denne sensoren kaller get_chartdata-tjenesten med din konfigurerte YAML-konfigurasjon og eksponerer resultatet som entitetsattributter. Status viser 'ready' når data er tilgjengelig, 'error' ved feil, eller 'pending' før første kall. Perfekt for dashboardintegrasjoner som ApexCharts som trenger å lese prisdata fra entitetsattributter.", - "usage_tips": "Konfigurer YAML-parametrene i integrasjonsinnstillingene for å matche get_chartdata-tjenestekallet ditt. Sensoren vil automatisk oppdatere når prisdata oppdateres (typisk etter midnatt og når morgendagens data ankommer). Få tilgang til tjenesteresponsdataene direkte fra entitetens attributter - strukturen matcher nøyaktig det get_chartdata returnerer." - }, - "chart_metadata": { - "description": "Lettvekts metadata for diagramkonfigurasjon", - "long_description": "Gir essensielle diagramkonfigurasjonsverdier som sensorattributter. Nyttig for ethvert diagramkort som trenger Y-aksegrenser. Sensoren kaller get_chartdata med kun-metadata-modus (ingen databehandling) og trekker ut: yaxis_min, yaxis_max (foreslått Y-akseområde for optimal skalering). Status reflekterer tjenestekallresultatet: 'ready' ved suksess, 'error' ved feil, 'pending' under initialisering.", - "usage_tips": "Konfigurer via configuration.yaml under tibber_prices.chart_metadata_config (valgfritt: day, subunit_currency, resolution). Sensoren oppdateres automatisk når prisdata endres. Få tilgang til metadata fra attributter: yaxis_min, yaxis_max. Bruk med config-template-card eller ethvert verktøy som leser entitetsattributter - perfekt for dynamisk diagramkonfigurasjon uten manuelle beregninger." - } + "current_interval_price_base": { + "description": "Nåværende elektrisitetspris i hovedvaluta (EUR/kWh, NOK/kWh, osv.) for Energi-dashboard", + "long_description": "Viser nåværende pris per kWh i hovedvalutaenheter (f.eks. EUR/kWh i stedet for ct/kWh, NOK/kWh i stedet for øre/kWh). Denne sensoren er spesielt designet for bruk med Home Assistants Energi-dashboard, som krever priser i standard valutaenheter.", + "usage_tips": "Bruk denne sensoren når du konfigurerer Energi-dashboardet under Innstillinger → Dashbord → Energi. Velg denne sensoren som 'Entitet med nåværende pris' for automatisk å beregne energikostnadene. Energi-dashboardet multipliserer energiforbruket ditt (kWh) med denne prisen for å vise totale kostnader." }, - "binary_sensor": { - "tomorrow_data_available": { - "description": "Om prisdata for morgendagen er tilgjengelig", - "long_description": "Indikerer om prisdata for neste dag er mottatt fra Tibber", - "usage_tips": "Bruk dette til å sjekke om morgendagens priser er tilgjengelig for planlegging" - }, - "peak_price_period": { - "description": "Om nåværende intervall er blant de dyreste på dagen", - "long_description": "Slår seg på når nåværende pris er i topp 20% av dagens priser", - "usage_tips": "Bruk dette til å unngå å kjøre høyforbruksapparater i dyre intervaller" - }, - "best_price_period": { - "description": "Om nåværende intervall er blant de billigste på dagen", - "long_description": "Slår seg på når nåværende pris er i bunn 20% av dagens priser", - "usage_tips": "Bruk dette til å kjøre høyforbruksapparater i de billigste intervallene" - }, - "connection": { - "description": "Om tilkoblingen til Tibber API fungerer", - "long_description": "Indikerer om integrasjonen kan koble til Tibber API", - "usage_tips": "Bruk dette til å overvåke tilkoblingsstatusen til Tibber API" - }, - "has_ventilation_system": { - "description": "Om boligen din har ventilasjonsanlegg", - "long_description": "Indikerer om et ventilasjonsanlegg er registrert for boligen din i Tibber-kontoen. Ventilasjonsanlegg kan være betydelige strømforbrukere som kan dra nytte av smart planlegging.", - "usage_tips": "Bruk dette til å aktivere ventilasjonsrelaterte automatiseringer eller energiovervåking. Hvis aktivt, vurder å planlegge ventilasjon i lavprisperioder." - }, - "realtime_consumption_enabled": { - "description": "Om sanntidsforbruksovervåking er aktiv", - "long_description": "Indikerer om sanntidsovervåking av strømforbruk er aktivert og aktiv for ditt Tibber-hjem. Dette krever kompatibel målehardware (f.eks. Tibber Pulse) og et aktivt abonnement.", - "usage_tips": "Bruk dette for å bekrefte at sanntidsforbruksdata er tilgjengelig. Aktiver varsler hvis dette endres til 'av' uventet, noe som indikerer potensielle maskinvare- eller tilkoblingsproblemer." - } + "next_interval_price": { + "description": "Neste intervalls elektrisitetspris per kWh", + "long_description": "Viser prisen for det neste 15-minutters intervallet fra ditt Tibber-abonnement", + "usage_tips": "Bruk dette til å forberede deg på kommende prisendringer eller planlegge enheter til å kjøre i billigere intervaller" }, - "number": { - "best_price_flex_override": { - "description": "Maksimal prosent over daglig minimumspris som intervaller kan ha og fortsatt kvalifisere som 'beste pris'. Anbefalt: 15-20 med lemping aktivert (standard), eller 25-35 uten lemping. Maksimum: 50 (tak for pålitelig periodedeteksjon).", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Fleksibilitet'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", - "usage_tips": "Aktiver denne entiteten for å dynamisk justere beste pris-deteksjon via automatiseringer, f.eks. høyere fleksibilitet for kritiske laster eller strengere krav for fleksible apparater." - }, - "best_price_min_distance_override": { - "description": "Minimum prosentavstand under daglig gjennomsnitt. Intervaller må være så langt under gjennomsnittet for å kvalifisere som 'beste pris'. Hjelper med å skille ekte lavprisperioder fra gjennomsnittspriser.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimumsavstand'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", - "usage_tips": "Øk verdien for strengere beste pris-kriterier. Reduser hvis for få perioder blir oppdaget." - }, - "best_price_min_period_length_override": { - "description": "Minimum periodelengde i 15-minutters intervaller. Perioder kortere enn dette blir ikke rapportert. Eksempel: 2 = minimum 30 minutter.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimum periodelengde'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", - "usage_tips": "Juster til typisk apparatkjøretid: 2 (30 min) for hurtigprogrammer, 4-8 (1-2 timer) for normale sykluser, 8+ for lange ECO-programmer." - }, - "best_price_min_periods_override": { - "description": "Minimum antall beste pris-perioder å finne daglig. Når lemping er aktivert, vil systemet automatisk justere kriterier for å oppnå dette antallet.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimum perioder'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", - "usage_tips": "Sett dette til antall tidskritiske oppgaver du har daglig. Eksempel: 2 for to vaskemaskinkjøringer." - }, - "best_price_relaxation_attempts_override": { - "description": "Antall forsøk på å gradvis lempe kriteriene for å oppnå minimum periodeantall. Hvert forsøk øker fleksibiliteten med 3 prosent. Ved 0 brukes kun basiskriterier.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Lemping forsøk'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", - "usage_tips": "Høyere verdier gjør periodedeteksjon mer adaptiv for dager med stabile priser. Sett til 0 for å tvinge strenge kriterier uten lemping." - }, - "best_price_gap_count_override": { - "description": "Maksimalt antall dyrere intervaller som kan tillates mellom billige intervaller mens de fortsatt regnes som en sammenhengende periode. Ved 0 må billige intervaller være påfølgende.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Gaptoleranse'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", - "usage_tips": "Øk dette for apparater med variabel last (f.eks. varmepumper) som kan tåle korte dyrere intervaller. Sett til 0 for kontinuerlige billige perioder." - }, - "peak_price_flex_override": { - "description": "Maksimal prosent under daglig maksimumspris som intervaller kan ha og fortsatt kvalifisere som 'topppris'. Samme anbefalinger som for beste pris-fleksibilitet.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Fleksibilitet'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", - "usage_tips": "Bruk dette for å justere topppris-terskelen ved kjøretid for automatiseringer som unngår forbruk under dyre timer." - }, - "peak_price_min_distance_override": { - "description": "Minimum prosentavstand over daglig gjennomsnitt. Intervaller må være så langt over gjennomsnittet for å kvalifisere som 'topppris'.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimumsavstand'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", - "usage_tips": "Øk verdien for kun å fange ekstreme pristopper. Reduser for å inkludere flere høypristider." - }, - "peak_price_min_period_length_override": { - "description": "Minimum periodelengde i 15-minutters intervaller for topppriser. Kortere pristopper rapporteres ikke som perioder.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimum periodelengde'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", - "usage_tips": "Kortere verdier fanger korte pristopper. Lengre verdier fokuserer på vedvarende høyprisperioder." - }, - "peak_price_min_periods_override": { - "description": "Minimum antall topppris-perioder å finne daglig.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimum perioder'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", - "usage_tips": "Sett dette basert på hvor mange høyprisperioder du vil fange per dag for automatiseringer." - }, - "peak_price_relaxation_attempts_override": { - "description": "Antall forsøk på å lempe kriteriene for å oppnå minimum antall topppris-perioder.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Lemping forsøk'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", - "usage_tips": "Øk dette hvis ingen perioder blir funnet på dager med stabile priser. Sett til 0 for å tvinge strenge kriterier." - }, - "peak_price_gap_count_override": { - "description": "Maksimalt antall billigere intervaller som kan tillates mellom dyre intervaller mens de fortsatt regnes som en topppris-periode.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Gaptoleranse'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", - "usage_tips": "Høyere verdier fanger lengre høyprisperioder selv med korte prisdykk. Sett til 0 for strengt sammenhengende topppriser." - } + "previous_interval_price": { + "description": "Forrige intervalls elektrisitetspris per kWh", + "long_description": "Viser prisen for det forrige 15-minutters intervallet fra ditt Tibber-abonnement", + "usage_tips": "Bruk dette til å gjennomgå tidligere prisendringer eller spore prishistorikk" }, - "switch": { - "best_price_enable_relaxation_override": { - "description": "Når aktivert, lempes kriteriene automatisk for å oppnå minimum periodeantall. Når deaktivert, rapporteres kun perioder som oppfyller strenge kriterier (muligens null perioder på dager med stabile priser).", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Oppnå minimumsantall'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", - "usage_tips": "Aktiver dette for garanterte daglige automatiseringsmuligheter. Deaktiver hvis du kun vil ha virkelig billige perioder, selv om det betyr ingen perioder på noen dager." - }, - "peak_price_enable_relaxation_override": { - "description": "Når aktivert, lempes kriteriene automatisk for å oppnå minimum periodeantall. Når deaktivert, rapporteres kun ekte pristopper.", - "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Oppnå minimumsantall'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", - "usage_tips": "Aktiver dette for konsistente topppris-varsler. Deaktiver for kun å fange ekstreme pristopper." - } + "current_hour_average_price": { + "description": "Rullende 5-intervalls gjennomsnittspris per kWh", + "long_description": "Viser gjennomsnittsprisen per kWh beregnet fra 5 intervaller: 2 foregående, nåværende og 2 neste intervaller (omtrent 75 minutter totalt). Dette gir en utjevnet 'timepris' som tilpasser seg etter hvert som tiden går, i stedet for å være fiksert til klokkeslett.", + "usage_tips": "Bruk dette for en mer stabil prisindikator som jevner ut kortsiktige svingninger mens den fortsatt er responsiv til prisendringer. Bedre enn faste timepriser for å ta forbruksbeslutninger." }, - "home_types": { - "APARTMENT": "Leilighet", - "ROWHOUSE": "Rekkehus", - "HOUSE": "Hus", - "COTTAGE": "Hytte" + "next_hour_average_price": { + "description": "Rullende 5-intervalls gjennomsnittspris for neste time per kWh", + "long_description": "Viser gjennomsnittsprisen per kWh beregnet fra 5 intervaller sentrert en time frem: omtrent intervallene +2 til +6 fra nå (dekker minutter +30 til +105). Dette gir en fremtidsrettet utjevnet 'timepris' for å planlegge forbruk.", + "usage_tips": "Bruk dette til å forutse prisendringer i neste time. Nyttig for å planlegge høyforbruksaktiviteter som lading av elbiler, kjøring av oppvaskmaskiner eller varmesystemer." }, - "time_units": { - "day": "{count} dag", - "days": "{count} dager", - "hour": "{count} time", - "hours": "{count} timer", - "minute": "{count} minutt", - "minutes": "{count} minutter", - "ago": "{parts} siden", - "now": "nå" + "lowest_price_today": { + "description": "Den laveste elektrisitetsprisen i dag per kWh", + "long_description": "Viser den laveste prisen per kWh for gjeldende dag fra ditt Tibber-abonnement", + "usage_tips": "Bruk dette til å sammenligne nåværende priser med den billigste tiden på dagen" }, - "attribution": "Data levert av Tibber" + "highest_price_today": { + "description": "Den høyeste elektrisitetsprisen i dag per kWh", + "long_description": "Viser den høyeste prisen per kWh for gjeldende dag fra ditt Tibber-abonnement", + "usage_tips": "Bruk dette til å unngå å kjøre apparater i toppristider" + }, + "average_price_today": { + "description": "Typisk elektrisitetspris i dag per kWh (konfigurerbart visningsformat)", + "long_description": "Viser prisen per kWh for gjeldende dag fra ditt Tibber-abonnement. **Som standard viser statusen medianen** (motstandsdyktig mot ekstreme prisspiss, viser typisk prisnivå). Du kan endre dette i integrasjonsinnstillingene for å vise det aritmetiske gjennomsnittet i stedet. Den alternative verdien er tilgjengelig som attributt.", + "usage_tips": "Bruk dette som baseline for å sammenligne nåværende priser. For beregninger bruk: {{ state_attr('sensor.average_price_today', 'price_mean') }}" + }, + "lowest_price_tomorrow": { + "description": "Den laveste elektrisitetsprisen i morgen per kWh", + "long_description": "Viser den laveste prisen per kWh for morgendagen fra ditt Tibber-abonnement. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", + "usage_tips": "Bruk dette til å planlegge energikrevende aktiviteter for morgendagens billigste tid. Perfekt for forhåndsplanlegging av oppvarming, elbillading eller apparater." + }, + "highest_price_tomorrow": { + "description": "Den høyeste elektrisitetsprisen i morgen per kWh", + "long_description": "Viser den høyeste prisen per kWh for morgendagen fra ditt Tibber-abonnement. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", + "usage_tips": "Bruk dette til å unngå å kjøre apparater i morgendagens toppristider. Nyttig for å planlegge rundt dyre perioder." + }, + "average_price_tomorrow": { + "description": "Typisk elektrisitetspris i morgen per kWh (konfigurerbart visningsformat)", + "long_description": "Viser prisen per kWh for morgendagen fra ditt Tibber-abonnement. **Som standard viser statusen medianen** (motstandsdyktig mot ekstreme prisspiss). Du kan endre dette i integrasjonsinnstillingene for å vise det aritmetiske gjennomsnittet i stedet. Den alternative verdien er tilgjengelig som attributt. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", + "usage_tips": "Bruk dette som baseline for å sammenligne morgendagens priser og planlegge forbruk. Sammenlign med dagens median for å se om morgendagen vil være mer eller mindre dyr totalt sett." + }, + "yesterday_price_level": { + "description": "Aggregert prisnivå for i går", + "long_description": "Viser det aggregerte prisnivået for alle intervaller i går. Bruker samme logikk som timesensorene for å bestemme det samlede prisnivået for hele dagen.", + "usage_tips": "Bruk dette for å forstå gårsdagens generelle prissituasjon. Sammenlign med i dag for å se daglige trender." + }, + "today_price_level": { + "description": "Aggregert prisnivå for i dag", + "long_description": "Viser det aggregerte prisnivået for alle intervaller i dag. Bruker samme logikk som timesensorene for å bestemme det samlede prisnivået for hele dagen.", + "usage_tips": "Bruk dette for å forstå dagens generelle prissituasjon på et øyeblikk. Nyttig for raske vurderinger av om i dag generelt er billig eller dyrt." + }, + "tomorrow_price_level": { + "description": "Aggregert prisnivå for i morgen", + "long_description": "Viser det aggregerte prisnivået for alle intervaller i morgen. Bruker samme logikk som timesensorene for å bestemme det samlede prisnivået for hele dagen. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", + "usage_tips": "Bruk dette for å forstå morgendagens generelle prissituasjon. Sammenlign med i dag for å se om morgendagen vil være mer eller mindre gunstig for energiforbruk." + }, + "yesterday_price_rating": { + "description": "Aggregert prisvurdering for i går", + "long_description": "Viser den aggregerte prisvurderingen (lav/normal/høy) for alle intervaller i går, basert på dine konfigurerte terskelverdier. Bruker samme logikk som timesensorene for å bestemme den samlede vurderingen for hele dagen.", + "usage_tips": "Bruk dette for å forstå gårsdagens prissituasjon i forhold til dine personlige terskelverdier. Sammenlign med i dag for trendanalyse." + }, + "today_price_rating": { + "description": "Aggregert prisvurdering for i dag", + "long_description": "Viser den aggregerte prisvurderingen (lav/normal/høy) for alle intervaller i dag, basert på dine konfigurerte terskelverdier. Bruker samme logikk som timesensorene for å bestemme den samlede vurderingen for hele dagen.", + "usage_tips": "Bruk dette for raskt å vurdere dagens prissituasjon i forhold til dine personlige terskelverdier. Hjelper med å ta forbruksbeslutninger for gjeldende dag." + }, + "tomorrow_price_rating": { + "description": "Aggregert prisvurdering for i morgen", + "long_description": "Viser den aggregerte prisvurderingen (lav/normal/høy) for alle intervaller i morgen, basert på dine konfigurerte terskelverdier. Bruker samme logikk som timesensorene for å bestemme den samlede vurderingen for hele dagen. Denne sensoren blir utilgjengelig inntil morgendagens data er publisert av Tibber (vanligvis rundt 13:00-14:00 CET).", + "usage_tips": "Bruk dette for å planlegge morgendagens energiforbruk basert på dine personlige pristerskelverdier. Sammenlign med i dag for å bestemme om du skal flytte forbruk til i morgen eller bruke energi i dag." + }, + "trailing_price_average": { + "description": "Typisk elektrisitetspris for de siste 24 timene per kWh (konfigurerbart visningsformat)", + "long_description": "Viser prisen per kWh beregnet fra de siste 24 timene. **Som standard viser statusen medianen** (motstandsdyktig mot ekstreme prisspiss, viser typisk prisnivå). Du kan endre dette i integrasjonsinnstillingene for å vise det aritmetiske gjennomsnittet i stedet. Den alternative verdien er tilgjengelig som attributt. Oppdateres hvert 15. minutt.", + "usage_tips": "Bruk statusverdien for å se det typiske nåværende prisnivået. For kostnadsberegninger bruk: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" + }, + "leading_price_average": { + "description": "Typisk elektrisitetspris for de neste 24 timene per kWh (konfigurerbart visningsformat)", + "long_description": "Viser prisen per kWh beregnet fra de neste 24 timene. **Som standard viser statusen medianen** (motstandsdyktig mot ekstreme prisspiss, viser forventet prisnivå). Du kan endre dette i integrasjonsinnstillingene for å vise det aritmetiske gjennomsnittet i stedet. Den alternative verdien er tilgjengelig som attributt.", + "usage_tips": "Bruk statusverdien for å se det typiske kommende prisnivået. For kostnadsberegninger bruk: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" + }, + "trailing_price_min": { + "description": "Den minste elektrisitetsprisen for de siste 24 timene per kWh", + "long_description": "Viser minimumsprisen per kWh fra de siste 24 timene (glidende minimum) fra ditt Tibber-abonnement. Dette gir den laveste prisen sett i de siste 24 timene.", + "usage_tips": "Bruk dette til å se den beste prismuligheten du hadde i de siste 24 timene og sammenlign den med nåværende priser." + }, + "trailing_price_max": { + "description": "Den maksimale elektrisitetsprisen for de siste 24 timene per kWh", + "long_description": "Viser maksimumsprisen per kWh fra de siste 24 timene (glidende maksimum) fra ditt Tibber-abonnement. Dette gir den høyeste prisen sett i de siste 24 timene.", + "usage_tips": "Bruk dette til å se toppprisen i de siste 24 timene og vurdere prisvolatilitet." + }, + "leading_price_min": { + "description": "Den minste elektrisitetsprisen for de neste 24 timene per kWh", + "long_description": "Viser minimumsprisen per kWh fra de neste 24 timene (fremtidsrettet minimum) fra ditt Tibber-abonnement. Dette gir den laveste prisen forventet i de neste 24 timene basert på prognosedata.", + "usage_tips": "Bruk dette til å identifisere den beste prismuligheten som kommer og planlegge energikrevende oppgaver deretter." + }, + "leading_price_max": { + "description": "Den maksimale elektrisitetsprisen for de neste 24 timene per kWh", + "long_description": "Viser maksimumsprisen per kWh fra de neste 24 timene (fremtidsrettet maksimum) fra ditt Tibber-abonnement. Dette gir den høyeste prisen forventet i de neste 24 timene basert på prognosedata.", + "usage_tips": "Bruk dette til å unngå å kjøre apparater i kommende topprisperioder." + }, + "current_interval_price_level": { + "description": "Den nåværende prisnivåklassifiseringen", + "long_description": "Viser Tibbers klassifisering av nåværende pris sammenlignet med historiske priser", + "usage_tips": "Bruk dette til å lage automatiseringer basert på relative prisnivåer i stedet for absolutte priser" + }, + "next_interval_price_level": { + "description": "Prisnivå for det neste 15-minutters intervallet", + "long_description": "Viser prisnivåklassifiseringen for det kommende intervallet. Hjelper med å forutse kortsiktige prisendringer for umiddelbar planlegging.", + "usage_tips": "Bruk for raske beslutninger om å starte eller stoppe høyeffektenheter i de neste få minuttene." + }, + "previous_interval_price_level": { + "description": "Prisnivå for det forrige 15-minutters intervallet", + "long_description": "Viser prisnivåklassifiseringen for det siste intervallet. Nyttig for historisk sammenligning og forståelse av nylige pristrender.", + "usage_tips": "Bruk for å sammenligne nåværende vs nylige prisnivåer eller analysere forbruksmønstre mot historiske priser." + }, + "current_hour_price_level": { + "description": "Aggregert prisnivå for nåværende rullerende time (5 intervaller)", + "long_description": "Viser median prisnivå på tvers av 5 intervaller (2 før, nåværende, 2 etter) som dekker omtrent 75 minutter. Gir en mer stabil prisnivåindikator som jevner ut kortsiktige svingninger.", + "usage_tips": "Bruk for mellomlangsiktige planleggingsbeslutninger der du ønsker å unngå å reagere på korte pristopper eller fall." + }, + "next_hour_price_level": { + "description": "Aggregert prisnivå for neste rullerende time (5 intervaller frem)", + "long_description": "Viser median prisnivå på tvers av 5 intervaller sentrert en time frem. Hjelper med å planlegge forbruk basert på kommende pristrender i stedet for øyeblikkelige fremtidige priser.", + "usage_tips": "Bruk for å planlegge aktiviteter for neste time basert på en utjevnet prisnivåprognose." + }, + "current_interval_price_rating": { + "description": "Hvordan nåværende intervalls pris sammenlignes med historiske data", + "long_description": "Viser hvordan nåværende intervalls pris sammenlignes med historiske prisdata som en prosentandel", + "usage_tips": "En positiv prosentandel betyr at nåværende pris er over gjennomsnittet, negativ betyr under gjennomsnittet" + }, + "next_interval_price_rating": { + "description": "Prisvurdering for det neste 15-minutters intervallet", + "long_description": "Viser hvordan neste intervalls pris sammenlignes med det rullerende 24-timers gjennomsnittet. Hjelper med å forutse om kommende priser er over eller under den nylige trenden.", + "usage_tips": "Bruk for å ta raske beslutninger om å starte aktiviteter i neste intervall basert på relativ prisposisjon." + }, + "previous_interval_price_rating": { + "description": "Prisvurdering for det forrige 15-minutters intervallet", + "long_description": "Viser hvordan siste intervalls pris sammenlignes med det rullerende gjennomsnittet. Nyttig for å forstå nylig prisatferd.", + "usage_tips": "Bruk for å analysere hvordan prisvurderinger endret seg over tid eller validere tidligere forbruksbeslutninger." + }, + "current_hour_price_rating": { + "description": "Aggregert prisvurdering for nåværende rullerende time (5 intervaller)", + "long_description": "Viser gjennomsnittlig vurdering på tvers av 5 intervaller (2 før, nåværende, 2 etter). Basert på gjennomsnittlig prosentvis forskjell fra rullerende 24t gjennomsnitt, som gir en utjevnet vurderingsindikator.", + "usage_tips": "Bruk for stabil mellomlangsiktig prisvurdering som ikke overreagerer på kortvarige prisavvik." + }, + "next_hour_price_rating": { + "description": "Aggregert prisvurdering for neste rullerende time (5 intervaller frem)", + "long_description": "Viser gjennomsnittlig vurdering for 5 intervaller sentrert en time frem. Hjelper med å forstå om neste time generelt vil være over eller under gjennomsnittlig prising.", + "usage_tips": "Bruk for å avgjøre om du bør vente en time før du starter høyforbruksaktiviteter." + }, + "next_avg_1h": { + "description": "Gjennomsnittspris for neste 1 time (kun fremover fra neste intervall)", + "long_description": "Fremtidsrettet gjennomsnitt: Viser gjennomsnitt av neste 4 intervaller (1 time) fra og med NESTE 15-minutters intervall (ikke inkludert nåværende). Forskjellig fra current_hour_average_price som inkluderer tidligere intervaller. Bruk for planlegging med absolutt pristerskel.", + "usage_tips": "Absolutt pristerskel: Start kun apparater når gjennomsnittet forblir under din maksimalt akseptable pris (f.eks. under 0,25 EUR/kWh). Kombiner med trendsensor for optimal timing. Merk: Dette er IKKE en erstatning for timepriser - bruk current_hour_average_price for det." + }, + "next_avg_2h": { + "description": "Gjennomsnittspris for neste 2 timer", + "long_description": "Viser gjennomsnittsprisen for de neste 8 intervallene (2 timer) fra og med neste 15-minutters intervall.", + "usage_tips": "Absolutt pristerskel: Sett en maksimalt akseptabel gjennomsnittspris for standard apparater som vaskemaskiner. Sikrer at du aldri betaler mer enn din grense." + }, + "next_avg_3h": { + "description": "Gjennomsnittspris for neste 3 timer", + "long_description": "Viser gjennomsnittsprisen for de neste 12 intervallene (3 timer) fra og med neste 15-minutters intervall.", + "usage_tips": "Absolutt pristerskel: For EU Eco-programmer (oppvaskmaskiner, 3-4t kjøretid). Start kun når 3t gjennomsnitt er under din prisgrense. Bruk med trendsensor for å finne beste øyeblikk innenfor akseptabelt prisområde." + }, + "next_avg_4h": { + "description": "Gjennomsnittspris for neste 4 timer", + "long_description": "Viser gjennomsnittsprisen for de neste 16 intervallene (4 timer) fra og med neste 15-minutters intervall.", + "usage_tips": "Absolutt pristerskel: Sett maksimalt akseptabel pris for varmepumper eller varmtvannsberedere. Forhindrer drift i dyre perioder uavhengig av relative trender." + }, + "next_avg_5h": { + "description": "Gjennomsnittspris for neste 5 timer", + "long_description": "Viser gjennomsnittsprisen for de neste 20 intervallene (5 timer) fra og med neste 15-minutters intervall.", + "usage_tips": "Absolutt pristerskel: Bro mellom kort- og langsiktig planlegging. Bruk for utvidede sykluser med harde prisgrenser (f.eks. bassengpumper, utvidede oppvarmingssykluser)." + }, + "next_avg_6h": { + "description": "Gjennomsnittspris for neste 6 timer", + "long_description": "Viser gjennomsnittsprisen for de neste 24 intervallene (6 timer) fra og med neste 15-minutters intervall.", + "usage_tips": "Absolutt pristerskel: Kveldsplanlegging med pristak. Planlegg kun oppgaver hvis 6t gjennomsnitt forblir under din maksimalt akseptable kostnad." + }, + "next_avg_8h": { + "description": "Gjennomsnittspris for neste 8 timer", + "long_description": "Viser gjennomsnittsprisen for de neste 32 intervallene (8 timer) fra og med neste 15-minutters intervall.", + "usage_tips": "Absolutt pristerskel: Nattdriftsbeslutninger. Sett harde prisgrenser for nattbelastninger (batterilading, termolagring). Overskrid aldri budsjettet ditt." + }, + "next_avg_12h": { + "description": "Gjennomsnittspris for neste 12 timer", + "long_description": "Viser gjennomsnittsprisen for de neste 48 intervallene (12 timer) fra og med neste 15-minutters intervall.", + "usage_tips": "Absolutt pristerskel: Strategiske beslutninger med pristak. Fortsett kun hvis 12t gjennomsnitt er under din maksimalt akseptable pris. Bra for utsettbare store belastninger." + }, + "price_outlook_1h": { + "description": "Prisutblikk for neste time", + "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller den neste timen (4 intervaller). Alle utblikk-sensorer (1t–12t) har samme utgangspunkt: din nåværende pris — de skiller seg bare i vindustørrelse. Større vinduer dekker flere fremtidige timer og jevner ut kortsiktige topper. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", + "usage_tips": "Beslutningshjelp: 'stigende' = HANDLE NÅ, din nåværende pris er gunstigere enn vindusgjennomsnittet. 'fallende' = VENT, vindusgjennomsnittet er billigere enn nå. 'stabil' = timing spiller ingen rolle. Vanlig misforståelse: 'stigende' betyr IKKE 'for sent' — det betyr at nå er en god pris!" + }, + "price_outlook_2h": { + "description": "Prisutblikk for neste 2 timer", + "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 2 timene (8 intervaller). 'stigende' = nåværende pris er under 2t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", + "usage_tips": "Apparater: 'stigende' = start nå, du har en god pris i forhold til neste 2t. 'fallende' = bedre priser venter, utsett hvis mulig. Kombiner med price_trajectory_2h for å skille 'faller nå, stiger senere' fra 'faller gjennom hele vinduet'." + }, + "price_outlook_3h": { + "description": "Prisutblikk for neste 3 timer", + "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 3 timene (12 intervaller). 'stigende' = nåværende pris er under 3t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", + "usage_tips": "Eco-programmer: 'stigende' = start eco-syklusen nå, prisene er i snitt høyere fremover. 'fallende' = vent, billigere gjennomsnitt kommer. Kombiner med avg-sensor: start når utblikk er 'stigende' eller 'stabil' OG avg < din grense." + }, + "price_outlook_4h": { + "description": "Prisutblikk for neste 4 timer", + "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 4 timene (16 intervaller). 'stigende' = nåværende pris er under 4t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", + "usage_tips": "Varmepumpe/batteri: 'stigende' = lad nå, du er på et relativt lavpunkt. 'fallende' = vent på bedre gjennomsnittsvindu. Kombiner med price_trajectory_4h for å se om prisene fortsatt faller eller allerede stiger igjen." + }, + "price_outlook_5h": { + "description": "Prisutblikk for neste 5 timer", + "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 5 timene (20 intervaller). 'stigende' = nåværende pris er under 5t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", + "usage_tips": "Utvidede sykluser: 'stigende' eller 'stabil' = godt tidspunkt å starte. 'fallende' = vent hvis planen din tillater det." + }, + "price_outlook_6h": { + "description": "Prisutblikk for neste 6 timer", + "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 6 timene (24 intervaller). 'stigende' = nåværende pris er under 6t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", + "usage_tips": "Kveldsbeslutninger: 'stigende' = bruk strøm nå mens den er relativt billig. 'fallende' = kvelds-/nattprisene blir bedre i snitt, vent hvis mulig." + }, + "price_outlook_8h": { + "description": "Prisutblikk for neste 8 timer", + "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 8 timene (32 intervaller). 'stigende' = nåværende pris er under 8t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", + "usage_tips": "Nattplanlegging: 'stigende' = i natt/i morgen blir dyrere i snitt, bruk strøm nå. 'fallende' = nattprisene blir billigere, verdt å vente." + }, + "price_outlook_12h": { + "description": "Prisutblikk for de neste 12 timene", + "long_description": "Sammenligner din nåværende pris med gjennomsnittet av alle intervaller de neste 12 timene (48 intervaller). 'stigende' = nåværende pris er under 12t-vindusgjennomsnittet; 'fallende' = vindusgjennomsnittet er billigere enn nå. Stigende/fallende ved ±3%, sterkt ved ±9% (konfigurerbart, volatilitetstilpasset).", + "usage_tips": "Strategiske beslutninger: 'stigende' = du er på et lavpunkt relativt til neste 12t, godt tidspunkt for strømkrevende oppgaver. 'fallende' = betydelig bedre priser i snitt venter, vent hvis mulig." + }, + "price_trajectory_2h": { + "description": "Prisretning innenfor neste 2-timers vindu", + "long_description": "Compares the average of the first hour (4 intervals) with the average of the second hour (4 intervals) within the next 2-hour window. 'rising' = second half more expensive than first half — prices are climbing within the window. 'falling' = second half cheaper — prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive than first) — revealing the upcoming reversal. 'outlook: falling + trajectory: rising' = you're AT the minimum, act now." + }, + "price_trajectory_3h": { + "description": "Prisretning innenfor neste 3-timers vindu", + "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing over the 3h window; 'falling' = prices are dropping. Reveals direction of movement independent of current price level. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, prices are already recovering — start now." + }, + "price_trajectory_4h": { + "description": "Prisretning innenfor neste 4-timers vindu", + "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Complements price_outlook_4h: outlook answers 'is NOW cheap vs window average?', trajectory answers 'are prices rising or falling within the window?'. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Heat pump charging: 'rising' = first half is cheaper, charge now. 'falling' = second half is cheaper, wait. Combine with outlook: if both rising, very strong signal to act now." + }, + "price_trajectory_5h": { + "description": "Prisretning innenfor neste 5-timers vindu", + "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Long cycles: 'outlook: rising + trajectory: rising' = clear signal to start now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start before costs climb." + }, + "price_trajectory_6h": { + "description": "Prisretning innenfor neste 6-timers vindu", + "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the low — good time for high consumption." + }, + "price_trajectory_8h": { + "description": "Prisretning innenfor neste 8-timers vindu", + "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half of night will be cheapest, delay start." + }, + "price_trajectory_12h": { + "description": "Prisretning innenfor neste 12-timers vindu", + "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = prices drop in second part of the day, afternoon/evening scheduling is better." + }, + "current_price_trend": { + "description": "Nåværende pristrend-retning og hvor lenge den varer", + "long_description": "Viser nåværende pristrend (økende/synkende/stabil) ved å kombinere historisk momentum (vektet 1t tilbakeblikk) med fremtidsutsikt. Gjenkjenner pågående trender tidligere enn bare fremtidsanalyse. Bruker ±3 % momentum-terskel og volatilitetsavhengig fremtidssammenligning. Beregner dynamisk til neste trendendring (eller 3t standard hvis ingen endring på 24t). Status viser nåværende retning, attributter viser når den endres og hva som kommer etterpå.", + "usage_tips": "Statusvisning: Dashboard-synlighet av 'hva skjer nå til når'. Perfekt synkronisert med next_price_trend_change. Eksempel: Badge som viser 'Økende i 2,5t' eller 'Synkende til 16:45'. Bedre enn tidsvindu-sensorer fordi den forstår at du ALLEREDE er i en trend, ikke bare forutsier fremtidige endringer. Bruk for rask visuell oversikt, ikke automatiseringsutløsere." + }, + "next_price_trend_change": { + "description": "Når neste betydelige pristrendendring vil skje", + "long_description": "Skanner de neste 24 timene (96 intervaller) for å finne når pristrend-retningen vil endre seg. Kun retningsendringer teller: stigende/sterkt stigende er én gruppe, fallende/sterkt fallende en annen, stabil er egen. En endring fra stigende til sterkt stigende er IKKE en trendendring. Bruker volatilitetstilpassede terskelverdier (standard: ±3%/±9%) med hysterese (standard: 3 påfølgende intervaller). Returnerer tidsstempelet når endringen forventes.", + "usage_tips": "Hendelsesbasert automatisering: Utløs handlinger NÅR trenden endres, ikke OM X timer. Eksempel: 'Lad EV når neste trendendring viser synkende priser' eller 'Start oppvaskmaskin før prisene stiger'. Kompletterer tidsvindu-sensorer (price_trend_Xh) som svarer på 'VIL prisene være høyere om X timer?'" + }, + "next_price_trend_change_in": { + "description": "Tid til neste pristrendendring", + "long_description": "Viser hvor lenge det er til neste betydelige pristrendendring inntreffer. Verdien vises i timer (f.eks. 2,25 t) for dashboards. Deler samme analyse som tidsstempel-sensoren 'Neste trendendring', men presenterer den som en nedtellingsvarighet. Oppdateres hvert minutt for nøyaktige nedtellinger. Viser 'Ukjent' når ingen trendendring forventes i løpet av de neste 24 timene.", + "usage_tips": "Dashboard-nedtelling: Vis 'Trendendring om 1,5 t' som live nedtelling. For automatiseringer: 'Hvis next_price_trend_change_in < 0,25 (15 min), forbered på prisretningsendring'. Kompletterer 'Neste trendendring' (tidsstempel) — bruk tidsstempelet for 'NÅR' og denne sensoren for 'HVOR LENGE'." + }, + "daily_rating": { + "description": "Hvordan dagens priser sammenlignes med historiske data", + "long_description": "Viser hvordan dagens priser sammenlignes med historiske prisdata som en prosentandel", + "usage_tips": "En positiv prosentandel betyr at dagens priser er over gjennomsnittet, negativ betyr under gjennomsnittet" + }, + "monthly_rating": { + "description": "Hvordan denne månedens priser sammenlignes med historiske data", + "long_description": "Viser hvordan denne månedens priser sammenlignes med historiske prisdata som en prosentandel", + "usage_tips": "En positiv prosentandel betyr at denne månedens priser er over gjennomsnittet, negativ betyr under gjennomsnittet" + }, + "data_timestamp": { + "description": "Tidsstempel for siste tilgjengelige prisdataintervall", + "long_description": "Viser tidsstempelet for siste tilgjengelige prisdataintervall fra ditt Tibber-abonnement" + }, + "today_volatility": { + "description": "Hvor mye strømprisene endrer seg i dag", + "long_description": "Viser om dagens priser er stabile eller har store svingninger. Lav volatilitet betyr ganske jevne priser – timing betyr lite. Høy volatilitet betyr tydelige prisforskjeller gjennom dagen – en god sjanse til å flytte forbruk til billigere perioder. `price_coefficient_variation_%` viser prosentverdien, `price_spread` viser den absolutte prisspennet.", + "usage_tips": "Bruk dette for å avgjøre om optimalisering er verdt innsatsen. Ved lav volatilitet kan du kjøre enheter når som helst. Ved høy volatilitet sparer du merkbart ved å følge Best Price-perioder." + }, + "tomorrow_volatility": { + "description": "Hvor mye strømprisene vil endre seg i morgen", + "long_description": "Viser om prisene i morgen blir stabile eller får store svingninger. Tilgjengelig når morgendagens data er publisert (vanligvis 13:00–14:00 CET). Lav volatilitet betyr jevne priser – timing er ikke kritisk. Høy volatilitet betyr tydelige prisforskjeller gjennom dagen – en god mulighet til å planlegge energikrevende oppgaver. `price_coefficient_variation_%` viser prosentverdien, `price_spread` viser den absolutte prisspennet.", + "usage_tips": "Bruk dette til å planlegge morgendagens forbruk. Høy volatilitet? Planlegg fleksible laster i Best Price-perioder. Lav volatilitet? Kjør enheter når det passer deg." + }, + "next_24h_volatility": { + "description": "Hvor mye prisene endrer seg de neste 24 timene", + "long_description": "Viser prisvolatilitet for et rullerende 24-timers vindu fra nå (oppdateres hvert 15. minutt). Lav volatilitet betyr jevne priser. Høy volatilitet betyr merkbare prissvingninger og mulighet for optimalisering. I motsetning til i dag/i morgen-sensorer krysser denne daggrenser og gir en kontinuerlig fremoverskuende vurdering. `price_coefficient_variation_%` viser prosentverdien, `price_spread` viser den absolutte prisspennet.", + "usage_tips": "Best for beslutninger i sanntid. Bruk når du planlegger batterilading eller andre fleksible laster som kan gå over midnatt. Gir et konsistent 24t-bilde uavhengig av kalenderdag." + }, + "today_tomorrow_volatility": { + "description": "Kombinert prisvolatilitet for i dag og i morgen", + "long_description": "Viser samlet volatilitet når i dag og i morgen sees sammen (når morgendata er tilgjengelig). Viser om det finnes klare prisforskjeller over dagsgrensen. Faller tilbake til kun i dag hvis morgendata mangler. Nyttig for flerdagers optimalisering. `price_coefficient_variation_%` viser prosentverdien, `price_spread` viser den absolutte prisspennet.", + "usage_tips": "Bruk for oppgaver som går over flere dager. Sjekk om prisforskjellene er store nok til å planlegge etter. De enkelte dagssensorene viser bidrag per dag om du trenger mer detalj." + }, + "data_lifecycle_status": { + "description": "Gjeldende tilstand for prisdatalivssyklus og hurtigbufring", + "long_description": "Viser om integrasjonen bruker hurtigbufrede data eller ferske data fra API-et. Viser gjeldende livssyklustilstand: 'cached' (bruker lagrede data), 'fresh' (nettopp hentet fra API), 'refreshing' (henter for øyeblikket), 'searching_tomorrow' (søker aktivt etter morgendagens data etter 13:00), 'turnover_pending' (innen 15 minutter før midnatt, 23:45-00:00), eller 'error' (henting mislyktes). Inkluderer omfattende attributter som cache-alder, neste API-spørring, datafullstendighet og API-anropsstatistikk.", + "usage_tips": "Bruk denne diagnosesensoren for å forstå dataferskhet og API-anropsmønstre. Sjekk 'cache_age'-attributtet for å se hvor gamle de nåværende dataene er. Overvåk 'next_api_poll' for å vite når neste oppdatering er planlagt. Bruk 'data_completeness' for å se om data for i går/i dag/i morgen er tilgjengelig. 'api_calls_today'-telleren hjelper med å spore API-bruk. Perfekt for feilsøking eller forståelse av integrasjonens oppførsel." + }, + "best_price_end_time": { + "description": "Total lengde på nåværende eller neste billigperiode (state i timer, attributt i minutter)", + "long_description": "Viser hvor lenge billigperioden varer. State bruker timer (desimal) for lesbar UI; attributtet `period_duration_minutes` beholder avrundede minutter for automasjoner. Aktiv → varighet for gjeldende periode, ellers neste.", + "usage_tips": "UI kan vise 1,5 t mens `period_duration_minutes` = 90 for automasjoner." + }, + "best_price_period_duration": { + "description": "Lengde på gjeldende/neste billigperiode", + "long_description": "Total varighet av gjeldende eller neste billigperiode. State vises i timer (f.eks. 1,5 t) for enkel lesing i UI, mens attributtet `period_duration_minutes` gir samme verdi i minutter (f.eks. 90) for automasjoner. Denne verdien representerer den **fulle planlagte varigheten** av perioden og er konstant gjennom hele perioden, selv om gjenværende tid (remaining_minutes) reduseres.", + "usage_tips": "Kombiner med remaining_minutes for å beregne når langvarige enheter skal stoppes: Perioden startet for `period_duration_minutes - remaining_minutes` minutter siden. Dette attributtet støtter energioptimeringsstrategier ved å hjelpe til med å planlegge høyforbruksaktiviteter innenfor billige perioder." + }, + "best_price_remaining_minutes": { + "description": "Gjenværende tid i gjeldende billigperiode", + "long_description": "Viser hvor mye tid som gjenstår i gjeldende billigperiode. State vises i timer (f.eks. 0,75 t) for enkel lesing i dashboards, mens attributtet `remaining_minutes` gir samme tid i minutter (f.eks. 45) for automasjonsbetingelser. **Nedtellingstimer**: Denne verdien reduseres hvert minutt under en aktiv periode. Returnerer 0 når ingen billigperiode er aktiv. Oppdateres hvert minutt.", + "usage_tips": "For automasjoner: Bruk attributtet `remaining_minutes` som 'Hvis remaining_minutes > 60, start oppvaskmaskinen nå (nok tid til å fullføre)' eller 'Hvis remaining_minutes < 15, fullfør gjeldende syklus snart'. UI viser brukervennlige timer (f.eks. 1,25 t). Verdi 0 indikerer ingen aktiv billigperiode." + }, + "best_price_progress": { + "description": "Fremdrift gjennom gjeldende billigperiode (0% når inaktiv)", + "long_description": "Viser fremdrift gjennom gjeldende billigperiode som 0-100%. Returnerer 0% når ingen periode er aktiv. Oppdateres hvert minutt. 0% betyr perioden nettopp startet, 100% betyr den slutter snart.", + "usage_tips": "Flott for visuelle fremgangsindikatorer. Bruk i automatiseringer: 'Hvis progress > 0 OG progress > 75, send varsel om at billigperioden snart slutter'. Verdi 0 indikerer ingen aktiv periode." + }, + "best_price_next_start_time": { + "description": "Total lengde på nåværende eller neste dyr-periode (state i timer, attributt i minutter)", + "long_description": "Viser hvor lenge den dyre perioden varer. State bruker timer (desimal) for UI; attributtet `period_duration_minutes` beholder avrundede minutter for automasjoner. Aktiv → varighet for gjeldende periode, ellers neste.", + "usage_tips": "UI kan vise 0,75 t mens `period_duration_minutes` = 45 for automasjoner." + }, + "best_price_next_in_minutes": { + "description": "Tid til neste billigperiode", + "long_description": "Viser hvor lenge til neste billigperiode. State vises i timer (f.eks. 2,25 t) for dashboards, mens attributtet `next_in_minutes` gir minutter (f.eks. 135) for automasjonsbetingelser. Under en aktiv periode viser dette tiden til perioden ETTER den gjeldende. Returnerer 0 under korte overgangsmomenter. Oppdateres hvert minutt.", + "usage_tips": "For automasjoner: Bruk attributtet `next_in_minutes` som 'Hvis next_in_minutes > 0 OG next_in_minutes < 15, vent før start av oppvaskmaskin'. Verdi > 0 indikerer alltid at en fremtidig periode er planlagt." + }, + "peak_price_end_time": { + "description": "Tid til neste dyr-periode (state i timer, attributt i minutter)", + "long_description": "Viser hvor lenge til neste dyre periode starter. State bruker timer (desimal); attributtet `next_in_minutes` beholder avrundede minutter for automasjoner. Under aktiv periode viser dette tiden til perioden etter den nåværende. 0 i korte overgangsøyeblikk. Oppdateres hvert minutt.", + "usage_tips": "Bruk `next_in_minutes` i automasjoner (f.eks. < 10) mens state er lett å lese i timer." + }, + "peak_price_period_duration": { + "description": "Lengde på gjeldende/neste dyr periode", + "long_description": "Total varighet av gjeldende eller neste dyre periode. State vises i timer (f.eks. 1,5 t) for enkel lesing i UI, mens attributtet `period_duration_minutes` gir samme verdi i minutter (f.eks. 90) for automasjoner. Denne verdien representerer den **fulle planlagte varigheten** av perioden og er konstant gjennom hele perioden, selv om gjenværende tid (remaining_minutes) reduseres.", + "usage_tips": "Kombiner med remaining_minutes for å beregne når langvarige enheter skal stoppes: Perioden startet for `period_duration_minutes - remaining_minutes` minutter siden. Dette attributtet støtter energisparingsstrategier ved å hjelpe til med å planlegge høyforbruksaktiviteter utenfor dyre perioder." + }, + "peak_price_remaining_minutes": { + "description": "Gjenværende tid i gjeldende dyre periode", + "long_description": "Viser hvor mye tid som gjenstår i gjeldende dyre periode. State vises i timer (f.eks. 0,75 t) for enkel lesing i dashboards, mens attributtet `remaining_minutes` gir samme tid i minutter (f.eks. 45) for automasjonsbetingelser. **Nedtellingstimer**: Denne verdien reduseres hvert minutt under en aktiv periode. Returnerer 0 når ingen dyr periode er aktiv. Oppdateres hvert minutt.", + "usage_tips": "For automasjoner: Bruk attributtet `remaining_minutes` som 'Hvis remaining_minutes > 60, avbryt utsatt ladeøkt' eller 'Hvis remaining_minutes < 15, fortsett normal drift snart'. UI viser brukervennlige timer (f.eks. 1,0 t). Verdi 0 indikerer ingen aktiv dyr periode." + }, + "peak_price_progress": { + "description": "Fremdrift gjennom gjeldende dyrperiode (0% når inaktiv)", + "long_description": "Viser fremdrift gjennom gjeldende dyrperiode som 0-100%. Returnerer 0% når ingen periode er aktiv. Oppdateres hvert minutt.", + "usage_tips": "Visuell fremdriftsindikator i dashboards. Automatisering: 'Hvis progress > 0 OG progress > 90, forbered normal varmestyringsplan'. Verdi 0 indikerer ingen aktiv periode." + }, + "peak_price_next_start_time": { + "description": "Når neste dyrperiode starter", + "long_description": "Viser når neste kommende dyrperiode starter. Under en aktiv periode viser dette starten av NESTE periode etter den gjeldende. Returnerer 'Ukjent' bare når ingen fremtidige perioder er konfigurert.", + "usage_tips": "Alltid nyttig for planlegging: 'Neste dyrperiode starter om 2 timer'. Automatisering: 'Når neste starttid er om 30 minutter, reduser varmetemperatur forebyggende'." + }, + "peak_price_next_in_minutes": { + "description": "Tid til neste dyre periode", + "long_description": "Viser hvor lenge til neste dyre periode starter. State vises i timer (f.eks. 0,5 t) for dashboards, mens attributtet `next_in_minutes` gir minutter (f.eks. 30) for automasjonsbetingelser. Under en aktiv periode viser dette tiden til perioden ETTER den gjeldende. Returnerer 0 under korte overgangsmomenter. Oppdateres hvert minutt.", + "usage_tips": "For automasjoner: Bruk attributtet `next_in_minutes` som 'Hvis next_in_minutes > 0 OG next_in_minutes < 10, fullfør gjeldende ladesyklus nå før prisene øker'. Verdi > 0 indikerer alltid at en fremtidig dyr periode er planlagt." + }, + "home_type": { + "description": "Type bolig (leilighet, hus osv.)", + "long_description": "Viser boligtypen som er konfigurert i Tibber-kontoen din. Disse metadataene kan være nyttige for å kategorisere energiforbruksmønstre.", + "usage_tips": "Bruk dette til å organisere smarthussystemet ditt eller for analyseformål." + }, + "home_size": { + "description": "Boligareal i kvadratmeter", + "long_description": "Viser størrelsen på boligen din i kvadratmeter som konfigurert i Tibber-kontoen din. Kan brukes til å beregne energiforbruk per kvadratmeter.", + "usage_tips": "Bruk dette i energieffektivitetsberegninger: 'Boligen min bruker X kWh per kvadratmeter per år'." + }, + "main_fuse_size": { + "description": "Hovedsikringsstørrelse i ampere", + "long_description": "Viser kapasiteten til hovedsikringen din i ampere. Dette bestemmer maksimal elektrisk belastning boligen din kan håndtere samtidig.", + "usage_tips": "Bruk dette til å forhindre overbelastning: 'Hvis totalt strømforbruk nærmer seg sikringsstørrelsen, utsett oppstart av flere apparater'." + }, + "number_of_residents": { + "description": "Antall personer som bor i boligen", + "long_description": "Viser antall beboere som konfigurert i Tibber-kontoen din. Nyttig for beregninger av energiforbruk per person.", + "usage_tips": "Bruk dette til energianalyse for husholdningen: 'Energiforbruk per person per dag'." + }, + "primary_heating_source": { + "description": "Primær varmesystemtype", + "long_description": "Viser typen varmesystem som brukes i boligen din som konfigurert i Tibber-kontoen din. Dette kan være en varmepumpe, elektrisk oppvarming, gass, olje eller andre varmekilder.", + "usage_tips": "Bruk dette til å kategorisere varmerelaterte automatiseringer eller for energiforbruksanalyse etter varmetype." + }, + "grid_company": { + "description": "Navn på nettoperatøren din", + "long_description": "Viser navnet på selskapet som driver strømnettet i området ditt. Dette er distribusjonssystemoperatøren (DSO) som er ansvarlig for strømleveransen til hjemmet ditt.", + "usage_tips": "Nyttig for administrative formål og feilsøking av nettrelaterte problemer." + }, + "grid_area_code": { + "description": "Nettområdets identifikasjonskode", + "long_description": "Viser koden som identifiserer strømnettsområdet ditt. Denne koden brukes av nettoperatøren til routing og faktureringsformål.", + "usage_tips": "Bruk dette som administrativ referanse eller når du kontakter nettoperatøren din." + }, + "price_area_code": { + "description": "Strømprisområdekode", + "long_description": "Viser koden for strømprisområdet ditt (f.eks. NO1, NO2, SE3, DK1). Ulike områder har forskjellige engrosstrømpriser basert på regional tilbud og etterspørsel.", + "usage_tips": "Bruk dette til å forstå hvilket prisområde du er i. Nyttig ved sammenligning av priser med andre eller analyse av regionale prismønstre." + }, + "consumption_ean": { + "description": "EAN-kode for strømforbruksmåling", + "long_description": "Viser European Article Number (EAN)-koden som unikt identifiserer strømforbruksmåleren din. Denne 18-sifrede koden brukes til fakturerings- og administrasjonsformål.", + "usage_tips": "Bruk dette ved kommunikasjon med strømleverandøren din eller for administrativ dokumentasjon." + }, + "production_ean": { + "description": "EAN-kode for strømproduksjonsmåling", + "long_description": "Viser European Article Number (EAN)-koden for strømproduksjonsmåleren din (hvis du har solcellepaneler eller annen produksjon). Denne koden sporer strøm du sender tilbake til nettet.", + "usage_tips": "Relevant hvis du har solcellepaneler eller annen strømproduksjon. Bruk til administrative formål og ved krav om innmatingsutbetaling." + }, + "energy_tax_type": { + "description": "Type energiavgift som påløper", + "long_description": "Viser energiavgiftskategorien som gjelder for strømforbruket ditt. Avgiftssatser varierer etter land og noen ganger etter forbrukertype (privat, næring osv.).", + "usage_tips": "Bruk dette til å forstå nedbrytningen av strømregningen din og for totale kostnadsberegninger." + }, + "vat_type": { + "description": "MVA-kategori (merverdiavgift)", + "long_description": "Viser MVA-kategorien som gjelder for strømforbruket ditt. MVA-satser varierer etter land og kan være forskjellige for strøm sammenlignet med andre varer og tjenester.", + "usage_tips": "Bruk dette til å forstå strømregningen din og beregne totale kostnader inkludert avgifter." + }, + "estimated_annual_consumption": { + "description": "Estimert årlig strømforbruk i kWh", + "long_description": "Viser ditt estimerte årlige strømforbruk i kilowattimer som beregnet eller konfigurert i Tibber-kontoen din. Dette estimatet brukes til å sammenligne faktisk forbruk med forventede verdier.", + "usage_tips": "Bruk dette til å spore om ditt faktiske forbruk er over eller under forventningene. Sammenlign månedlig forbruk med 1/12 av denne verdien for å identifisere uvanlige mønstre." + }, + "subscription_status": { + "description": "Status for Tibber-abonnementet ditt", + "long_description": "Viser om Tibber-abonnementet ditt for øyeblikket er aktivt, avsluttet eller venter på aktivering. En status 'Aktiv' betyr at du aktivt mottar strøm gjennom Tibber.", + "usage_tips": "Bruk dette til å overvåke abonnementsstatusen din. Sett opp varsler hvis statusen endres fra 'Aktiv' for å sikre uavbrutt tjeneste." + }, + "day_pattern_yesterday": { + "description": "Oppdaget prismønster for gårsdagens strømpriser", + "long_description": "Klassifiserer i går i et prismønster: Dal (billig midt på dagen), Topp (dyrt midt på dagen), Dobbel dal (to billige perioder), Dobbel topp (to dyre perioder), Flat (liten variasjon), Stigende, Fallende eller Blandet. Konfidensen og CV-attributtene viser hvor pålitelig mønsteret ble oppdaget.", + "usage_tips": "Bruk gårsdagens mønster til å forbedre automatikaene dine: et Dalmønster gjentar seg ofte neste dag og antyder at du bør forhåndsplanlegge billige middagstimer." + }, + "day_pattern_today": { + "description": "Oppdaget prismønster for dagens strømpriser", + "long_description": "Klassifiserer i dag i et prismønster: Dal (billig midt på dagen), Topp (dyrt midt på dagen), Dobbel dal (W-form), Dobbel topp (M-form), Flat, Stigende, Fallende eller Blandet. Attributter inkluderer konfidensverdi (0–1), variasjonskoeffisient, knepunktstider og dagsegmenter.", + "usage_tips": "Bruk dagens mønster til å flytte forbruk. Daldag: kjør oppvaskmaskin, vaskemaskin eller lad elbilen rundt billige middagstimer. Toppdag: kjør apparater tidlig morgen eller sent kveld. Bruk valley_start og valley_end for presise automatikaer." + }, + "day_pattern_tomorrow": { + "description": "Oppdaget prismønster for morgendagens strømpriser", + "long_description": "Klassifiserer i morgen (når data er tilgjengelig, typisk etter kl. 13) i et prismønster med samme algoritme som i dag. Attributtene valley_start/valley_end eller peak_start/peak_end gir knepunktstider.", + "usage_tips": "Sett opp kveldsautomasjonar som leser morgendagens mønster og forhåndskonfigurerer varmepumpe, billader eller varmtvannsberedere. Kombiner med tomorrow_data_available-binærsensoren." + }, + "chart_data_export": { + "description": "Dataeksport for dashboardintegrasjoner", + "long_description": "Denne sensoren kaller get_chartdata-tjenesten med din konfigurerte YAML-konfigurasjon og eksponerer resultatet som entitetsattributter. Status viser 'ready' når data er tilgjengelig, 'error' ved feil, eller 'pending' før første kall. Perfekt for dashboardintegrasjoner som ApexCharts som trenger å lese prisdata fra entitetsattributter.", + "usage_tips": "Konfigurer YAML-parametrene i integrasjonsinnstillingene for å matche get_chartdata-tjenestekallet ditt. Sensoren vil automatisk oppdatere når prisdata oppdateres (typisk etter midnatt og når morgendagens data ankommer). Få tilgang til tjenesteresponsdataene direkte fra entitetens attributter - strukturen matcher nøyaktig det get_chartdata returnerer." + }, + "chart_metadata": { + "description": "Lettvekts metadata for diagramkonfigurasjon", + "long_description": "Gir essensielle diagramkonfigurasjonsverdier som sensorattributter. Nyttig for ethvert diagramkort som trenger Y-aksegrenser. Sensoren kaller get_chartdata med kun-metadata-modus (ingen databehandling) og trekker ut: yaxis_min, yaxis_max (foreslått Y-akseområde for optimal skalering). Status reflekterer tjenestekallresultatet: 'ready' ved suksess, 'error' ved feil, 'pending' under initialisering.", + "usage_tips": "Konfigurer via configuration.yaml under tibber_prices.chart_metadata_config (valgfritt: day, subunit_currency, resolution). Sensoren oppdateres automatisk når prisdata endres. Få tilgang til metadata fra attributter: yaxis_min, yaxis_max. Bruk med config-template-card eller ethvert verktøy som leser entitetsattributter - perfekt for dynamisk diagramkonfigurasjon uten manuelle beregninger." + }, + "current_interval_price_rank_today": { + "description": "Hvor nåværende intervallpris plasserer seg i dagens rangering — som prosentilrang (0 % = billigste øyeblikk)", + "long_description": "Viser hvor billig eller dyr prisen for det gjældende kvarter er sammenlignet med alle 96 kvarterstimer i dag. 0 % betyr at dette er det billigste øyeblikket i dag. 50 % betyr at halvparten av dagens tidsluker er billigere. ca. 99 % betyr det dyreste tidssluket i dag. Formel: antall billigere tidsluker ÷ totalt antall × 100. Attributter: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Ideelt for automatiseringer: 'Hvis current_interval_price_rank_today < 25, start oppvaskmaskinen'. A value of 0 garanterer at du er på det billigste tidssluket i dag." + }, + "current_interval_price_rank_tomorrow": { + "description": "Prosentilrang for gjældende intervallpris i morgendagens rangering (0 % = billigste av i morgen)", + "long_description": "Viser hvordan gjældende intervallpris sammenlignes med alle 96 kvarterstimer i morgen. 0 % betyr at gjældende pris er billigere enn alle morgendagens tidsluker. Returnerer 'Ukjent' til morgendagens data er tilgjengelig (vanligvis etter kl. 13:00). Attributter: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Bruk for å avgjøre om det er verdt å vente: 'Hvis current_interval_price_rank_tomorrow < 10, finnes det enda billigere tidsluker i morgen — utsett oppgaven'." + }, + "current_interval_price_rank_today_tomorrow": { + "description": "Prosentilrang for gjældende intervallpris over i dag+i morgen samlet (0 % = billigste i to-dagers-vinduet)", + "long_description": "Viser hvor billig eller dyr gjældende intervallpris er sammenlignet med alle tidsluker over i dag og i morgen samlet (opptil 192 kvarterstimer). Fæller tilbake til kun i dag når morgendagens data ikke er tilgjengelig. Attributter: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Det bredeste signalet for 'er det nå et godt tidspunkt?'. Bruk 'Hvis current_interval_price_rank_today_tomorrow < 20, kjør energikrevende oppgave nå'." + }, + "next_interval_price_rank_today": { + "description": "Prosentilrang for neste intervalls pris i dagens rangering (0 % = billigste øyeblikk i dag)", + "long_description": "Viser prosentilrangen for det kommende kvarter innenfor dagens 96 tidsluker. Gir forhåndsvisning før neste intervall begynner. Attributter: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "For forberedelse: 'Hvis next_interval_price_rank_today < 15, start forvarming nå så enheten kjører i neste billige tidsluke'." + }, + "next_interval_price_rank_today_tomorrow": { + "description": "Prosentilrang for neste intervalls pris over i dag+i morgen samlet (0 % = billigste i to-dagers-vinduet)", + "long_description": "Viser prosentilrangen for det kommende kvarter innenfor det kombinerte i dag+i morgen-bassenget (opptil 192 tidsluker). Fæller tilbake til kun i dag. Attributter: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Bredeste fremtidsvisning: 'Hvis next_interval_price_rank_today_tomorrow < 10, er neste intervall blant de billigste i to-dagers-vinduet'." + }, + "previous_interval_price_rank_today": { + "description": "Prosentilrang for forrige intervalls pris i dagens rangering (0 % = billigste øyeblikk i dag)", + "long_description": "Viser prosentilrangen for det nettopp avsluttede kvarter innenfor dagens 96 tidsluker. Nyttig for logging. Attributter: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "For retrospektive automatiseringer: 'Registrer prisnivyå for forrige intervall i energirapporter'." + }, + "previous_interval_price_rank_today_tomorrow": { + "description": "Prosentilrang for forrige intervalls pris over i dag+i morgen samlet (0 % = billigste i to-dagers-vinduet)", + "long_description": "Viser prosentilrangen for det nettopp avsluttede kvarter innenfor det kombinerte i dag+i morgen-bassenget (opptil 192 tidsluker). Fæller tilbake til kun i dag. Attributter: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "For retrospektive sammenligninger over et to-dagers-vindu." + }, + "current_hour_price_rank_today": { + "description": "Prosentilrang for glidende timegjennomsnittpris i dagens rangering (0 % = billigste time i dag)", + "long_description": "Viser plasseringen til det glidende 5-intervall-gjennomsnittet (2 intervaller før + gjældende + 2 etter, ca. 1 time) i dagens prisrangering. Jevner ut korte pristopper. Attributter: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "For oppgaver som tar omtrent en time: 'Hvis current_hour_price_rank_today < 20, er dette en billig time — start vaskemaskinen'." + }, + "current_hour_price_rank_today_tomorrow": { + "description": "Glidende timegjennomsnittprisrang over i dag+i morgen samlet (0 % = billigste time i to-dagers-vinduet)", + "long_description": "Viser plasseringen til det glidende 5-intervall-gjennomsnittet (±2 intervaller, ca. 1 time) i den kombinerte i dag+i morgen-rangeringen (opptil 192 tidsluker). Fæller tilbake til kun i dag. Attributter: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Bredeste timesignal: 'Hvis current_hour_price_rank_today_tomorrow < 15, er dette en av de billigste timene i to-dagers-vinduet'." + }, + "next_hour_price_rank_today": { + "description": "Prosentilrang for neste glidende timegjennomsnittpris i dagens rangering (0 % = billigste time i dag)", + "long_description": "Viser plasseringen til det 5-intervall-gjennomsnittet sentrert på neste intervall i dagens prisrangering. Muliggjør planlegging en time frem i tid. Attributter: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Forutse en time frem: 'Hvis next_hour_price_rank_today < 20, er den kommende timen billig — start en oppgave nå'." + }, + "next_hour_price_rank_today_tomorrow": { + "description": "Neste glidende timegjennomsnittprisrang over i dag+i morgen samlet (0 % = billigste time i to-dagers-vinduet)", + "long_description": "Viser plasseringen til det 5-intervall-gjennomsnittet sentrert på neste intervall i den kombinerte i dag+i morgen-rangeringen (opptil 192 tidsluker). Fæller tilbake til kun i dag. Attributter: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Bredeste timefremtidsvisning: 'Hvis next_hour_price_rank_today_tomorrow < 10, er den kommende timen blant de billigste i to-dagers-vinduet'." + } + }, + "binary_sensor": { + "tomorrow_data_available": { + "description": "Om prisdata for morgendagen er tilgjengelig", + "long_description": "Indikerer om prisdata for neste dag er mottatt fra Tibber", + "usage_tips": "Bruk dette til å sjekke om morgendagens priser er tilgjengelig for planlegging" + }, + "peak_price_period": { + "description": "Om nåværende intervall er blant de dyreste på dagen", + "long_description": "Slår seg på når nåværende pris er i topp 20% av dagens priser", + "usage_tips": "Bruk dette til å unngå å kjøre høyforbruksapparater i dyre intervaller" + }, + "best_price_period": { + "description": "Om nåværende intervall er blant de billigste på dagen", + "long_description": "Slår seg på når nåværende pris er i bunn 20% av dagens priser", + "usage_tips": "Bruk dette til å kjøre høyforbruksapparater i de billigste intervallene" + }, + "connection": { + "description": "Om tilkoblingen til Tibber API fungerer", + "long_description": "Indikerer om integrasjonen kan koble til Tibber API", + "usage_tips": "Bruk dette til å overvåke tilkoblingsstatusen til Tibber API" + }, + "has_ventilation_system": { + "description": "Om boligen din har ventilasjonsanlegg", + "long_description": "Indikerer om et ventilasjonsanlegg er registrert for boligen din i Tibber-kontoen. Ventilasjonsanlegg kan være betydelige strømforbrukere som kan dra nytte av smart planlegging.", + "usage_tips": "Bruk dette til å aktivere ventilasjonsrelaterte automatiseringer eller energiovervåking. Hvis aktivt, vurder å planlegge ventilasjon i lavprisperioder." + }, + "realtime_consumption_enabled": { + "description": "Om sanntidsforbruksovervåking er aktiv", + "long_description": "Indikerer om sanntidsovervåking av strømforbruk er aktivert og aktiv for ditt Tibber-hjem. Dette krever kompatibel målehardware (f.eks. Tibber Pulse) og et aktivt abonnement.", + "usage_tips": "Bruk dette for å bekrefte at sanntidsforbruksdata er tilgjengelig. Aktiver varsler hvis dette endres til 'av' uventet, noe som indikerer potensielle maskinvare- eller tilkoblingsproblemer." + } + }, + "number": { + "best_price_flex_override": { + "description": "Maksimal prosent over daglig minimumspris som intervaller kan ha og fortsatt kvalifisere som 'beste pris'. Anbefalt: 15-20 med lemping aktivert (standard), eller 25-35 uten lemping. Maksimum: 50 (tak for pålitelig periodedeteksjon).", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Fleksibilitet'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", + "usage_tips": "Aktiver denne entiteten for å dynamisk justere beste pris-deteksjon via automatiseringer, f.eks. høyere fleksibilitet for kritiske laster eller strengere krav for fleksible apparater." + }, + "best_price_min_distance_override": { + "description": "Minimum prosentavstand under daglig gjennomsnitt. Intervaller må være så langt under gjennomsnittet for å kvalifisere som 'beste pris'. Hjelper med å skille ekte lavprisperioder fra gjennomsnittspriser.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimumsavstand'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", + "usage_tips": "Øk verdien for strengere beste pris-kriterier. Reduser hvis for få perioder blir oppdaget." + }, + "best_price_min_period_length_override": { + "description": "Minimum periodelengde i 15-minutters intervaller. Perioder kortere enn dette blir ikke rapportert. Eksempel: 2 = minimum 30 minutter.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimum periodelengde'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", + "usage_tips": "Juster til typisk apparatkjøretid: 2 (30 min) for hurtigprogrammer, 4-8 (1-2 timer) for normale sykluser, 8+ for lange ECO-programmer." + }, + "best_price_min_periods_override": { + "description": "Minimum antall beste pris-perioder å finne daglig. Når lemping er aktivert, vil systemet automatisk justere kriterier for å oppnå dette antallet.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimum perioder'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", + "usage_tips": "Sett dette til antall tidskritiske oppgaver du har daglig. Eksempel: 2 for to vaskemaskinkjøringer." + }, + "best_price_relaxation_attempts_override": { + "description": "Antall forsøk på å gradvis lempe kriteriene for å oppnå minimum periodeantall. Hvert forsøk øker fleksibiliteten med 3 prosent. Ved 0 brukes kun basiskriterier.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Lemping forsøk'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", + "usage_tips": "Høyere verdier gjør periodedeteksjon mer adaptiv for dager med stabile priser. Sett til 0 for å tvinge strenge kriterier uten lemping." + }, + "best_price_gap_count_override": { + "description": "Maksimalt antall dyrere intervaller som kan tillates mellom billige intervaller mens de fortsatt regnes som en sammenhengende periode. Ved 0 må billige intervaller være påfølgende.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Gaptoleranse'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", + "usage_tips": "Øk dette for apparater med variabel last (f.eks. varmepumper) som kan tåle korte dyrere intervaller. Sett til 0 for kontinuerlige billige perioder." + }, + "peak_price_flex_override": { + "description": "Maksimal prosent under daglig maksimumspris som intervaller kan ha og fortsatt kvalifisere som 'topppris'. Samme anbefalinger som for beste pris-fleksibilitet.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Fleksibilitet'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", + "usage_tips": "Bruk dette for å justere topppris-terskelen ved kjøretid for automatiseringer som unngår forbruk under dyre timer." + }, + "peak_price_min_distance_override": { + "description": "Minimum prosentavstand over daglig gjennomsnitt. Intervaller må være så langt over gjennomsnittet for å kvalifisere som 'topppris'.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimumsavstand'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", + "usage_tips": "Øk verdien for kun å fange ekstreme pristopper. Reduser for å inkludere flere høypristider." + }, + "peak_price_min_period_length_override": { + "description": "Minimum periodelengde i 15-minutters intervaller for topppriser. Kortere pristopper rapporteres ikke som perioder.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimum periodelengde'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", + "usage_tips": "Kortere verdier fanger korte pristopper. Lengre verdier fokuserer på vedvarende høyprisperioder." + }, + "peak_price_min_periods_override": { + "description": "Minimum antall topppris-perioder å finne daglig.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Minimum perioder'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", + "usage_tips": "Sett dette basert på hvor mange høyprisperioder du vil fange per dag for automatiseringer." + }, + "peak_price_relaxation_attempts_override": { + "description": "Antall forsøk på å lempe kriteriene for å oppnå minimum antall topppris-perioder.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Lemping forsøk'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", + "usage_tips": "Øk dette hvis ingen perioder blir funnet på dager med stabile priser. Sett til 0 for å tvinge strenge kriterier." + }, + "peak_price_gap_count_override": { + "description": "Maksimalt antall billigere intervaller som kan tillates mellom dyre intervaller mens de fortsatt regnes som en topppris-periode.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Gaptoleranse'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", + "usage_tips": "Høyere verdier fanger lengre høyprisperioder selv med korte prisdykk. Sett til 0 for strengt sammenhengende topppriser." + } + }, + "switch": { + "best_price_enable_relaxation_override": { + "description": "Når aktivert, lempes kriteriene automatisk for å oppnå minimum periodeantall. Når deaktivert, rapporteres kun perioder som oppfyller strenge kriterier (muligens null perioder på dager med stabile priser).", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Oppnå minimumsantall'-innstillingen fra alternativer-dialogen for beste pris-periodeberegninger.", + "usage_tips": "Aktiver dette for garanterte daglige automatiseringsmuligheter. Deaktiver hvis du kun vil ha virkelig billige perioder, selv om det betyr ingen perioder på noen dager." + }, + "peak_price_enable_relaxation_override": { + "description": "Når aktivert, lempes kriteriene automatisk for å oppnå minimum periodeantall. Når deaktivert, rapporteres kun ekte pristopper.", + "long_description": "Når denne entiteten er aktivert, overstyrer verdien 'Oppnå minimumsantall'-innstillingen fra alternativer-dialogen for topppris-periodeberegninger.", + "usage_tips": "Aktiver dette for konsistente topppris-varsler. Deaktiver for kun å fange ekstreme pristopper." + } + }, + "home_types": { + "APARTMENT": "Leilighet", + "ROWHOUSE": "Rekkehus", + "HOUSE": "Hus", + "COTTAGE": "Hytte" + }, + "time_units": { + "day": "{count} dag", + "days": "{count} dager", + "hour": "{count} time", + "hours": "{count} timer", + "minute": "{count} minutt", + "minutes": "{count} minutter", + "ago": "{parts} siden", + "now": "nå" + }, + "attribution": "Data levert av Tibber" } diff --git a/custom_components/tibber_prices/custom_translations/nl.json b/custom_components/tibber_prices/custom_translations/nl.json index d183a87..3c9a562 100644 --- a/custom_components/tibber_prices/custom_translations/nl.json +++ b/custom_components/tibber_prices/custom_translations/nl.json @@ -1,653 +1,693 @@ { - "apexcharts": { - "title_rating_level": "Prijsfasen dagverloop", - "title_level": "Prijsniveau", - "hourly_suffix": "(Ø per uur)", - "best_price_period_name": "Beste prijsperiode", - "peak_price_period_name": "Piekprijsperiode", - "notification": { - "metadata_sensor_unavailable": { - "title": "Tibber Prices: ApexCharts YAML gegenereerd met beperkte functionaliteit", - "message": "Je hebt zojuist een ApexCharts-kaartconfiguratie gegenereerd via Ontwikkelaarstools. De grafiek-metadata-sensor is momenteel uitgeschakeld, dus de gegenereerde YAML toont alleen **basisfunctionaliteit** (auto-schaal as, vaste verloop op 50%).\n\n**Voor volledige functionaliteit** (geoptimaliseerde schaling, dynamische verloopkleuren):\n1. [Open Tibber Prices-integratie](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Schakel de 'Chart Metadata'-sensor in\n3. **Genereer de YAML opnieuw** via Ontwikkelaarstools\n4. **Vervang de oude YAML** in je dashboard door de nieuwe versie\n\n⚠️ Alleen de sensor inschakelen is niet genoeg - je moet de YAML opnieuw genereren en vervangen!" - }, - "missing_cards": { - "title": "Tibber Prices: ApexCharts YAML kan niet worden gebruikt", - "message": "Je hebt zojuist een ApexCharts-kaartconfiguratie gegenereerd via Ontwikkelaarstools, maar de gegenereerde YAML **zal niet werken** omdat vereiste aangepaste kaarten ontbreken.\n\n**Ontbrekende kaarten:**\n{cards}\n\n**Om de gegenereerde YAML te gebruiken:**\n1. Klik op de bovenstaande links om de ontbrekende kaarten te installeren vanuit HACS\n2. Herstart Home Assistant (soms nodig)\n3. **Genereer de YAML opnieuw** via Ontwikkelaarstools\n4. Voeg de YAML toe aan je dashboard\n\n⚠️ De huidige YAML-code werkt niet totdat alle kaarten zijn geïnstalleerd!" - } - } + "apexcharts": { + "title_rating_level": "Prijsfasen dagverloop", + "title_level": "Prijsniveau", + "hourly_suffix": "(Ø per uur)", + "best_price_period_name": "Beste prijsperiode", + "peak_price_period_name": "Piekprijsperiode", + "notification": { + "metadata_sensor_unavailable": { + "title": "Tibber Prices: ApexCharts YAML gegenereerd met beperkte functionaliteit", + "message": "Je hebt zojuist een ApexCharts-kaartconfiguratie gegenereerd via Ontwikkelaarstools. De grafiek-metadata-sensor is momenteel uitgeschakeld, dus de gegenereerde YAML toont alleen **basisfunctionaliteit** (auto-schaal as, vaste verloop op 50%).\n\n**Voor volledige functionaliteit** (geoptimaliseerde schaling, dynamische verloopkleuren):\n1. [Open Tibber Prices-integratie](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Schakel de 'Chart Metadata'-sensor in\n3. **Genereer de YAML opnieuw** via Ontwikkelaarstools\n4. **Vervang de oude YAML** in je dashboard door de nieuwe versie\n\n⚠️ Alleen de sensor inschakelen is niet genoeg - je moet de YAML opnieuw genereren en vervangen!" + }, + "missing_cards": { + "title": "Tibber Prices: ApexCharts YAML kan niet worden gebruikt", + "message": "Je hebt zojuist een ApexCharts-kaartconfiguratie gegenereerd via Ontwikkelaarstools, maar de gegenereerde YAML **zal niet werken** omdat vereiste aangepaste kaarten ontbreken.\n\n**Ontbrekende kaarten:**\n{cards}\n\n**Om de gegenereerde YAML te gebruiken:**\n1. Klik op de bovenstaande links om de ontbrekende kaarten te installeren vanuit HACS\n2. Herstart Home Assistant (soms nodig)\n3. **Genereer de YAML opnieuw** via Ontwikkelaarstools\n4. Voeg de YAML toe aan je dashboard\n\n⚠️ De huidige YAML-code werkt niet totdat alle kaarten zijn geïnstalleerd!" + } + } + }, + "sensor": { + "current_interval_price": { + "description": "De huidige elektriciteitsprijs per kWh", + "long_description": "Toont de huidige prijs per kWh van je Tibber-abonnement", + "usage_tips": "Gebruik dit om prijzen bij te houden of om automatiseringen te maken die worden uitgevoerd wanneer elektriciteit goedkoop is" }, - "sensor": { - "current_interval_price": { - "description": "De huidige elektriciteitsprijs per kWh", - "long_description": "Toont de huidige prijs per kWh van je Tibber-abonnement", - "usage_tips": "Gebruik dit om prijzen bij te houden of om automatiseringen te maken die worden uitgevoerd wanneer elektriciteit goedkoop is" - }, - "current_interval_price_base": { - "description": "Huidige elektriciteitsprijs in hoofdvaluta (EUR/kWh, NOK/kWh, enz.) voor Energie-dashboard", - "long_description": "Toont de huidige prijs per kWh in hoofdvaluta-eenheden (bijv. EUR/kWh in plaats van ct/kWh, NOK/kWh in plaats van øre/kWh). Deze sensor is speciaal ontworpen voor gebruik met het Energie-dashboard van Home Assistant, dat prijzen in standaard valuta-eenheden vereist.", - "usage_tips": "Gebruik deze sensor bij het configureren van het Energie-dashboard onder Instellingen → Dashboards → Energie. Selecteer deze sensor als 'Entiteit met huidige prijs' om automatisch je energiekosten te berekenen. Het Energie-dashboard vermenigvuldigt je energieverbruik (kWh) met deze prijs om totale kosten weer te geven." - }, - "next_interval_price": { - "description": "De volgende interval elektriciteitsprijs per kWh", - "long_description": "Toont de prijs voor het volgende 15-minuten interval van je Tibber-abonnement", - "usage_tips": "Gebruik dit om je voor te bereiden op aanstaande prijswijzigingen of om apparaten te plannen om tijdens goedkopere intervallen te draaien" - }, - "previous_interval_price": { - "description": "De vorige interval elektriciteitsprijs per kWh", - "long_description": "Toont de prijs voor het vorige 15-minuten interval van je Tibber-abonnement", - "usage_tips": "Gebruik dit om eerdere prijswijzigingen te bekijken of prijsgeschiedenis bij te houden" - }, - "current_hour_average_price": { - "description": "Voortschrijdend 5-interval gemiddelde prijs per kWh", - "long_description": "Toont de gemiddelde prijs per kWh berekend uit 5 intervallen: 2 vorige, huidige en 2 volgende intervallen (ongeveer 75 minuten totaal). Dit biedt een vloeiende 'uurprijs' die zich aanpast naarmate de tijd verstrijkt, in plaats van vast te zitten aan klokuren.", - "usage_tips": "Gebruik dit voor een stabielere prijsindicator die korte schommelingen afvlakt terwijl deze nog steeds reageert op prijswijzigingen. Beter dan vaste uurprijzen voor verbruiksbeslissingen." - }, - "next_hour_average_price": { - "description": "Voortschrijdend 5-interval gemiddelde prijs voor volgend uur per kWh", - "long_description": "Toont de gemiddelde prijs per kWh berekend uit 5 intervallen gecentreerd één uur vooruit: ongeveer intervallen +2 tot +6 vanaf nu (dekking van minuten +30 tot +105). Dit biedt een vooruitkijkende vloeiende 'uurprijs' voor verbruiksplanning.", - "usage_tips": "Gebruik dit om prijswijzigingen in het volgende uur te anticiperen. Handig voor het plannen van activiteiten met hoog verbruik zoals het opladen van elektrische voertuigen, het draaien van vaatwassers of verwarmingssystemen." - }, - "lowest_price_today": { - "description": "De laagste elektriciteitsprijs voor vandaag per kWh", - "long_description": "Toont de laagste prijs per kWh voor de huidige dag van je Tibber-abonnement", - "usage_tips": "Gebruik dit om huidige prijzen te vergelijken met de goedkoopste tijd van de dag" - }, - "highest_price_today": { - "description": "De hoogste elektriciteitsprijs voor vandaag per kWh", - "long_description": "Toont de hoogste prijs per kWh voor de huidige dag van je Tibber-abonnement", - "usage_tips": "Gebruik dit om te voorkomen dat je apparaten draait tijdens piekprijstijden" - }, - "average_price_today": { - "description": "Typische elektriciteitsprijs voor vandaag per kWh (configureerbare weergave)", - "long_description": "Toont de prijs per kWh voor de huidige dag van je Tibber-abonnement. **Standaard toont de status de mediaan** (resistent tegen extreme prijspieken, toont typisch prijsniveau). Je kunt dit wijzigen in de integratie-instellingen om het rekenkundig gemiddelde te tonen. De alternatieve waarde is beschikbaar als attribuut.", - "usage_tips": "Gebruik dit als basislijn voor het vergelijken van huidige prijzen. Voor berekeningen gebruik: {{ state_attr('sensor.average_price_today', 'price_mean') }}" - }, - "lowest_price_tomorrow": { - "description": "De laagste elektriciteitsprijs voor morgen per kWh", - "long_description": "Toont de laagste prijs per kWh voor morgen van je Tibber-abonnement. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", - "usage_tips": "Gebruik dit om energie-intensieve activiteiten te plannen voor de goedkoopste tijd van morgen. Perfect voor vooraf plannen van verwarming, EV-laden of apparaten." - }, - "highest_price_tomorrow": { - "description": "De hoogste elektriciteitsprijs voor morgen per kWh", - "long_description": "Toont de hoogste prijs per kWh voor morgen van je Tibber-abonnement. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", - "usage_tips": "Gebruik dit om te voorkomen dat je apparaten draait tijdens de piekprijstijden van morgen. Handig voor het plannen rond dure perioden." - }, - "average_price_tomorrow": { - "description": "Typische elektriciteitsprijs voor morgen per kWh (configureerbare weergave)", - "long_description": "Toont de prijs per kWh voor morgen van je Tibber-abonnement. **Standaard toont de status de mediaan** (resistent tegen extreme prijspieken). Je kunt dit wijzigen in de integratie-instellingen om het rekenkundig gemiddelde te tonen. De alternatieve waarde is beschikbaar als attribuut. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", - "usage_tips": "Gebruik dit als basislijn voor het vergelijken van prijzen van morgen en het plannen van verbruik. Vergelijk met de mediaan van vandaag om te zien of morgen over het algemeen duurder of goedkoper wordt." - }, - "yesterday_price_level": { - "description": "Geaggregeerd prijsniveau voor gisteren", - "long_description": "Toont het geaggregeerde prijsniveau voor alle intervallen van gisteren. Gebruikt dezelfde logica als de uursensoren om het totale prijsniveau voor de hele dag te bepalen.", - "usage_tips": "Gebruik dit om de algemene prijssituatie van gisteren te begrijpen. Vergelijk met vandaag om dagelijkse trends te zien." - }, - "today_price_level": { - "description": "Geaggregeerd prijsniveau voor vandaag", - "long_description": "Toont het geaggregeerde prijsniveau voor alle intervallen van vandaag. Gebruikt dezelfde logica als de uursensoren om het totale prijsniveau voor de hele dag te bepalen.", - "usage_tips": "Gebruik dit om de prijssituatie van vandaag in één oogopslag te begrijpen. Handig voor snelle beoordelingen of vandaag over het algemeen goedkoop of duur is." - }, - "tomorrow_price_level": { - "description": "Geaggregeerd prijsniveau voor morgen", - "long_description": "Toont het geaggregeerde prijsniveau voor alle intervallen van morgen. Gebruikt dezelfde logica als de uursensoren om het totale prijsniveau voor de hele dag te bepalen. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", - "usage_tips": "Gebruik dit om de prijssituatie van morgen te begrijpen. Vergelijk met vandaag om te zien of morgen gunstiger of ongunstiger zal zijn voor energieverbruik." - }, - "yesterday_price_rating": { - "description": "Geaggregeerde prijsbeoordeling voor gisteren", - "long_description": "Toont de geaggregeerde prijsbeoordeling (laag/normaal/hoog) voor alle intervallen van gisteren, gebaseerd op jouw geconfigureerde drempelwaarden. Gebruikt dezelfde logica als de uursensoren om de totale beoordeling voor de hele dag te bepalen.", - "usage_tips": "Gebruik dit om de prijssituatie van gisteren te begrijpen ten opzichte van jouw persoonlijke drempelwaarden. Vergelijk met vandaag voor trendanalyse." - }, - "today_price_rating": { - "description": "Geaggregeerde prijsbeoordeling voor vandaag", - "long_description": "Toont de geaggregeerde prijsbeoordeling (laag/normaal/hoog) voor alle intervallen van vandaag, gebaseerd op jouw geconfigureerde drempelwaarden. Gebruikt dezelfde logica als de uursensoren om de totale beoordeling voor de hele dag te bepalen.", - "usage_tips": "Gebruik dit om snel de prijssituatie van vandaag te beoordelen ten opzichte van jouw persoonlijke drempelwaarden. Helpt bij het nemen van verbruiksbeslissingen voor de huidige dag." - }, - "tomorrow_price_rating": { - "description": "Geaggregeerde prijsbeoordeling voor morgen", - "long_description": "Toont de geaggregeerde prijsbeoordeling (laag/normaal/hoog) voor alle intervallen van morgen, gebaseerd op jouw geconfigureerde drempelwaarden. Gebruikt dezelfde logica als de uursensoren om de totale beoordeling voor de hele dag te bepalen. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", - "usage_tips": "Gebruik dit om het energieverbruik van morgen te plannen op basis van jouw persoonlijke prijsdrempelwaarden. Vergelijk met vandaag om te beslissen of je verbruik naar morgen moet verschuiven of vandaag energie moet gebruiken." - }, - "trailing_price_average": { - "description": "Typische elektriciteitsprijs voor de afgelopen 24 uur per kWh (configureerbare weergave)", - "long_description": "Toont de prijs per kWh berekend uit de afgelopen 24 uur. **Standaard toont de status de mediaan** (resistent tegen extreme prijspieken, toont typisch prijsniveau). Je kunt dit wijzigen in de integratie-instellingen om het rekenkundig gemiddelde te tonen. De alternatieve waarde is beschikbaar als attribuut. Wordt elke 15 minuten bijgewerkt.", - "usage_tips": "Gebruik de statuswaarde om het typische huidige prijsniveau te zien. Voor kostenberekeningen gebruik: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" - }, - "leading_price_average": { - "description": "Typische elektriciteitsprijs voor de komende 24 uur per kWh (configureerbare weergave)", - "long_description": "Toont de prijs per kWh berekend uit de komende 24 uur. **Standaard toont de status de mediaan** (resistent tegen extreme prijspieken, toont verwacht prijsniveau). Je kunt dit wijzigen in de integratie-instellingen om het rekenkundig gemiddelde te tonen. De alternatieve waarde is beschikbaar als attribuut.", - "usage_tips": "Gebruik de statuswaarde om het typische toekomstige prijsniveau te zien. Voor kostenberekeningen gebruik: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" - }, - "trailing_price_min": { - "description": "De minimale elektriciteitsprijs voor de afgelopen 24 uur per kWh", - "long_description": "Toont de minimumprijs per kWh van de afgelopen 24 uur (voortschrijdend minimum) van je Tibber-abonnement. Dit geeft de laagste prijs die in de afgelopen 24 uur is gezien.", - "usage_tips": "Gebruik dit om de beste prijsmogelijkheid te zien die je in de afgelopen 24 uur had en vergelijk deze met huidige prijzen." - }, - "trailing_price_max": { - "description": "De maximale elektriciteitsprijs voor de afgelopen 24 uur per kWh", - "long_description": "Toont de maximumprijs per kWh van de afgelopen 24 uur (voortschrijdend maximum) van je Tibber-abonnement. Dit geeft de hoogste prijs die in de afgelopen 24 uur is gezien.", - "usage_tips": "Gebruik dit om de piekprijs in de afgelopen 24 uur te zien en prijsvolatiliteit te beoordelen." - }, - "leading_price_min": { - "description": "De minimale elektriciteitsprijs voor de komende 24 uur per kWh", - "long_description": "Toont de minimumprijs per kWh van de komende 24 uur (vooruitlopend minimum) van je Tibber-abonnement. Dit geeft de laagste prijs die wordt verwacht in de komende 24 uur op basis van prognosegegevens.", - "usage_tips": "Gebruik dit om de beste prijsmogelijkheid te identificeren die eraan komt en plan energie-intensieve taken dienovereenkomstig." - }, - "leading_price_max": { - "description": "De maximale elektriciteitsprijs voor de komende 24 uur per kWh", - "long_description": "Toont de maximumprijs per kWh van de komende 24 uur (vooruitlopend maximum) van je Tibber-abonnement. Dit geeft de hoogste prijs die wordt verwacht in de komende 24 uur op basis van prognosegegevens.", - "usage_tips": "Gebruik dit om te voorkomen dat je apparaten draait tijdens aanstaande piekprijsperioden." - }, - "current_interval_price_level": { - "description": "De huidige prijsniveauclassificatie", - "long_description": "Toont de classificatie van Tibber van de huidige prijs vergeleken met historische prijzen", - "usage_tips": "Gebruik dit om automatiseringen te maken op basis van relatieve prijsniveaus in plaats van absolute prijzen" - }, - "next_interval_price_level": { - "description": "Prijsniveau voor het volgende 15-minuten interval", - "long_description": "Toont de prijsniveauclassificatie voor het komende interval. Helpt korte-termijn prijswijzigingen te anticiperen voor directe planning.", - "usage_tips": "Gebruik voor snelle beslissingen over het starten of stoppen van apparaten met hoog vermogen in de komende minuten." - }, - "previous_interval_price_level": { - "description": "Prijsniveau voor het vorige 15-minuten interval", - "long_description": "Toont de prijsniveauclassificatie voor het laatste interval. Nuttig voor historische vergelijking en begrip van recente prijstrends.", - "usage_tips": "Gebruik om huidige vs recente prijsniveaus te vergelijken of verbruikspatronen te analyseren tegen historische prijzen." - }, - "current_hour_price_level": { - "description": "Geaggregeerd prijsniveau voor huidig voortschrijdend uur (5 intervallen)", - "long_description": "Toont het mediane prijsniveau over 5 intervallen (2 ervoor, huidig, 2 erna) dat ongeveer 75 minuten beslaat. Biedt een stabielere prijsniveauindicator die kortetermijnschommelingen afvlakt.", - "usage_tips": "Gebruik voor planningsbeslissingen op middellange termijn waarbij je niet wilt reageren op korte prijspieken of -dalingen." - }, - "next_hour_price_level": { - "description": "Geaggregeerd prijsniveau voor volgend voortschrijdend uur (5 intervallen vooruit)", - "long_description": "Toont het mediane prijsniveau over 5 intervallen gecentreerd één uur vooruit. Helpt verbruik te plannen op basis van aanstaande prijstrends in plaats van momentane toekomstige prijzen.", - "usage_tips": "Gebruik om activiteiten voor het volgende uur te plannen op basis van een vloeiende prijsniveauprognose." - }, - "current_interval_price_rating": { - "description": "Hoe de prijs van het huidige interval zich verhoudt tot historische gegevens", - "long_description": "Toont hoe de prijs van het huidige interval zich verhoudt tot historische prijsgegevens als een percentage", - "usage_tips": "Een positief percentage betekent dat de huidige prijs boven het gemiddelde ligt, negatief betekent onder het gemiddelde" - }, - "next_interval_price_rating": { - "description": "Prijsbeoordeling voor het volgende 15-minuten interval", - "long_description": "Toont hoe de prijs van het volgende interval zich verhoudt tot het voortschrijdende 24-uurs gemiddelde. Helpt te anticiperen of aanstaande prijzen boven of onder de recente trend liggen.", - "usage_tips": "Gebruik om snelle beslissingen te nemen over het starten van activiteiten in het volgende interval op basis van relatieve prijspositie." - }, - "previous_interval_price_rating": { - "description": "Prijsbeoordeling voor het vorige 15-minuten interval", - "long_description": "Toont hoe de prijs van het laatste interval zich verhield tot het voortschrijdende gemiddelde. Nuttig voor het begrijpen van recent prijsgedrag.", - "usage_tips": "Gebruik voor het analyseren van hoe prijsbeoordelingen in de loop van de tijd veranderden of het valideren van eerdere verbruiksbeslissingen." - }, - "current_hour_price_rating": { - "description": "Geaggregeerde prijsbeoordeling voor huidig voortschrijdend uur (5 intervallen)", - "long_description": "Toont de gemiddelde beoordeling over 5 intervallen (2 ervoor, huidig, 2 erna). Gebaseerd op het gemiddelde procentuele verschil van het voortschrijdende 24u gemiddelde, wat een vloeiende beoordelingsindicator oplevert.", - "usage_tips": "Gebruik voor stabiele prijsbeoordeling op middellange termijn die niet overreageert op korte prijsafwijkingen." - }, - "next_hour_price_rating": { - "description": "Geaggregeerde prijsbeoordeling voor volgend voortschrijdend uur (5 intervallen vooruit)", - "long_description": "Toont de gemiddelde beoordeling voor 5 intervallen gecentreerd één uur vooruit. Helpt te begrijpen of het volgende uur over het algemeen boven of onder gemiddelde prijzen zal liggen.", - "usage_tips": "Gebruik om te beslissen of je een uur moet wachten voordat je activiteiten met hoog verbruik start." - }, - "next_avg_1h": { - "description": "Gemiddelde prijs voor het volgende 1 uur (alleen vooruit vanaf volgend interval)", - "long_description": "Vooruitkijkend gemiddelde: Toont gemiddelde van volgende 4 intervallen (1 uur) vanaf het VOLGENDE 15-minuten interval (niet inclusief huidig). Verschilt van current_hour_average_price die vorige intervallen omvat. Gebruik voor absolute prijsdrempelplanning.", - "usage_tips": "Absolute prijsdrempel: Start apparaten alleen wanneer het gemiddelde onder je maximaal acceptabele prijs blijft (bijv. onder 0,25 EUR/kWh). Combineer met trendsensor voor optimale timing. Let op: Dit is GEEN vervanging voor uurprijzen - gebruik current_hour_average_price daarvoor." - }, - "next_avg_2h": { - "description": "Gemiddelde prijs voor de volgende 2 uur", - "long_description": "Toont de gemiddelde prijs voor de volgende 8 intervallen (2 uur) vanaf het volgende 15-minuten interval.", - "usage_tips": "Absolute prijsdrempel: Stel een maximaal acceptabele gemiddelde prijs in voor standaard apparaten zoals wasmachines. Zorgt ervoor dat je nooit meer betaalt dan je limiet." - }, - "next_avg_3h": { - "description": "Gemiddelde prijs voor de volgende 3 uur", - "long_description": "Toont de gemiddelde prijs voor de volgende 12 intervallen (3 uur) vanaf het volgende 15-minuten interval.", - "usage_tips": "Absolute prijsdrempel: Voor EU Eco-programma's (vaatwassers, 3-4u looptijd). Start alleen wanneer 3u gemiddelde onder je prijslimiet is. Gebruik met trendsensor om beste moment binnen acceptabel prijsbereik te vinden." - }, - "next_avg_4h": { - "description": "Gemiddelde prijs voor de volgende 4 uur", - "long_description": "Toont de gemiddelde prijs voor de volgende 16 intervallen (4 uur) vanaf het volgende 15-minuten interval.", - "usage_tips": "Absolute prijsdrempel: Stel maximaal acceptabele prijs in voor warmtepompen of boilers. Voorkomt werking tijdens dure perioden ongeacht relatieve trends." - }, - "next_avg_5h": { - "description": "Gemiddelde prijs voor de volgende 5 uur", - "long_description": "Toont de gemiddelde prijs voor de volgende 20 intervallen (5 uur) vanaf het volgende 15-minuten interval.", - "usage_tips": "Absolute prijsdrempel: Brug tussen korte en lange termijn planning. Gebruik voor uitgebreide cycli met harde prijslimieten (bijv. zwembadpompen, uitgebreide verwarmingscycli)." - }, - "next_avg_6h": { - "description": "Gemiddelde prijs voor de volgende 6 uur", - "long_description": "Toont de gemiddelde prijs voor de volgende 24 intervallen (6 uur) vanaf het volgende 15-minuten interval.", - "usage_tips": "Absolute prijsdrempel: Avondplanning met prijslimieten. Plan taken alleen als 6u gemiddelde onder je maximaal acceptabele kosten blijft." - }, - "next_avg_8h": { - "description": "Gemiddelde prijs voor de volgende 8 uur", - "long_description": "Toont de gemiddelde prijs voor de volgende 32 intervallen (8 uur) vanaf het volgende 15-minuten interval.", - "usage_tips": "Absolute prijsdrempel: Nachtelijke bedieningsbeslissingen. Stel harde prijslimieten in voor nachtelijke belastingen (batterij opladen, thermische opslag). Overschrijd nooit je budget." - }, - "next_avg_12h": { - "description": "Gemiddelde prijs voor de volgende 12 uur", - "long_description": "Toont de gemiddelde prijs voor de volgende 48 intervallen (12 uur) vanaf het volgende 15-minuten interval.", - "usage_tips": "Absolute prijsdrempel: Strategische beslissingen met prijslimieten. Ga alleen door als 12u gemiddelde onder je maximaal acceptabele prijs is. Goed voor uitgestelde grote belastingen." - }, - "price_outlook_1h": { - "description": "Prijsvooruitzicht voor het volgende uur", - "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in het volgende uur (4 intervallen). Alle vooruitzicht-sensoren (1u–12u) delen hetzelfde uitgangspunt: je huidige prijs — ze verschillen alleen in venstergrootte. Stijgend/dalend bij ±3%, sterk bij ±9% (configureerbaar, volatiliteitsadaptief).", - "usage_tips": "Beslissingshulp: 'stijgend' = HANDEL NU, je huidige prijs is goedkoper dan het venstergemiddelde. 'dalend' = WACHT, het venstergemiddelde is goedkoper dan nu. 'stabiel' = timing maakt niet uit." - }, - "price_outlook_2h": { - "description": "Prijsvooruitzicht voor de volgende 2 uur", - "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 2 uur (8 intervallen). 'stijgend' = huidige prijs is onder het 2u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9% (configureerbaar, volatiliteitsadaptief).", - "usage_tips": "Apparaten: 'stijgend' = start nu, je hebt een goede prijs t.o.v. de volgende 2u. 'dalend' = betere gemiddelde prijzen komen, stel uit indien mogelijk. Combineer met price_trajectory_2h om te onderscheiden of prijzen nog dalen of al stijgen." - }, - "price_outlook_3h": { - "description": "Prijsvooruitzicht voor de volgende 3 uur", - "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 3 uur (12 intervallen). 'stijgend' = huidige prijs is onder het 3u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", - "usage_tips": "Eco-programma's: 'stijgend' = start de eco-cyclus nu, prijzen zijn gemiddeld hoger in het venster. 'dalend' = wacht, goedkoper gemiddeld venster komt." - }, - "price_outlook_4h": { - "description": "Prijsvooruitzicht voor de volgende 4 uur", - "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 4 uur (16 intervallen). 'stijgend' = huidige prijs is onder het 4u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", - "usage_tips": "Warmtepomp/batterij: 'stijgend' = laad nu, je zit op een relatief dieptepunt. Combineer met price_trajectory_4h om te zien of prijzen nog dalen of al stijgen." - }, - "price_outlook_5h": { - "description": "Prijsvooruitzicht voor de volgende 5 uur", - "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 5 uur (20 intervallen). 'stijgend' = huidige prijs is onder het 5u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", - "usage_tips": "Uitgebreide cycli: 'stijgend' of 'stabiel' = goed moment om te starten. 'dalend' = wacht als je planning het toelaat." - }, - "price_outlook_6h": { - "description": "Prijsvooruitzicht voor de volgende 6 uur", - "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 6 uur (24 intervallen). 'stijgend' = huidige prijs is onder het 6u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", - "usage_tips": "Avandbeslissingen: 'stijgend' = gebruik stroom nu terwijl het relatief goedkoop is. 'dalend' = avond-/nachtprijzen worden gemiddeld beter, wacht indien mogelijk." - }, - "price_outlook_8h": { - "description": "Prijsvooruitzicht voor de volgende 8 uur", - "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 8 uur (32 intervallen). 'stijgend' = huidige prijs is onder het 8u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", - "usage_tips": "Nachtplanning: 'stijgend' = vanavond/morgen wordt gemiddeld duurder, gebruik stroom nu. 'dalend' = nachtprijzen worden goedkoper, wachten loont." - }, - "price_outlook_12h": { - "description": "Prijsvooruitzicht voor de komende 12 uur", - "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de komende 12 uur (48 intervallen). 'stijgend' = huidige prijs is onder het 12u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", - "usage_tips": "Strategische beslissingen: 'stijgend' = je zit op een dieptepunt t.o.v. de volgende 12u, goed moment voor stroomintensieve taken. 'dalend' = aanzienlijk betere gemiddelde prijzen komen." - }, - "price_trajectory_2h": { - "description": "Prijsrichting binnen het volgende 2-uurs venster", - "long_description": "Compares the average of the first hour with the average of the second hour within the next 2-hour window. 'rising' = second half more expensive than first half. 'falling' = second half cheaper. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive) — revealing the upcoming reversal. 'outlook: falling + trajectory: rising' = you're AT the minimum, act now." - }, - "price_trajectory_3h": { - "description": "Prijsrichting binnen het volgende 3-uurs venster", - "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, prices are already recovering — start now." - }, - "price_trajectory_4h": { - "description": "Prijsrichting binnen het volgende 4-uurs venster", - "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Complements price_outlook_4h. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Heat pump charging: 'rising' = first half is cheaper, charge now. 'falling' = second half is cheaper, wait. Combine with outlook: if both rising, very strong signal to act now." - }, - "price_trajectory_5h": { - "description": "Prijsrichting binnen het volgende 5-uurs venster", - "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Long cycles: 'outlook: rising + trajectory: rising' = clear signal to start now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start." - }, - "price_trajectory_6h": { - "description": "Prijsrichting binnen het volgende 6-uurs venster", - "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the low." - }, - "price_trajectory_8h": { - "description": "Prijsrichting binnen het volgende 8-uurs venster", - "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half will be cheapest, delay start." - }, - "price_trajectory_12h": { - "description": "Prijsrichting binnen het volgende 12-uurs venster", - "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = afternoon/evening scheduling is better." - }, - "current_price_trend": { - "description": "Huidige prijstrend-richting en hoe lang deze aanhoudt", - "long_description": "Toont de huidige prijstrend (stijgend/dalend/stabiel) door historisch momentum (gewogen 1u terugblik) te combineren met toekomstperspectief. Herkent lopende trends eerder dan alleen toekomstanalyse. Gebruikt ±3% momentum-drempel en volatiliteit-afhankelijke toekomstvergelijking. Berekent dynamisch tot de volgende trendwijziging (of 3u standaard als geen wijziging in 24u). De status toont de huidige richting, attributen tonen wanneer het verandert en wat er daarna komt.", - "usage_tips": "Statusweergave: Dashboard-zichtbaarheid van 'wat gebeurt er nu tot wanneer'. Perfect gesynchroniseerd met next_price_trend_change. Voorbeeld: Badge met 'Stijgend voor 2,5u' of 'Dalend tot 16:45'. Beter dan tijdvenster-sensoren omdat het begrijpt dat je REEDS in een trend zit, niet alleen toekomstige veranderingen voorspelt. Gebruik voor snelle visuele overview, niet voor automatiserings-triggers." - }, - "next_price_trend_change": { - "description": "Wanneer de volgende significante prijstrendwijziging zal plaatsvinden", - "long_description": "Scant de komende 24 uur (96 intervallen) om te vinden wanneer de prijstrend-richting zal veranderen. Alleen richtingswijzigingen tellen: stijgend/sterk stijgend vormen één groep, dalend/sterk dalend een andere, stabiel is apart. Een verandering van stijgend naar sterk stijgend is GEEN trendwijziging. Gebruikt volatiliteit-adaptieve drempelwaarden (standaard: ±3%/±9%) met hysterese (standaard: 3 opeenvolgende intervallen). Retourneert het tijdstempel wanneer de wijziging wordt verwacht.", - "usage_tips": "Gebeurtenisgestuurde automatisering: Trigger acties WANNEER trend wijzigt, niet OVER X uur. Voorbeeld: 'Laad EV wanneer volgende trendwijziging dalende prijzen toont' of 'Start vaatwasser voordat prijzen stijgen'. Vult tijdvenster-sensors aan (price_outlook_Xh) die beantwoorden 'ZULLEN prijzen over X uur hoger zijn?'" - }, - "next_price_trend_change_in": { - "description": "Tijd tot de volgende prijstrendwijziging", - "long_description": "Toont hoe lang het duurt tot de volgende significante prijstrendwijziging plaatsvindt. De waarde wordt weergegeven in uren (bijv. 2,25 u) voor dashboards. Deelt dezelfde analyse als de tijdstempel-sensor 'Volgende Prijstrend Wijziging', maar presenteert het als een aftelduur. Wordt elke minuut bijgewerkt voor nauwkeurige aftellingen. Toont 'Onbekend' wanneer geen trendwijziging wordt verwacht in de komende 24 uur.", - "usage_tips": "Dashboard-aftelling: Toon 'Trendwijziging over 1,5 u' als live aftelling. Voor automatiseringen: 'Als next_price_trend_change_in < 0,25 (15 min), bereid je voor op prijsrichtingswijziging'. Vult 'Volgende Prijstrend Wijziging' (tijdstempel) aan — gebruik het tijdstempel voor 'WANNEER' en deze sensor voor 'HOE LANG'." - }, - "daily_rating": { - "description": "Hoe de prijzen van vandaag zich verhouden tot historische gegevens", - "long_description": "Toont hoe de prijzen van vandaag zich verhouden tot historische prijsgegevens als percentage", - "usage_tips": "Een positief percentage betekent dat de prijzen van vandaag boven het gemiddelde liggen, negatief betekent onder het gemiddelde" - }, - "monthly_rating": { - "description": "Hoe de prijzen van deze maand zich verhouden tot historische gegevens", - "long_description": "Toont hoe de prijzen van deze maand zich verhouden tot historische prijsgegevens als een percentage", - "usage_tips": "Een positief percentage betekent dat de prijzen van deze maand boven het gemiddelde liggen, negatief betekent onder het gemiddelde" - }, - "data_timestamp": { - "description": "Tijdstempel van het laatst beschikbare prijsgegevensinterval", - "long_description": "Toont het tijdstempel van het laatst beschikbare prijsgegevensinterval van je Tibber-abonnement" - }, - "today_volatility": { - "description": "Hoeveel de stroomprijzen vandaag schommelen", - "long_description": "Geeft aan of de prijzen vandaag stabiel blijven of grote schommelingen hebben. Lage volatiliteit betekent vrij constante prijzen – timing maakt weinig uit. Hoge volatiliteit betekent duidelijke prijsverschillen gedurende de dag – goede kans om verbruik naar goedkopere periodes te verschuiven. `price_coefficient_variation_%` toont het percentage, `price_spread` de absolute prijsspanne.", - "usage_tips": "Gebruik dit om te beslissen of optimaliseren de moeite waard is. Bij lage volatiliteit kun je apparaten op elk moment laten draaien. Bij hoge volatiliteit bespaar je merkbaar door Best Price-periodes te volgen." - }, - "tomorrow_volatility": { - "description": "Hoeveel de stroomprijzen morgen zullen schommelen", - "long_description": "Geeft aan of de prijzen morgen stabiel blijven of grote schommelingen hebben. Beschikbaar zodra de gegevens voor morgen zijn gepubliceerd (meestal 13:00–14:00 CET). Lage volatiliteit betekent vrij constante prijzen – timing is niet kritisch. Hoge volatiliteit betekent duidelijke prijsverschillen gedurende de dag – goede kans om energie-intensieve taken te plannen. `price_coefficient_variation_%` toont het percentage, `price_spread` de absolute prijsspanne.", - "usage_tips": "Gebruik dit om het verbruik van morgen te plannen. Hoge volatiliteit? Plan flexibele lasten in Best Price-periodes. Lage volatiliteit? Laat apparaten draaien wanneer het jou uitkomt." - }, - "next_24h_volatility": { - "description": "Hoeveel de prijzen de komende 24 uur zullen schommelen", - "long_description": "Geeft de prijsvolatiliteit aan voor een rollend 24-uursvenster vanaf nu (wordt elke 15 minuten bijgewerkt). Lage volatiliteit betekent vrij constante prijzen. Hoge volatiliteit betekent merkbare prijsschommelingen en dus optimalisatiemogelijkheden. In tegenstelling tot vandaag/morgen-sensoren overschrijdt deze daggrenzen en geeft een doorlopende vooruitblik. `price_coefficient_variation_%` toont het percentage, `price_spread` de absolute prijsspanne.", - "usage_tips": "Het beste voor beslissingen in real-time. Gebruik bij het plannen van batterijladen of andere flexibele lasten die over middernacht kunnen lopen. Biedt een consistent 24-uurs beeld, los van de kalenderdag." - }, - "today_tomorrow_volatility": { - "description": "Gecombineerde prijsvolatiliteit voor vandaag en morgen", - "long_description": "Geeft de totale volatiliteit weer wanneer vandaag en morgen samen worden bekeken (zodra morgengegevens beschikbaar zijn). Toont of er duidelijke prijsverschillen over de daggrens heen zijn. Valt terug naar alleen vandaag als morgengegevens ontbreken. Handig voor meerdaagse optimalisatie. `price_coefficient_variation_%` toont het percentage, `price_spread` de absolute prijsspanne.", - "usage_tips": "Gebruik voor taken die meerdere dagen beslaan. Kijk of de prijsverschillen groot genoeg zijn om plannen op te baseren. De afzonderlijke dag-sensoren tonen per-dag bijdragen als je meer detail wilt." - }, - "price_rank_today": { - "description": "De positie van de huidige prijs in de ranglijst van vandaag — zijn percentielrang (0% = goedkoopst)", - "long_description": "Toont hoe goedkoop of duur de huidige prijs is ten opzichte van alle 96 kwartiersslots van vandaag. 0% betekent dat dit het goedkoopste moment van de dag is — elk ander slot kost meer. 50% betekent dat de helft van de slots goedkoper is. ~99% betekent het duurste slot van de dag. Formule (percentielrang): hoeveel slots zijn goedkoper ÷ totaal aantal × 100. Attributen: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Ideaal voor automatiseringen: 'Als prijsrang < 25, start vaatwasser' (goedkoopste kwart van de dag). Of 'Als prijsrang > 75, pauzeer warmtepomp' (duurste kwart). Waarde 0 garandeert dat je op het goedkoopste slot van de dag zit." - }, - "price_rank_tomorrow": { - "description": "Percentielrang van de huidige prijs in de ranglijst van morgen (0% = goedkoopst van morgen)", - "long_description": "Toont hoe de huidige prijs zich verhoudt tot alle 96 kwartiersslots van morgen — zijn percentielrang binnen de verdeling van morgen. Handig om te beslissen of het loont om tot morgen te wachten. 0% betekent dat de huidige prijs goedkoper is dan elk slot van morgen. Geeft 'Onbekend' terug totdat de gegevens van morgen arriveren (meestal na 13:00). Attributen: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Gebruik om te beslissen of wachten loont: 'Als prijsrang morgen < 10, zijn er morgen nog goedkopere slots — taak uitstellen'. Het beste gecombineerd met een binaire sensor die bevestigt dat de taak morgen daadwerkelijk uitgevoerd kan worden." - }, - "price_rank_today_tomorrow": { - "description": "Percentielrang van de huidige prijs over vandaag en morgen gecombineerd (0% = goedkoopst van het tweedaagse venster)", - "long_description": "Toont hoe goedkoop of duur de huidige prijs is ten opzichte van alle slots van vandaag en morgen samen — zijn percentielrang binnen de tweedaagse verdeling (tot 192 slots wanneer beide dagen beschikbaar zijn). Geeft het breedste overzicht voor flexibele taken. Valt terug naar alleen vandaag als de gegevens van morgen nog niet beschikbaar zijn. 0% = goedkoopst van het gecombineerde venster. Attributen: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Het breedste signaal voor 'Is dit nu een goed moment?'. Gebruik 'Als prijsrang vandaag+morgen < 20, voer energieverbruikende taak nu uit'. Bijzonder waardevol als taken een dag kunnen wachten — een waarde dicht bij 0 over twee dagen is een werkelijk uitzonderlijke prijs." - }, - "data_lifecycle_status": { - "description": "Huidige status van prijsgegevenslevenscyclus en caching", - "long_description": "Toont of de integratie gebruikmaakt van gecachte gegevens of verse gegevens van de API. Toont huidige levenscyclusstatus: 'cached' (gebruikt opgeslagen gegevens), 'fresh' (net opgehaald van API), 'refreshing' (momenteel aan het ophalen), 'searching_tomorrow' (actief aan het zoeken naar morgengegevens na 13:00), 'turnover_pending' (binnen 15 minuten voor middernacht, 23:45-00:00), of 'error' (ophalen mislukt). Bevat uitgebreide attributen zoals cache-leeftijd, volgende API-poll-tijd, gegevensvolledigheid en API-aanroepstatistieken.", - "usage_tips": "Gebruik deze diagnostische sensor om gegevensfrisheid en API-aanroeppatronen te begrijpen. Controleer het 'cache_age'-attribuut om te zien hoe oud de huidige gegevens zijn. Monitor 'next_api_poll' om te weten wanneer de volgende update is gepland. Gebruik 'data_completeness' om te zien of gisteren/vandaag/morgen gegevens beschikbaar zijn. De 'api_calls_today'-teller helpt API-gebruik bij te houden. Perfect voor probleemoplossing of begrip van integratiegedrag." - }, - "best_price_end_time": { - "description": "Totale lengte van huidige of volgende voordelige periode (state in uren, attribuut in minuten)", - "long_description": "Toont hoe lang de voordelige periode duurt. State gebruikt uren (float) voor een leesbare UI; attribuut `period_duration_minutes` behoudt afgeronde minuten voor automatiseringen. Actief → duur van de huidige periode, anders de volgende.", - "usage_tips": "UI kan 1,5 u tonen terwijl `period_duration_minutes` = 90 voor automatiseringen blijft." - }, - "best_price_period_duration": { - "description": "Lengte van huidige/volgende goedkope periode", - "long_description": "Totale duur van huidige of volgende goedkope periode. De state wordt weergegeven in uren (bijv. 1,5 u) voor gemakkelijk aflezen in de UI, terwijl het attribuut `period_duration_minutes` dezelfde waarde in minuten levert (bijv. 90) voor automatiseringen. Deze waarde vertegenwoordigt de **volledige geplande duur** van de periode en is constant gedurende de gehele periode, zelfs als de resterende tijd (remaining_minutes) afneemt.", - "usage_tips": "Combineer met remaining_minutes om te berekenen wanneer langlopende apparaten moeten worden gestopt: Periode is `period_duration_minutes - remaining_minutes` minuten geleden gestart. Dit attribuut ondersteunt energie-optimalisatiestrategieën door te helpen bij het plannen van hoog-verbruiksactiviteiten binnen goedkope periodes." - }, - "best_price_remaining_minutes": { - "description": "Resterende tijd in huidige goedkope periode", - "long_description": "Toont hoeveel tijd er nog overblijft in de huidige goedkope periode. De state wordt weergegeven in uren (bijv. 0,75 u) voor gemakkelijk aflezen in dashboards, terwijl het attribuut `remaining_minutes` dezelfde tijd in minuten levert (bijv. 45) voor automatiseringsvoorwaarden. **Afteltimer**: Deze waarde neemt elke minuut af tijdens een actieve periode. Geeft 0 terug wanneer geen goedkope periode actief is. Werkt elke minuut bij.", - "usage_tips": "Voor automatiseringen: Gebruik attribuut `remaining_minutes` zoals 'Als remaining_minutes > 60, start vaatwasser nu (genoeg tijd om te voltooien)' of 'Als remaining_minutes < 15, rond huidige cyclus binnenkort af'. UI toont gebruiksvriendelijke uren (bijv. 1,25 u). Waarde 0 geeft aan dat geen goedkope periode actief is." - }, - "best_price_progress": { - "description": "Voortgang door huidige goedkope periode (0% wanneer inactief)", - "long_description": "Toont voortgang door de huidige goedkope periode als 0-100%. Geeft 0% terug wanneer geen periode actief is. Werkt elke minuut bij. 0% betekent periode net gestart, 100% betekent dat deze bijna eindigt.", - "usage_tips": "Geweldig voor visuele voortgangsbalken. Gebruik in automatiseringen: 'Als progress > 0 EN progress > 75, stuur melding dat goedkope periode bijna eindigt'. Waarde 0 geeft aan dat geen periode actief is." - }, - "best_price_next_start_time": { - "description": "Totale lengte van huidige of volgende dure periode (state in uren, attribuut in minuten)", - "long_description": "Toont hoe lang de dure periode duurt. State gebruikt uren (float) voor de UI; attribuut `period_duration_minutes` behoudt afgeronde minuten voor automatiseringen. Actief → duur van de huidige periode, anders de volgende.", - "usage_tips": "UI kan 0,75 u tonen terwijl `period_duration_minutes` = 45 voor automatiseringen blijft." - }, - "best_price_next_in_minutes": { - "description": "Resterende tijd in huidige dure periode (state in uren, attribuut in minuten)", - "long_description": "Toont hoeveel tijd er nog over is. State gebruikt uren (float); attribuut `remaining_minutes` behoudt afgeronde minuten voor automatiseringen. Geeft 0 terug wanneer er geen periode actief is. Werkt elke minuut bij.", - "usage_tips": "Gebruik `remaining_minutes` voor drempels (bijv. > 60) terwijl de state in uren goed leesbaar blijft." - }, - "peak_price_end_time": { - "description": "Tijd tot volgende dure periode (state in uren, attribuut in minuten)", - "long_description": "Toont hoe lang het duurt tot de volgende dure periode start. State gebruikt uren (float); attribuut `next_in_minutes` behoudt afgeronde minuten voor automatiseringen. Tijdens een actieve periode is dit de tijd tot de periode na de huidige. 0 tijdens korte overgangen. Werkt elke minuut bij.", - "usage_tips": "Gebruik `next_in_minutes` in automatiseringen (bijv. < 10) terwijl de state in uren leesbaar blijft." - }, - "peak_price_period_duration": { - "description": "Totale duur van huidige of volgende dure periode in minuten", - "long_description": "Toont de totale duur van de dure periode in minuten. Tijdens een actieve periode toont dit de volledige lengte van de huidige periode. Wanneer geen periode actief is, toont dit de duur van de volgende komende periode. Voorbeeld: '60 minuten' voor een 1-uur periode.", - "usage_tips": "Gebruik om energiebesparende maatregelen te plannen: 'Als duration > 120, verlaag verwarmingstemperatuur agressiever (lange dure periode)'. Helpt bij het inschatten hoeveel energieverbruik moet worden verminderd." - }, - "peak_price_remaining_minutes": { - "description": "Resterende tijd in huidige dure periode", - "long_description": "Toont hoeveel tijd er nog overblijft in de huidige dure periode. De state wordt weergegeven in uren (bijv. 0,75 u) voor gemakkelijk aflezen in dashboards, terwijl het attribuut `remaining_minutes` dezelfde tijd in minuten levert (bijv. 45) voor automatiseringsvoorwaarden. **Afteltimer**: Deze waarde neemt elke minuut af tijdens een actieve periode. Geeft 0 terug wanneer geen dure periode actief is. Werkt elke minuut bij.", - "usage_tips": "Voor automatiseringen: Gebruik attribuut `remaining_minutes` zoals 'Als remaining_minutes > 60, annuleer uitgestelde laadronde' of 'Als remaining_minutes < 15, hervat normaal gebruik binnenkort'. UI toont gebruiksvriendelijke uren (bijv. 1,0 u). Waarde 0 geeft aan dat geen dure periode actief is." - }, - "peak_price_progress": { - "description": "Voortgang door huidige dure periode (0% wanneer inactief)", - "long_description": "Toont de voortgang door de huidige dure periode als 0-100%. Geeft 0% terug wanneer geen periode actief is. Werkt elke minuut bij.", - "usage_tips": "Visuele voortgangsindicator in dashboards. Automatisering: 'Als progress > 0 EN progress > 90, bereid normale verwarmingsplanning voor'. Waarde 0 geeft aan dat er geen actieve periode is." - }, - "peak_price_next_start_time": { - "description": "Wanneer de volgende dure periode begint", - "long_description": "Toont wanneer de volgende komende dure periode begint. Tijdens een actieve periode toont dit de start van de VOLGENDE periode na de huidige. Geeft alleen 'Onbekend' terug wanneer geen toekomstige periodes zijn geconfigureerd.", - "usage_tips": "Altijd nuttig voor planning: 'Volgende dure periode begint over 2 uur'. Automatisering: 'Wanneer volgende starttijd over 30 minuten is, verlaag verwarmingstemperatuur preventief'." - }, - "peak_price_next_in_minutes": { - "description": "Tijd tot volgende dure periode", - "long_description": "Toont hoe lang het duurt tot de volgende dure periode. De state wordt weergegeven in uren (bijv. 0,5 u) voor dashboards, terwijl het attribuut `next_in_minutes` minuten levert (bijv. 30) voor automatiseringsvoorwaarden. Tijdens een actieve periode toont dit de tijd tot de periode NA de huidige. Geeft 0 terug tijdens korte overgangsmomenten. Werkt elke minuut bij.", - "usage_tips": "Voor automatiseringen: Gebruik attribuut `next_in_minutes` zoals 'Als next_in_minutes > 0 EN next_in_minutes < 10, voltooi huidige laadcyclus nu voordat prijzen stijgen'. Waarde > 0 geeft altijd aan dat een toekomstige dure periode is gepland." - }, - "home_type": { - "description": "Type woning (appartement, huis enz.)", - "long_description": "Toont het woningtype zoals geconfigureerd in je Tibber-account. Deze metadata kunnen nuttig zijn voor het categoriseren van energieverbruikspatronen.", - "usage_tips": "Gebruik dit voor het organiseren van je smart home-systeem of voor analysedoeleinden." - }, - "home_size": { - "description": "Woonoppervlakte in vierkante meters", - "long_description": "Toont de grootte van je woning in vierkante meters zoals geconfigureerd in je Tibber-account. Kan worden gebruikt om energieverbruik per vierkante meter te berekenen.", - "usage_tips": "Gebruik dit in energie-efficiëntieberekeningen: 'Mijn woning verbruikt X kWh per vierkante meter per jaar'." - }, - "main_fuse_size": { - "description": "Hoofdzekeringgrootte in ampères", - "long_description": "Toont de capaciteit van je hoofdzekering in ampères. Dit bepaalt de maximale elektrische belasting die je woning tegelijkertijd aankan.", - "usage_tips": "Gebruik dit om overbelasting te voorkomen: 'Als het totale stroomverbruik de zekeringgrootte nadert, stel het starten van extra apparaten uit'." - }, - "number_of_residents": { - "description": "Aantal personen dat in de woning woont", - "long_description": "Toont het aantal bewoners zoals geconfigureerd in je Tibber-account. Nuttig voor berekeningen van energieverbruik per persoon.", - "usage_tips": "Gebruik dit voor huishoudelijke energie-analyses: 'Energieverbruik per persoon per dag'." - }, - "primary_heating_source": { - "description": "Primair verwarmingssysteemtype", - "long_description": "Toont het type verwarmingssysteem dat in je woning wordt gebruikt zoals geconfigureerd in je Tibber-account. Dit kan een warmtepomp, elektrische verwarming, gas, olie of andere warmtebronnen zijn.", - "usage_tips": "Gebruik dit om verwarmingsgerelateerde automatiseringen te categoriseren of voor energieverbruiksanalyse per verwarmingstype." - }, - "grid_company": { - "description": "Naam van je elektriciteitsnetbeheerder", - "long_description": "Toont de naam van het bedrijf dat het elektriciteitsnet in je gebied beheert. Dit is de distributienetwerkbeheerder (DNB) die verantwoordelijk is voor de levering van elektriciteit aan je woning.", - "usage_tips": "Nuttig voor administratieve doeleinden en het oplossen van netgerelateerde problemen." - }, - "grid_area_code": { - "description": "Netgebied-identificatiecode", - "long_description": "Toont de code die je elektriciteitsnetgebied identificeert. Deze code wordt door de netbeheerder gebruikt voor routing- en factureringsdoeleinden.", - "usage_tips": "Gebruik dit als administratieve referentie of bij contact met je netbeheerder." - }, - "price_area_code": { - "description": "Elektriciteitsprijszonecode", - "long_description": "Toont de code voor je elektriciteitsprijszone (bijv. NO1, NO2, SE3, DK1). Verschillende zones hebben verschillende groothandelselektriciteitsprijzen op basis van regionaal aanbod en vraag.", - "usage_tips": "Gebruik dit om te begrijpen in welke prijsregio je je bevindt. Nuttig bij het vergelijken van prijzen met anderen of het analyseren van regionale prijspatronen." - }, - "consumption_ean": { - "description": "EAN-code voor elektriciteitsverbruiksmeting", - "long_description": "Toont de European Article Number (EAN)-code die je elektriciteitsverbruiksmeter uniek identificeert. Deze 18-cijferige code wordt gebruikt voor facturerings- en administratieve doeleinden.", - "usage_tips": "Gebruik dit bij communicatie met je elektriciteitsleverancier of voor administratieve documentatie." - }, - "production_ean": { - "description": "EAN-code voor elektriciteitsproductiemeting", - "long_description": "Toont de European Article Number (EAN)-code voor je elektriciteitsproductiemeter (als je zonnepanelen of andere opwekking hebt). Deze code volgt elektriciteit die je terug het net op stuurt.", - "usage_tips": "Relevant als je zonnepanelen of andere elektriciteitsopwekking hebt. Gebruik voor administratieve doeleinden en bij het claimen van teruglevering." - }, - "energy_tax_type": { - "description": "Type energiebelasting toegepast", - "long_description": "Toont de energiebelastingcategorie die wordt toegepast op je elektriciteitsverbruik. Belastingtarieven variëren per land en soms per consumententype (particulier, zakelijk enz.).", - "usage_tips": "Gebruik dit voor het begrijpen van de uitsplitsing van je elektriciteitsrekening en voor berekeningen van totale kosten." - }, - "vat_type": { - "description": "BTW-categorie (belasting over toegevoegde waarde)", - "long_description": "Toont de BTW-categorie die wordt toegepast op je elektriciteitsverbruik. BTW-tarieven variëren per land en kunnen verschillen voor elektriciteit vergeleken met andere goederen en diensten.", - "usage_tips": "Gebruik dit voor het begrijpen van je elektriciteitsrekening en het berekenen van totale kosten inclusief belastingen." - }, - "estimated_annual_consumption": { - "description": "Geschat jaarlijks elektriciteitsverbruik in kWh", - "long_description": "Toont je geschatte jaarlijkse elektriciteitsverbruik in kilowattuur zoals berekend of geconfigureerd in je Tibber-account. Deze schatting wordt gebruikt om daadwerkelijk verbruik te vergelijken met verwachte waarden.", - "usage_tips": "Gebruik dit om te volgen of je daadwerkelijke verbruik boven of onder de verwachtingen ligt. Vergelijk maandelijks verbruik met 1/12 van deze waarde om ongebruikelijke patronen te identificeren." - }, - "subscription_status": { - "description": "Status van je Tibber-abonnement", - "long_description": "Geeft aan of je Tibber-abonnement momenteel actief is, beëindigd of wacht op activering. Een 'Actief'-status betekent dat je actief elektriciteit via Tibber afneemt.", - "usage_tips": "Gebruik dit om je abonnementsstatus te monitoren. Stel meldingen in als de status verandert van 'Actief' om ononderbroken service te waarborgen." - }, - "day_pattern_yesterday": { - "description": "Gedetecteerd prijspatroon van gisterens elektriciteitsprijzen", - "long_description": "Classificeert gisteren in een prijspatroon: Dal (goedkoop in het midden), Piek (duur in het midden), Dubbel Dal (twee goedkope perioden), Dubbele Piek (twee dure perioden), Vlak (weinig variatie), Stijgend, Dalend of Gemengd. De confidence- en CV-attributen tonen hoe betrouwbaar het patroon is gedetecteerd.", - "usage_tips": "Gebruik het patroon van gisteren om automations te verfijnen: een Daldag herhaalt zich vaak de volgende dag en suggereert om goedkope middaguren in te plannen." - }, - "day_pattern_today": { - "description": "Gedetecteerd prijspatroon van de huidige elektriciteitsprijzen", - "long_description": "Classificeert vandaag in een prijspatroon: Dal (goedkoop 's middags), Piek (duur 's middags), Dubbel Dal (W-vorm), Dubbele Piek (M-vorm), Vlak, Stijgend, Dalend of Gemengd. Attributen omvatten confidence (0–1), variatiecoëfficiënt, kniepunttijden en dagsegmenten.", - "usage_tips": "Gebruik het dagpatroon om verbruik te verschuiven. Daldag: draai vaatwasser, wasmachine of laad de EV 's middags. Piekdag: gebruik apparaten vroeg in de ochtend of laat in de avond. Gebruik valley_start en valley_end voor precieze automations." - }, - "day_pattern_tomorrow": { - "description": "Gedetecteerd prijspatroon van de elektriciteitsprijzen van morgen", - "long_description": "Classificeert morgen (zodra data beschikbaar is, doorgaans na 13:00) in een prijspatroon met hetzelfde algoritme als vandaag. De attributen valley_start/valley_end of peak_start/peak_end geven kniepunttijden voor het primaire extremum.", - "usage_tips": "Stel avondautomations in die het patroon van morgen lezen en warmtepomp, autolader of boiler vooraf configureren. Combineer met de tomorrow_data_available binaire sensor." - }, - "chart_data_export": { - "description": "Data-export voor dashboard-integraties", - "long_description": "Deze sensor roept de get_chartdata-service aan met jouw geconfigureerde YAML-configuratie en stelt het resultaat beschikbaar als entiteitsattributen. De status toont 'ready' wanneer data beschikbaar is, 'error' bij fouten, of 'pending' voor de eerste aanroep. Perfekt voor dashboard-integraties zoals ApexCharts die prijsgegevens uit entiteitsattributen moeten lezen.", - "usage_tips": "Configureer de YAML-parameters in de integratie-opties om overeen te komen met jouw get_chartdata-service-aanroep. De sensor wordt automatisch bijgewerkt wanneer prijsgegevens worden bijgewerkt (typisch na middernacht en wanneer gegevens van morgen binnenkomen). Krijg toegang tot de service-responsgegevens direct vanuit de entiteitsattributen - de structuur komt exact overeen met wat get_chartdata retourneert." - }, - "chart_metadata": { - "description": "Lichtgewicht metadata voor diagramconfiguratie", - "long_description": "Biedt essentiële diagramconfiguratiewaarden als sensorattributen. Nuttig voor elke grafiekkaart die Y-as-grenzen nodig heeft. De sensor roept get_chartdata aan in alleen-metadata-modus (geen dataverwerking) en extraheert: yaxis_min, yaxis_max (gesuggereerd Y-asbereik voor optimale schaling). De status weerspiegelt het service-aanroepresultaat: 'ready' bij succes, 'error' bij fouten, 'pending' tijdens initialisatie.", - "usage_tips": "Configureer via configuration.yaml onder tibber_prices.chart_metadata_config (optioneel: day, subunit_currency, resolution). De sensor wordt automatisch bijgewerkt bij prijsgegevenswijzigingen. Krijg toegang tot metadata vanuit attributen: yaxis_min, yaxis_max. Gebruik met config-template-card of elk hulpmiddel dat entiteitsattributen leest - perfect voor dynamische diagramconfiguratie zonder handmatige berekeningen." - } + "current_interval_price_base": { + "description": "Huidige elektriciteitsprijs in hoofdvaluta (EUR/kWh, NOK/kWh, enz.) voor Energie-dashboard", + "long_description": "Toont de huidige prijs per kWh in hoofdvaluta-eenheden (bijv. EUR/kWh in plaats van ct/kWh, NOK/kWh in plaats van øre/kWh). Deze sensor is speciaal ontworpen voor gebruik met het Energie-dashboard van Home Assistant, dat prijzen in standaard valuta-eenheden vereist.", + "usage_tips": "Gebruik deze sensor bij het configureren van het Energie-dashboard onder Instellingen → Dashboards → Energie. Selecteer deze sensor als 'Entiteit met huidige prijs' om automatisch je energiekosten te berekenen. Het Energie-dashboard vermenigvuldigt je energieverbruik (kWh) met deze prijs om totale kosten weer te geven." }, - "binary_sensor": { - "tomorrow_data_available": { - "description": "Of prijsgegevens voor morgen beschikbaar zijn", - "long_description": "Geeft aan of prijsgegevens voor de volgende dag zijn ontvangen van Tibber", - "usage_tips": "Gebruik dit om te controleren of de prijzen van morgen beschikbaar zijn voor planning" - }, - "peak_price_period": { - "description": "Of het huidige interval tot de duurste van de dag behoort", - "long_description": "Wordt geactiveerd wanneer de huidige prijs in de top 20% van de prijzen van vandaag ligt", - "usage_tips": "Gebruik dit om te voorkomen dat je apparaten met hoog verbruik draait tijdens dure intervallen" - }, - "best_price_period": { - "description": "Of het huidige interval tot de goedkoopste van de dag behoort", - "long_description": "Wordt geactiveerd wanneer de huidige prijs in de onderste 20% van de prijzen van vandaag ligt", - "usage_tips": "Gebruik dit om apparaten met hoog verbruik te laten draaien tijdens de goedkoopste intervallen" - }, - "connection": { - "description": "Of de verbinding met de Tibber API werkt", - "long_description": "Geeft aan of de integratie succesvol verbinding kan maken met de Tibber API", - "usage_tips": "Gebruik dit om de verbindingsstatus met de Tibber API te monitoren" - }, - "has_ventilation_system": { - "description": "Of je woning een ventilatiesysteem heeft", - "long_description": "Geeft aan of een ventilatiesysteem is geregistreerd voor je woning in het Tibber-account. Ventilatiesystemen kunnen aanzienlijke elektriciteitsverbruikers zijn die baat kunnen hebben bij slimme planning.", - "usage_tips": "Gebruik dit om ventilatiespecifieke automatiseringen of energiemonitoring in te schakelen. Indien actief, overweeg ventilatie te plannen tijdens perioden met lage prijzen." - }, - "realtime_consumption_enabled": { - "description": "Of realtime verbruiksmonitoring actief is", - "long_description": "Geeft aan of realtime elektriciteitsverbruikmonitoring is ingeschakeld en actief voor je Tibber-woning. Dit vereist compatibele meethardware (bijv. Tibber Pulse) en een actief abonnement.", - "usage_tips": "Gebruik dit om te verifiëren dat realtimeverbruiksgegevens beschikbaar zijn. Schakel meldingen in als dit onverwacht verandert naar 'uit', wat wijst op mogelijke hardware- of verbindingsproblemen." - } + "next_interval_price": { + "description": "De volgende interval elektriciteitsprijs per kWh", + "long_description": "Toont de prijs voor het volgende 15-minuten interval van je Tibber-abonnement", + "usage_tips": "Gebruik dit om je voor te bereiden op aanstaande prijswijzigingen of om apparaten te plannen om tijdens goedkopere intervallen te draaien" }, - "number": { - "best_price_flex_override": { - "description": "Maximaal percentage boven de dagelijkse minimumprijs dat intervallen kunnen hebben en nog steeds als 'beste prijs' kwalificeren. Aanbevolen: 15-20 met versoepeling ingeschakeld (standaard), of 25-35 zonder versoepeling. Maximum: 50 (harde limiet voor betrouwbare periodedetectie).", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Flexibiliteit'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", - "usage_tips": "Schakel deze entiteit in om beste prijs-detectie dynamisch aan te passen via automatiseringen, bijv. hogere flexibiliteit voor kritieke lasten of strengere eisen voor flexibele apparaten." - }, - "best_price_min_distance_override": { - "description": "Minimale procentuele afstand onder het daggemiddelde. Intervallen moeten zo ver onder het gemiddelde liggen om als 'beste prijs' te kwalificeren. Helpt echte lage prijsperioden te onderscheiden van gemiddelde prijzen.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimale afstand'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", - "usage_tips": "Verhoog de waarde voor strengere beste prijs-criteria. Verlaag als te weinig perioden worden gedetecteerd." - }, - "best_price_min_period_length_override": { - "description": "Minimale periodelengte in 15-minuten intervallen. Perioden korter dan dit worden niet gerapporteerd. Voorbeeld: 2 = minimaal 30 minuten.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimale periodelengte'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", - "usage_tips": "Pas aan op typische apparaatlooptijd: 2 (30 min) voor snelle programma's, 4-8 (1-2 uur) voor normale cycli, 8+ voor lange ECO-programma's." - }, - "best_price_min_periods_override": { - "description": "Minimum aantal beste prijs-perioden om dagelijks te vinden. Wanneer versoepeling is ingeschakeld, past het systeem automatisch de criteria aan om dit aantal te bereiken.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimum periodes'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", - "usage_tips": "Stel dit in op het aantal tijdkritieke taken dat je dagelijks hebt. Voorbeeld: 2 voor twee wasladingen." - }, - "best_price_relaxation_attempts_override": { - "description": "Aantal pogingen om de criteria geleidelijk te versoepelen om het minimum aantal perioden te bereiken. Elke poging verhoogt de flexibiliteit met 3 procent. Bij 0 worden alleen basiscriteria gebruikt.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Versoepeling pogingen'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", - "usage_tips": "Hogere waarden maken periodedetectie adaptiever voor dagen met stabiele prijzen. Stel in op 0 om strikte criteria af te dwingen zonder versoepeling." - }, - "best_price_gap_count_override": { - "description": "Maximum aantal duurdere intervallen dat mag worden toegestaan tussen goedkope intervallen terwijl ze nog steeds als één aaneengesloten periode tellen. Bij 0 moeten goedkope intervallen opeenvolgend zijn.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Gap tolerantie'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", - "usage_tips": "Verhoog dit voor apparaten met variabele belasting (bijv. warmtepompen) die korte duurdere intervallen kunnen tolereren. Stel in op 0 voor continu goedkope perioden." - }, - "peak_price_flex_override": { - "description": "Maximaal percentage onder de dagelijkse maximumprijs dat intervallen kunnen hebben en nog steeds als 'piekprijs' kwalificeren. Dezelfde aanbevelingen als voor beste prijs-flexibiliteit.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Flexibiliteit'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", - "usage_tips": "Gebruik dit om de piekprijs-drempel tijdens runtime aan te passen voor automatiseringen die verbruik tijdens dure uren vermijden." - }, - "peak_price_min_distance_override": { - "description": "Minimale procentuele afstand boven het daggemiddelde. Intervallen moeten zo ver boven het gemiddelde liggen om als 'piekprijs' te kwalificeren.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimale afstand'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", - "usage_tips": "Verhoog de waarde om alleen extreme prijspieken te vangen. Verlaag om meer dure tijden mee te nemen." - }, - "peak_price_min_period_length_override": { - "description": "Minimale periodelengte in 15-minuten intervallen voor piekprijzen. Kortere prijspieken worden niet als perioden gerapporteerd.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimale periodelengte'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", - "usage_tips": "Kortere waarden vangen korte prijspieken. Langere waarden focussen op aanhoudende dure perioden." - }, - "peak_price_min_periods_override": { - "description": "Minimum aantal piekprijs-perioden om dagelijks te vinden.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimum periodes'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", - "usage_tips": "Stel dit in op basis van hoeveel dure perioden je per dag wilt vangen voor automatiseringen." - }, - "peak_price_relaxation_attempts_override": { - "description": "Aantal pogingen om de criteria te versoepelen om het minimum aantal piekprijs-perioden te bereiken.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Versoepeling pogingen'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", - "usage_tips": "Verhoog dit als geen perioden worden gevonden op dagen met stabiele prijzen. Stel in op 0 om strikte criteria af te dwingen." - }, - "peak_price_gap_count_override": { - "description": "Maximum aantal goedkopere intervallen dat mag worden toegestaan tussen dure intervallen terwijl ze nog steeds als één piekprijs-periode tellen.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Gap tolerantie'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", - "usage_tips": "Hogere waarden vangen langere dure perioden zelfs met korte prijsdips. Stel in op 0 voor strikt aaneengesloten piekprijzen." - } + "previous_interval_price": { + "description": "De vorige interval elektriciteitsprijs per kWh", + "long_description": "Toont de prijs voor het vorige 15-minuten interval van je Tibber-abonnement", + "usage_tips": "Gebruik dit om eerdere prijswijzigingen te bekijken of prijsgeschiedenis bij te houden" }, - "switch": { - "best_price_enable_relaxation_override": { - "description": "Indien ingeschakeld, worden criteria automatisch versoepeld om het minimum aantal perioden te bereiken. Indien uitgeschakeld, worden alleen perioden gerapporteerd die aan strikte criteria voldoen (mogelijk nul perioden op dagen met stabiele prijzen).", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimum aantal bereiken'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", - "usage_tips": "Schakel dit in voor gegarandeerde dagelijkse automatiseringsmogelijkheden. Schakel uit als je alleen echt goedkope perioden wilt, ook als dat betekent dat er op sommige dagen geen perioden zijn." - }, - "peak_price_enable_relaxation_override": { - "description": "Indien ingeschakeld, worden criteria automatisch versoepeld om het minimum aantal perioden te bereiken. Indien uitgeschakeld, worden alleen echte prijspieken gerapporteerd.", - "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimum aantal bereiken'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", - "usage_tips": "Schakel dit in voor consistente piekprijs-waarschuwingen. Schakel uit om alleen extreme prijspieken te vangen." - } + "current_hour_average_price": { + "description": "Voortschrijdend 5-interval gemiddelde prijs per kWh", + "long_description": "Toont de gemiddelde prijs per kWh berekend uit 5 intervallen: 2 vorige, huidige en 2 volgende intervallen (ongeveer 75 minuten totaal). Dit biedt een vloeiende 'uurprijs' die zich aanpast naarmate de tijd verstrijkt, in plaats van vast te zitten aan klokuren.", + "usage_tips": "Gebruik dit voor een stabielere prijsindicator die korte schommelingen afvlakt terwijl deze nog steeds reageert op prijswijzigingen. Beter dan vaste uurprijzen voor verbruiksbeslissingen." }, - "home_types": { - "APARTMENT": "Appartement", - "ROWHOUSE": "Rijhuis", - "HOUSE": "Huis", - "COTTAGE": "Huisje" + "next_hour_average_price": { + "description": "Voortschrijdend 5-interval gemiddelde prijs voor volgend uur per kWh", + "long_description": "Toont de gemiddelde prijs per kWh berekend uit 5 intervallen gecentreerd één uur vooruit: ongeveer intervallen +2 tot +6 vanaf nu (dekking van minuten +30 tot +105). Dit biedt een vooruitkijkende vloeiende 'uurprijs' voor verbruiksplanning.", + "usage_tips": "Gebruik dit om prijswijzigingen in het volgende uur te anticiperen. Handig voor het plannen van activiteiten met hoog verbruik zoals het opladen van elektrische voertuigen, het draaien van vaatwassers of verwarmingssystemen." }, - "time_units": { - "day": "{count} dag", - "days": "{count} dagen", - "hour": "{count} uur", - "hours": "{count} uur", - "minute": "{count} minuut", - "minutes": "{count} minuten", - "ago": "{parts} geleden", - "now": "nu" + "lowest_price_today": { + "description": "De laagste elektriciteitsprijs voor vandaag per kWh", + "long_description": "Toont de laagste prijs per kWh voor de huidige dag van je Tibber-abonnement", + "usage_tips": "Gebruik dit om huidige prijzen te vergelijken met de goedkoopste tijd van de dag" }, - "attribution": "Gegevens geleverd door Tibber" + "highest_price_today": { + "description": "De hoogste elektriciteitsprijs voor vandaag per kWh", + "long_description": "Toont de hoogste prijs per kWh voor de huidige dag van je Tibber-abonnement", + "usage_tips": "Gebruik dit om te voorkomen dat je apparaten draait tijdens piekprijstijden" + }, + "average_price_today": { + "description": "Typische elektriciteitsprijs voor vandaag per kWh (configureerbare weergave)", + "long_description": "Toont de prijs per kWh voor de huidige dag van je Tibber-abonnement. **Standaard toont de status de mediaan** (resistent tegen extreme prijspieken, toont typisch prijsniveau). Je kunt dit wijzigen in de integratie-instellingen om het rekenkundig gemiddelde te tonen. De alternatieve waarde is beschikbaar als attribuut.", + "usage_tips": "Gebruik dit als basislijn voor het vergelijken van huidige prijzen. Voor berekeningen gebruik: {{ state_attr('sensor.average_price_today', 'price_mean') }}" + }, + "lowest_price_tomorrow": { + "description": "De laagste elektriciteitsprijs voor morgen per kWh", + "long_description": "Toont de laagste prijs per kWh voor morgen van je Tibber-abonnement. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", + "usage_tips": "Gebruik dit om energie-intensieve activiteiten te plannen voor de goedkoopste tijd van morgen. Perfect voor vooraf plannen van verwarming, EV-laden of apparaten." + }, + "highest_price_tomorrow": { + "description": "De hoogste elektriciteitsprijs voor morgen per kWh", + "long_description": "Toont de hoogste prijs per kWh voor morgen van je Tibber-abonnement. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", + "usage_tips": "Gebruik dit om te voorkomen dat je apparaten draait tijdens de piekprijstijden van morgen. Handig voor het plannen rond dure perioden." + }, + "average_price_tomorrow": { + "description": "Typische elektriciteitsprijs voor morgen per kWh (configureerbare weergave)", + "long_description": "Toont de prijs per kWh voor morgen van je Tibber-abonnement. **Standaard toont de status de mediaan** (resistent tegen extreme prijspieken). Je kunt dit wijzigen in de integratie-instellingen om het rekenkundig gemiddelde te tonen. De alternatieve waarde is beschikbaar als attribuut. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", + "usage_tips": "Gebruik dit als basislijn voor het vergelijken van prijzen van morgen en het plannen van verbruik. Vergelijk met de mediaan van vandaag om te zien of morgen over het algemeen duurder of goedkoper wordt." + }, + "yesterday_price_level": { + "description": "Geaggregeerd prijsniveau voor gisteren", + "long_description": "Toont het geaggregeerde prijsniveau voor alle intervallen van gisteren. Gebruikt dezelfde logica als de uursensoren om het totale prijsniveau voor de hele dag te bepalen.", + "usage_tips": "Gebruik dit om de algemene prijssituatie van gisteren te begrijpen. Vergelijk met vandaag om dagelijkse trends te zien." + }, + "today_price_level": { + "description": "Geaggregeerd prijsniveau voor vandaag", + "long_description": "Toont het geaggregeerde prijsniveau voor alle intervallen van vandaag. Gebruikt dezelfde logica als de uursensoren om het totale prijsniveau voor de hele dag te bepalen.", + "usage_tips": "Gebruik dit om de prijssituatie van vandaag in één oogopslag te begrijpen. Handig voor snelle beoordelingen of vandaag over het algemeen goedkoop of duur is." + }, + "tomorrow_price_level": { + "description": "Geaggregeerd prijsniveau voor morgen", + "long_description": "Toont het geaggregeerde prijsniveau voor alle intervallen van morgen. Gebruikt dezelfde logica als de uursensoren om het totale prijsniveau voor de hele dag te bepalen. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", + "usage_tips": "Gebruik dit om de prijssituatie van morgen te begrijpen. Vergelijk met vandaag om te zien of morgen gunstiger of ongunstiger zal zijn voor energieverbruik." + }, + "yesterday_price_rating": { + "description": "Geaggregeerde prijsbeoordeling voor gisteren", + "long_description": "Toont de geaggregeerde prijsbeoordeling (laag/normaal/hoog) voor alle intervallen van gisteren, gebaseerd op jouw geconfigureerde drempelwaarden. Gebruikt dezelfde logica als de uursensoren om de totale beoordeling voor de hele dag te bepalen.", + "usage_tips": "Gebruik dit om de prijssituatie van gisteren te begrijpen ten opzichte van jouw persoonlijke drempelwaarden. Vergelijk met vandaag voor trendanalyse." + }, + "today_price_rating": { + "description": "Geaggregeerde prijsbeoordeling voor vandaag", + "long_description": "Toont de geaggregeerde prijsbeoordeling (laag/normaal/hoog) voor alle intervallen van vandaag, gebaseerd op jouw geconfigureerde drempelwaarden. Gebruikt dezelfde logica als de uursensoren om de totale beoordeling voor de hele dag te bepalen.", + "usage_tips": "Gebruik dit om snel de prijssituatie van vandaag te beoordelen ten opzichte van jouw persoonlijke drempelwaarden. Helpt bij het nemen van verbruiksbeslissingen voor de huidige dag." + }, + "tomorrow_price_rating": { + "description": "Geaggregeerde prijsbeoordeling voor morgen", + "long_description": "Toont de geaggregeerde prijsbeoordeling (laag/normaal/hoog) voor alle intervallen van morgen, gebaseerd op jouw geconfigureerde drempelwaarden. Gebruikt dezelfde logica als de uursensoren om de totale beoordeling voor de hele dag te bepalen. Deze sensor wordt niet beschikbaar totdat de gegevens van morgen door Tibber worden gepubliceerd (meestal rond 13:00-14:00 CET).", + "usage_tips": "Gebruik dit om het energieverbruik van morgen te plannen op basis van jouw persoonlijke prijsdrempelwaarden. Vergelijk met vandaag om te beslissen of je verbruik naar morgen moet verschuiven of vandaag energie moet gebruiken." + }, + "trailing_price_average": { + "description": "Typische elektriciteitsprijs voor de afgelopen 24 uur per kWh (configureerbare weergave)", + "long_description": "Toont de prijs per kWh berekend uit de afgelopen 24 uur. **Standaard toont de status de mediaan** (resistent tegen extreme prijspieken, toont typisch prijsniveau). Je kunt dit wijzigen in de integratie-instellingen om het rekenkundig gemiddelde te tonen. De alternatieve waarde is beschikbaar als attribuut. Wordt elke 15 minuten bijgewerkt.", + "usage_tips": "Gebruik de statuswaarde om het typische huidige prijsniveau te zien. Voor kostenberekeningen gebruik: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" + }, + "leading_price_average": { + "description": "Typische elektriciteitsprijs voor de komende 24 uur per kWh (configureerbare weergave)", + "long_description": "Toont de prijs per kWh berekend uit de komende 24 uur. **Standaard toont de status de mediaan** (resistent tegen extreme prijspieken, toont verwacht prijsniveau). Je kunt dit wijzigen in de integratie-instellingen om het rekenkundig gemiddelde te tonen. De alternatieve waarde is beschikbaar als attribuut.", + "usage_tips": "Gebruik de statuswaarde om het typische toekomstige prijsniveau te zien. Voor kostenberekeningen gebruik: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" + }, + "trailing_price_min": { + "description": "De minimale elektriciteitsprijs voor de afgelopen 24 uur per kWh", + "long_description": "Toont de minimumprijs per kWh van de afgelopen 24 uur (voortschrijdend minimum) van je Tibber-abonnement. Dit geeft de laagste prijs die in de afgelopen 24 uur is gezien.", + "usage_tips": "Gebruik dit om de beste prijsmogelijkheid te zien die je in de afgelopen 24 uur had en vergelijk deze met huidige prijzen." + }, + "trailing_price_max": { + "description": "De maximale elektriciteitsprijs voor de afgelopen 24 uur per kWh", + "long_description": "Toont de maximumprijs per kWh van de afgelopen 24 uur (voortschrijdend maximum) van je Tibber-abonnement. Dit geeft de hoogste prijs die in de afgelopen 24 uur is gezien.", + "usage_tips": "Gebruik dit om de piekprijs in de afgelopen 24 uur te zien en prijsvolatiliteit te beoordelen." + }, + "leading_price_min": { + "description": "De minimale elektriciteitsprijs voor de komende 24 uur per kWh", + "long_description": "Toont de minimumprijs per kWh van de komende 24 uur (vooruitlopend minimum) van je Tibber-abonnement. Dit geeft de laagste prijs die wordt verwacht in de komende 24 uur op basis van prognosegegevens.", + "usage_tips": "Gebruik dit om de beste prijsmogelijkheid te identificeren die eraan komt en plan energie-intensieve taken dienovereenkomstig." + }, + "leading_price_max": { + "description": "De maximale elektriciteitsprijs voor de komende 24 uur per kWh", + "long_description": "Toont de maximumprijs per kWh van de komende 24 uur (vooruitlopend maximum) van je Tibber-abonnement. Dit geeft de hoogste prijs die wordt verwacht in de komende 24 uur op basis van prognosegegevens.", + "usage_tips": "Gebruik dit om te voorkomen dat je apparaten draait tijdens aanstaande piekprijsperioden." + }, + "current_interval_price_level": { + "description": "De huidige prijsniveauclassificatie", + "long_description": "Toont de classificatie van Tibber van de huidige prijs vergeleken met historische prijzen", + "usage_tips": "Gebruik dit om automatiseringen te maken op basis van relatieve prijsniveaus in plaats van absolute prijzen" + }, + "next_interval_price_level": { + "description": "Prijsniveau voor het volgende 15-minuten interval", + "long_description": "Toont de prijsniveauclassificatie voor het komende interval. Helpt korte-termijn prijswijzigingen te anticiperen voor directe planning.", + "usage_tips": "Gebruik voor snelle beslissingen over het starten of stoppen van apparaten met hoog vermogen in de komende minuten." + }, + "previous_interval_price_level": { + "description": "Prijsniveau voor het vorige 15-minuten interval", + "long_description": "Toont de prijsniveauclassificatie voor het laatste interval. Nuttig voor historische vergelijking en begrip van recente prijstrends.", + "usage_tips": "Gebruik om huidige vs recente prijsniveaus te vergelijken of verbruikspatronen te analyseren tegen historische prijzen." + }, + "current_hour_price_level": { + "description": "Geaggregeerd prijsniveau voor huidig voortschrijdend uur (5 intervallen)", + "long_description": "Toont het mediane prijsniveau over 5 intervallen (2 ervoor, huidig, 2 erna) dat ongeveer 75 minuten beslaat. Biedt een stabielere prijsniveauindicator die kortetermijnschommelingen afvlakt.", + "usage_tips": "Gebruik voor planningsbeslissingen op middellange termijn waarbij je niet wilt reageren op korte prijspieken of -dalingen." + }, + "next_hour_price_level": { + "description": "Geaggregeerd prijsniveau voor volgend voortschrijdend uur (5 intervallen vooruit)", + "long_description": "Toont het mediane prijsniveau over 5 intervallen gecentreerd één uur vooruit. Helpt verbruik te plannen op basis van aanstaande prijstrends in plaats van momentane toekomstige prijzen.", + "usage_tips": "Gebruik om activiteiten voor het volgende uur te plannen op basis van een vloeiende prijsniveauprognose." + }, + "current_interval_price_rating": { + "description": "Hoe de prijs van het huidige interval zich verhoudt tot historische gegevens", + "long_description": "Toont hoe de prijs van het huidige interval zich verhoudt tot historische prijsgegevens als een percentage", + "usage_tips": "Een positief percentage betekent dat de huidige prijs boven het gemiddelde ligt, negatief betekent onder het gemiddelde" + }, + "next_interval_price_rating": { + "description": "Prijsbeoordeling voor het volgende 15-minuten interval", + "long_description": "Toont hoe de prijs van het volgende interval zich verhoudt tot het voortschrijdende 24-uurs gemiddelde. Helpt te anticiperen of aanstaande prijzen boven of onder de recente trend liggen.", + "usage_tips": "Gebruik om snelle beslissingen te nemen over het starten van activiteiten in het volgende interval op basis van relatieve prijspositie." + }, + "previous_interval_price_rating": { + "description": "Prijsbeoordeling voor het vorige 15-minuten interval", + "long_description": "Toont hoe de prijs van het laatste interval zich verhield tot het voortschrijdende gemiddelde. Nuttig voor het begrijpen van recent prijsgedrag.", + "usage_tips": "Gebruik voor het analyseren van hoe prijsbeoordelingen in de loop van de tijd veranderden of het valideren van eerdere verbruiksbeslissingen." + }, + "current_hour_price_rating": { + "description": "Geaggregeerde prijsbeoordeling voor huidig voortschrijdend uur (5 intervallen)", + "long_description": "Toont de gemiddelde beoordeling over 5 intervallen (2 ervoor, huidig, 2 erna). Gebaseerd op het gemiddelde procentuele verschil van het voortschrijdende 24u gemiddelde, wat een vloeiende beoordelingsindicator oplevert.", + "usage_tips": "Gebruik voor stabiele prijsbeoordeling op middellange termijn die niet overreageert op korte prijsafwijkingen." + }, + "next_hour_price_rating": { + "description": "Geaggregeerde prijsbeoordeling voor volgend voortschrijdend uur (5 intervallen vooruit)", + "long_description": "Toont de gemiddelde beoordeling voor 5 intervallen gecentreerd één uur vooruit. Helpt te begrijpen of het volgende uur over het algemeen boven of onder gemiddelde prijzen zal liggen.", + "usage_tips": "Gebruik om te beslissen of je een uur moet wachten voordat je activiteiten met hoog verbruik start." + }, + "next_avg_1h": { + "description": "Gemiddelde prijs voor het volgende 1 uur (alleen vooruit vanaf volgend interval)", + "long_description": "Vooruitkijkend gemiddelde: Toont gemiddelde van volgende 4 intervallen (1 uur) vanaf het VOLGENDE 15-minuten interval (niet inclusief huidig). Verschilt van current_hour_average_price die vorige intervallen omvat. Gebruik voor absolute prijsdrempelplanning.", + "usage_tips": "Absolute prijsdrempel: Start apparaten alleen wanneer het gemiddelde onder je maximaal acceptabele prijs blijft (bijv. onder 0,25 EUR/kWh). Combineer met trendsensor voor optimale timing. Let op: Dit is GEEN vervanging voor uurprijzen - gebruik current_hour_average_price daarvoor." + }, + "next_avg_2h": { + "description": "Gemiddelde prijs voor de volgende 2 uur", + "long_description": "Toont de gemiddelde prijs voor de volgende 8 intervallen (2 uur) vanaf het volgende 15-minuten interval.", + "usage_tips": "Absolute prijsdrempel: Stel een maximaal acceptabele gemiddelde prijs in voor standaard apparaten zoals wasmachines. Zorgt ervoor dat je nooit meer betaalt dan je limiet." + }, + "next_avg_3h": { + "description": "Gemiddelde prijs voor de volgende 3 uur", + "long_description": "Toont de gemiddelde prijs voor de volgende 12 intervallen (3 uur) vanaf het volgende 15-minuten interval.", + "usage_tips": "Absolute prijsdrempel: Voor EU Eco-programma's (vaatwassers, 3-4u looptijd). Start alleen wanneer 3u gemiddelde onder je prijslimiet is. Gebruik met trendsensor om beste moment binnen acceptabel prijsbereik te vinden." + }, + "next_avg_4h": { + "description": "Gemiddelde prijs voor de volgende 4 uur", + "long_description": "Toont de gemiddelde prijs voor de volgende 16 intervallen (4 uur) vanaf het volgende 15-minuten interval.", + "usage_tips": "Absolute prijsdrempel: Stel maximaal acceptabele prijs in voor warmtepompen of boilers. Voorkomt werking tijdens dure perioden ongeacht relatieve trends." + }, + "next_avg_5h": { + "description": "Gemiddelde prijs voor de volgende 5 uur", + "long_description": "Toont de gemiddelde prijs voor de volgende 20 intervallen (5 uur) vanaf het volgende 15-minuten interval.", + "usage_tips": "Absolute prijsdrempel: Brug tussen korte en lange termijn planning. Gebruik voor uitgebreide cycli met harde prijslimieten (bijv. zwembadpompen, uitgebreide verwarmingscycli)." + }, + "next_avg_6h": { + "description": "Gemiddelde prijs voor de volgende 6 uur", + "long_description": "Toont de gemiddelde prijs voor de volgende 24 intervallen (6 uur) vanaf het volgende 15-minuten interval.", + "usage_tips": "Absolute prijsdrempel: Avondplanning met prijslimieten. Plan taken alleen als 6u gemiddelde onder je maximaal acceptabele kosten blijft." + }, + "next_avg_8h": { + "description": "Gemiddelde prijs voor de volgende 8 uur", + "long_description": "Toont de gemiddelde prijs voor de volgende 32 intervallen (8 uur) vanaf het volgende 15-minuten interval.", + "usage_tips": "Absolute prijsdrempel: Nachtelijke bedieningsbeslissingen. Stel harde prijslimieten in voor nachtelijke belastingen (batterij opladen, thermische opslag). Overschrijd nooit je budget." + }, + "next_avg_12h": { + "description": "Gemiddelde prijs voor de volgende 12 uur", + "long_description": "Toont de gemiddelde prijs voor de volgende 48 intervallen (12 uur) vanaf het volgende 15-minuten interval.", + "usage_tips": "Absolute prijsdrempel: Strategische beslissingen met prijslimieten. Ga alleen door als 12u gemiddelde onder je maximaal acceptabele prijs is. Goed voor uitgestelde grote belastingen." + }, + "price_outlook_1h": { + "description": "Prijsvooruitzicht voor het volgende uur", + "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in het volgende uur (4 intervallen). Alle vooruitzicht-sensoren (1u–12u) delen hetzelfde uitgangspunt: je huidige prijs — ze verschillen alleen in venstergrootte. Stijgend/dalend bij ±3%, sterk bij ±9% (configureerbaar, volatiliteitsadaptief).", + "usage_tips": "Beslissingshulp: 'stijgend' = HANDEL NU, je huidige prijs is goedkoper dan het venstergemiddelde. 'dalend' = WACHT, het venstergemiddelde is goedkoper dan nu. 'stabiel' = timing maakt niet uit." + }, + "price_outlook_2h": { + "description": "Prijsvooruitzicht voor de volgende 2 uur", + "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 2 uur (8 intervallen). 'stijgend' = huidige prijs is onder het 2u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9% (configureerbaar, volatiliteitsadaptief).", + "usage_tips": "Apparaten: 'stijgend' = start nu, je hebt een goede prijs t.o.v. de volgende 2u. 'dalend' = betere gemiddelde prijzen komen, stel uit indien mogelijk. Combineer met price_trajectory_2h om te onderscheiden of prijzen nog dalen of al stijgen." + }, + "price_outlook_3h": { + "description": "Prijsvooruitzicht voor de volgende 3 uur", + "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 3 uur (12 intervallen). 'stijgend' = huidige prijs is onder het 3u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", + "usage_tips": "Eco-programma's: 'stijgend' = start de eco-cyclus nu, prijzen zijn gemiddeld hoger in het venster. 'dalend' = wacht, goedkoper gemiddeld venster komt." + }, + "price_outlook_4h": { + "description": "Prijsvooruitzicht voor de volgende 4 uur", + "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 4 uur (16 intervallen). 'stijgend' = huidige prijs is onder het 4u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", + "usage_tips": "Warmtepomp/batterij: 'stijgend' = laad nu, je zit op een relatief dieptepunt. Combineer met price_trajectory_4h om te zien of prijzen nog dalen of al stijgen." + }, + "price_outlook_5h": { + "description": "Prijsvooruitzicht voor de volgende 5 uur", + "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 5 uur (20 intervallen). 'stijgend' = huidige prijs is onder het 5u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", + "usage_tips": "Uitgebreide cycli: 'stijgend' of 'stabiel' = goed moment om te starten. 'dalend' = wacht als je planning het toelaat." + }, + "price_outlook_6h": { + "description": "Prijsvooruitzicht voor de volgende 6 uur", + "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 6 uur (24 intervallen). 'stijgend' = huidige prijs is onder het 6u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", + "usage_tips": "Avandbeslissingen: 'stijgend' = gebruik stroom nu terwijl het relatief goedkoop is. 'dalend' = avond-/nachtprijzen worden gemiddeld beter, wacht indien mogelijk." + }, + "price_outlook_8h": { + "description": "Prijsvooruitzicht voor de volgende 8 uur", + "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de volgende 8 uur (32 intervallen). 'stijgend' = huidige prijs is onder het 8u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", + "usage_tips": "Nachtplanning: 'stijgend' = vanavond/morgen wordt gemiddeld duurder, gebruik stroom nu. 'dalend' = nachtprijzen worden goedkoper, wachten loont." + }, + "price_outlook_12h": { + "description": "Prijsvooruitzicht voor de komende 12 uur", + "long_description": "Vergelijkt je huidige prijs met het gemiddelde van alle intervallen in de komende 12 uur (48 intervallen). 'stijgend' = huidige prijs is onder het 12u-venstergemiddelde; 'dalend' = venstergemiddelde is goedkoper dan nu. Stijgend/dalend bij ±3%, sterk bij ±9%.", + "usage_tips": "Strategische beslissingen: 'stijgend' = je zit op een dieptepunt t.o.v. de volgende 12u, goed moment voor stroomintensieve taken. 'dalend' = aanzienlijk betere gemiddelde prijzen komen." + }, + "price_trajectory_2h": { + "description": "Prijsrichting binnen het volgende 2-uurs venster", + "long_description": "Compares the average of the first hour with the average of the second hour within the next 2-hour window. 'rising' = second half more expensive than first half. 'falling' = second half cheaper. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive) — revealing the upcoming reversal. 'outlook: falling + trajectory: rising' = you're AT the minimum, act now." + }, + "price_trajectory_3h": { + "description": "Prijsrichting binnen het volgende 3-uurs venster", + "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, prices are already recovering — start now." + }, + "price_trajectory_4h": { + "description": "Prijsrichting binnen het volgende 4-uurs venster", + "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Complements price_outlook_4h. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Heat pump charging: 'rising' = first half is cheaper, charge now. 'falling' = second half is cheaper, wait. Combine with outlook: if both rising, very strong signal to act now." + }, + "price_trajectory_5h": { + "description": "Prijsrichting binnen het volgende 5-uurs venster", + "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Long cycles: 'outlook: rising + trajectory: rising' = clear signal to start now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start." + }, + "price_trajectory_6h": { + "description": "Prijsrichting binnen het volgende 6-uurs venster", + "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the low." + }, + "price_trajectory_8h": { + "description": "Prijsrichting binnen het volgende 8-uurs venster", + "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half will be cheapest, delay start." + }, + "price_trajectory_12h": { + "description": "Prijsrichting binnen het volgende 12-uurs venster", + "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = afternoon/evening scheduling is better." + }, + "current_price_trend": { + "description": "Huidige prijstrend-richting en hoe lang deze aanhoudt", + "long_description": "Toont de huidige prijstrend (stijgend/dalend/stabiel) door historisch momentum (gewogen 1u terugblik) te combineren met toekomstperspectief. Herkent lopende trends eerder dan alleen toekomstanalyse. Gebruikt ±3% momentum-drempel en volatiliteit-afhankelijke toekomstvergelijking. Berekent dynamisch tot de volgende trendwijziging (of 3u standaard als geen wijziging in 24u). De status toont de huidige richting, attributen tonen wanneer het verandert en wat er daarna komt.", + "usage_tips": "Statusweergave: Dashboard-zichtbaarheid van 'wat gebeurt er nu tot wanneer'. Perfect gesynchroniseerd met next_price_trend_change. Voorbeeld: Badge met 'Stijgend voor 2,5u' of 'Dalend tot 16:45'. Beter dan tijdvenster-sensoren omdat het begrijpt dat je REEDS in een trend zit, niet alleen toekomstige veranderingen voorspelt. Gebruik voor snelle visuele overview, niet voor automatiserings-triggers." + }, + "next_price_trend_change": { + "description": "Wanneer de volgende significante prijstrendwijziging zal plaatsvinden", + "long_description": "Scant de komende 24 uur (96 intervallen) om te vinden wanneer de prijstrend-richting zal veranderen. Alleen richtingswijzigingen tellen: stijgend/sterk stijgend vormen één groep, dalend/sterk dalend een andere, stabiel is apart. Een verandering van stijgend naar sterk stijgend is GEEN trendwijziging. Gebruikt volatiliteit-adaptieve drempelwaarden (standaard: ±3%/±9%) met hysterese (standaard: 3 opeenvolgende intervallen). Retourneert het tijdstempel wanneer de wijziging wordt verwacht.", + "usage_tips": "Gebeurtenisgestuurde automatisering: Trigger acties WANNEER trend wijzigt, niet OVER X uur. Voorbeeld: 'Laad EV wanneer volgende trendwijziging dalende prijzen toont' of 'Start vaatwasser voordat prijzen stijgen'. Vult tijdvenster-sensors aan (price_outlook_Xh) die beantwoorden 'ZULLEN prijzen over X uur hoger zijn?'" + }, + "next_price_trend_change_in": { + "description": "Tijd tot de volgende prijstrendwijziging", + "long_description": "Toont hoe lang het duurt tot de volgende significante prijstrendwijziging plaatsvindt. De waarde wordt weergegeven in uren (bijv. 2,25 u) voor dashboards. Deelt dezelfde analyse als de tijdstempel-sensor 'Volgende Prijstrend Wijziging', maar presenteert het als een aftelduur. Wordt elke minuut bijgewerkt voor nauwkeurige aftellingen. Toont 'Onbekend' wanneer geen trendwijziging wordt verwacht in de komende 24 uur.", + "usage_tips": "Dashboard-aftelling: Toon 'Trendwijziging over 1,5 u' als live aftelling. Voor automatiseringen: 'Als next_price_trend_change_in < 0,25 (15 min), bereid je voor op prijsrichtingswijziging'. Vult 'Volgende Prijstrend Wijziging' (tijdstempel) aan — gebruik het tijdstempel voor 'WANNEER' en deze sensor voor 'HOE LANG'." + }, + "daily_rating": { + "description": "Hoe de prijzen van vandaag zich verhouden tot historische gegevens", + "long_description": "Toont hoe de prijzen van vandaag zich verhouden tot historische prijsgegevens als percentage", + "usage_tips": "Een positief percentage betekent dat de prijzen van vandaag boven het gemiddelde liggen, negatief betekent onder het gemiddelde" + }, + "monthly_rating": { + "description": "Hoe de prijzen van deze maand zich verhouden tot historische gegevens", + "long_description": "Toont hoe de prijzen van deze maand zich verhouden tot historische prijsgegevens als een percentage", + "usage_tips": "Een positief percentage betekent dat de prijzen van deze maand boven het gemiddelde liggen, negatief betekent onder het gemiddelde" + }, + "data_timestamp": { + "description": "Tijdstempel van het laatst beschikbare prijsgegevensinterval", + "long_description": "Toont het tijdstempel van het laatst beschikbare prijsgegevensinterval van je Tibber-abonnement" + }, + "today_volatility": { + "description": "Hoeveel de stroomprijzen vandaag schommelen", + "long_description": "Geeft aan of de prijzen vandaag stabiel blijven of grote schommelingen hebben. Lage volatiliteit betekent vrij constante prijzen – timing maakt weinig uit. Hoge volatiliteit betekent duidelijke prijsverschillen gedurende de dag – goede kans om verbruik naar goedkopere periodes te verschuiven. `price_coefficient_variation_%` toont het percentage, `price_spread` de absolute prijsspanne.", + "usage_tips": "Gebruik dit om te beslissen of optimaliseren de moeite waard is. Bij lage volatiliteit kun je apparaten op elk moment laten draaien. Bij hoge volatiliteit bespaar je merkbaar door Best Price-periodes te volgen." + }, + "tomorrow_volatility": { + "description": "Hoeveel de stroomprijzen morgen zullen schommelen", + "long_description": "Geeft aan of de prijzen morgen stabiel blijven of grote schommelingen hebben. Beschikbaar zodra de gegevens voor morgen zijn gepubliceerd (meestal 13:00–14:00 CET). Lage volatiliteit betekent vrij constante prijzen – timing is niet kritisch. Hoge volatiliteit betekent duidelijke prijsverschillen gedurende de dag – goede kans om energie-intensieve taken te plannen. `price_coefficient_variation_%` toont het percentage, `price_spread` de absolute prijsspanne.", + "usage_tips": "Gebruik dit om het verbruik van morgen te plannen. Hoge volatiliteit? Plan flexibele lasten in Best Price-periodes. Lage volatiliteit? Laat apparaten draaien wanneer het jou uitkomt." + }, + "next_24h_volatility": { + "description": "Hoeveel de prijzen de komende 24 uur zullen schommelen", + "long_description": "Geeft de prijsvolatiliteit aan voor een rollend 24-uursvenster vanaf nu (wordt elke 15 minuten bijgewerkt). Lage volatiliteit betekent vrij constante prijzen. Hoge volatiliteit betekent merkbare prijsschommelingen en dus optimalisatiemogelijkheden. In tegenstelling tot vandaag/morgen-sensoren overschrijdt deze daggrenzen en geeft een doorlopende vooruitblik. `price_coefficient_variation_%` toont het percentage, `price_spread` de absolute prijsspanne.", + "usage_tips": "Het beste voor beslissingen in real-time. Gebruik bij het plannen van batterijladen of andere flexibele lasten die over middernacht kunnen lopen. Biedt een consistent 24-uurs beeld, los van de kalenderdag." + }, + "today_tomorrow_volatility": { + "description": "Gecombineerde prijsvolatiliteit voor vandaag en morgen", + "long_description": "Geeft de totale volatiliteit weer wanneer vandaag en morgen samen worden bekeken (zodra morgengegevens beschikbaar zijn). Toont of er duidelijke prijsverschillen over de daggrens heen zijn. Valt terug naar alleen vandaag als morgengegevens ontbreken. Handig voor meerdaagse optimalisatie. `price_coefficient_variation_%` toont het percentage, `price_spread` de absolute prijsspanne.", + "usage_tips": "Gebruik voor taken die meerdere dagen beslaan. Kijk of de prijsverschillen groot genoeg zijn om plannen op te baseren. De afzonderlijke dag-sensoren tonen per-dag bijdragen als je meer detail wilt." + }, + "data_lifecycle_status": { + "description": "Huidige status van prijsgegevenslevenscyclus en caching", + "long_description": "Toont of de integratie gebruikmaakt van gecachte gegevens of verse gegevens van de API. Toont huidige levenscyclusstatus: 'cached' (gebruikt opgeslagen gegevens), 'fresh' (net opgehaald van API), 'refreshing' (momenteel aan het ophalen), 'searching_tomorrow' (actief aan het zoeken naar morgengegevens na 13:00), 'turnover_pending' (binnen 15 minuten voor middernacht, 23:45-00:00), of 'error' (ophalen mislukt). Bevat uitgebreide attributen zoals cache-leeftijd, volgende API-poll-tijd, gegevensvolledigheid en API-aanroepstatistieken.", + "usage_tips": "Gebruik deze diagnostische sensor om gegevensfrisheid en API-aanroeppatronen te begrijpen. Controleer het 'cache_age'-attribuut om te zien hoe oud de huidige gegevens zijn. Monitor 'next_api_poll' om te weten wanneer de volgende update is gepland. Gebruik 'data_completeness' om te zien of gisteren/vandaag/morgen gegevens beschikbaar zijn. De 'api_calls_today'-teller helpt API-gebruik bij te houden. Perfect voor probleemoplossing of begrip van integratiegedrag." + }, + "best_price_end_time": { + "description": "Totale lengte van huidige of volgende voordelige periode (state in uren, attribuut in minuten)", + "long_description": "Toont hoe lang de voordelige periode duurt. State gebruikt uren (float) voor een leesbare UI; attribuut `period_duration_minutes` behoudt afgeronde minuten voor automatiseringen. Actief → duur van de huidige periode, anders de volgende.", + "usage_tips": "UI kan 1,5 u tonen terwijl `period_duration_minutes` = 90 voor automatiseringen blijft." + }, + "best_price_period_duration": { + "description": "Lengte van huidige/volgende goedkope periode", + "long_description": "Totale duur van huidige of volgende goedkope periode. De state wordt weergegeven in uren (bijv. 1,5 u) voor gemakkelijk aflezen in de UI, terwijl het attribuut `period_duration_minutes` dezelfde waarde in minuten levert (bijv. 90) voor automatiseringen. Deze waarde vertegenwoordigt de **volledige geplande duur** van de periode en is constant gedurende de gehele periode, zelfs als de resterende tijd (remaining_minutes) afneemt.", + "usage_tips": "Combineer met remaining_minutes om te berekenen wanneer langlopende apparaten moeten worden gestopt: Periode is `period_duration_minutes - remaining_minutes` minuten geleden gestart. Dit attribuut ondersteunt energie-optimalisatiestrategieën door te helpen bij het plannen van hoog-verbruiksactiviteiten binnen goedkope periodes." + }, + "best_price_remaining_minutes": { + "description": "Resterende tijd in huidige goedkope periode", + "long_description": "Toont hoeveel tijd er nog overblijft in de huidige goedkope periode. De state wordt weergegeven in uren (bijv. 0,75 u) voor gemakkelijk aflezen in dashboards, terwijl het attribuut `remaining_minutes` dezelfde tijd in minuten levert (bijv. 45) voor automatiseringsvoorwaarden. **Afteltimer**: Deze waarde neemt elke minuut af tijdens een actieve periode. Geeft 0 terug wanneer geen goedkope periode actief is. Werkt elke minuut bij.", + "usage_tips": "Voor automatiseringen: Gebruik attribuut `remaining_minutes` zoals 'Als remaining_minutes > 60, start vaatwasser nu (genoeg tijd om te voltooien)' of 'Als remaining_minutes < 15, rond huidige cyclus binnenkort af'. UI toont gebruiksvriendelijke uren (bijv. 1,25 u). Waarde 0 geeft aan dat geen goedkope periode actief is." + }, + "best_price_progress": { + "description": "Voortgang door huidige goedkope periode (0% wanneer inactief)", + "long_description": "Toont voortgang door de huidige goedkope periode als 0-100%. Geeft 0% terug wanneer geen periode actief is. Werkt elke minuut bij. 0% betekent periode net gestart, 100% betekent dat deze bijna eindigt.", + "usage_tips": "Geweldig voor visuele voortgangsbalken. Gebruik in automatiseringen: 'Als progress > 0 EN progress > 75, stuur melding dat goedkope periode bijna eindigt'. Waarde 0 geeft aan dat geen periode actief is." + }, + "best_price_next_start_time": { + "description": "Totale lengte van huidige of volgende dure periode (state in uren, attribuut in minuten)", + "long_description": "Toont hoe lang de dure periode duurt. State gebruikt uren (float) voor de UI; attribuut `period_duration_minutes` behoudt afgeronde minuten voor automatiseringen. Actief → duur van de huidige periode, anders de volgende.", + "usage_tips": "UI kan 0,75 u tonen terwijl `period_duration_minutes` = 45 voor automatiseringen blijft." + }, + "best_price_next_in_minutes": { + "description": "Resterende tijd in huidige dure periode (state in uren, attribuut in minuten)", + "long_description": "Toont hoeveel tijd er nog over is. State gebruikt uren (float); attribuut `remaining_minutes` behoudt afgeronde minuten voor automatiseringen. Geeft 0 terug wanneer er geen periode actief is. Werkt elke minuut bij.", + "usage_tips": "Gebruik `remaining_minutes` voor drempels (bijv. > 60) terwijl de state in uren goed leesbaar blijft." + }, + "peak_price_end_time": { + "description": "Tijd tot volgende dure periode (state in uren, attribuut in minuten)", + "long_description": "Toont hoe lang het duurt tot de volgende dure periode start. State gebruikt uren (float); attribuut `next_in_minutes` behoudt afgeronde minuten voor automatiseringen. Tijdens een actieve periode is dit de tijd tot de periode na de huidige. 0 tijdens korte overgangen. Werkt elke minuut bij.", + "usage_tips": "Gebruik `next_in_minutes` in automatiseringen (bijv. < 10) terwijl de state in uren leesbaar blijft." + }, + "peak_price_period_duration": { + "description": "Totale duur van huidige of volgende dure periode in minuten", + "long_description": "Toont de totale duur van de dure periode in minuten. Tijdens een actieve periode toont dit de volledige lengte van de huidige periode. Wanneer geen periode actief is, toont dit de duur van de volgende komende periode. Voorbeeld: '60 minuten' voor een 1-uur periode.", + "usage_tips": "Gebruik om energiebesparende maatregelen te plannen: 'Als duration > 120, verlaag verwarmingstemperatuur agressiever (lange dure periode)'. Helpt bij het inschatten hoeveel energieverbruik moet worden verminderd." + }, + "peak_price_remaining_minutes": { + "description": "Resterende tijd in huidige dure periode", + "long_description": "Toont hoeveel tijd er nog overblijft in de huidige dure periode. De state wordt weergegeven in uren (bijv. 0,75 u) voor gemakkelijk aflezen in dashboards, terwijl het attribuut `remaining_minutes` dezelfde tijd in minuten levert (bijv. 45) voor automatiseringsvoorwaarden. **Afteltimer**: Deze waarde neemt elke minuut af tijdens een actieve periode. Geeft 0 terug wanneer geen dure periode actief is. Werkt elke minuut bij.", + "usage_tips": "Voor automatiseringen: Gebruik attribuut `remaining_minutes` zoals 'Als remaining_minutes > 60, annuleer uitgestelde laadronde' of 'Als remaining_minutes < 15, hervat normaal gebruik binnenkort'. UI toont gebruiksvriendelijke uren (bijv. 1,0 u). Waarde 0 geeft aan dat geen dure periode actief is." + }, + "peak_price_progress": { + "description": "Voortgang door huidige dure periode (0% wanneer inactief)", + "long_description": "Toont de voortgang door de huidige dure periode als 0-100%. Geeft 0% terug wanneer geen periode actief is. Werkt elke minuut bij.", + "usage_tips": "Visuele voortgangsindicator in dashboards. Automatisering: 'Als progress > 0 EN progress > 90, bereid normale verwarmingsplanning voor'. Waarde 0 geeft aan dat er geen actieve periode is." + }, + "peak_price_next_start_time": { + "description": "Wanneer de volgende dure periode begint", + "long_description": "Toont wanneer de volgende komende dure periode begint. Tijdens een actieve periode toont dit de start van de VOLGENDE periode na de huidige. Geeft alleen 'Onbekend' terug wanneer geen toekomstige periodes zijn geconfigureerd.", + "usage_tips": "Altijd nuttig voor planning: 'Volgende dure periode begint over 2 uur'. Automatisering: 'Wanneer volgende starttijd over 30 minuten is, verlaag verwarmingstemperatuur preventief'." + }, + "peak_price_next_in_minutes": { + "description": "Tijd tot volgende dure periode", + "long_description": "Toont hoe lang het duurt tot de volgende dure periode. De state wordt weergegeven in uren (bijv. 0,5 u) voor dashboards, terwijl het attribuut `next_in_minutes` minuten levert (bijv. 30) voor automatiseringsvoorwaarden. Tijdens een actieve periode toont dit de tijd tot de periode NA de huidige. Geeft 0 terug tijdens korte overgangsmomenten. Werkt elke minuut bij.", + "usage_tips": "Voor automatiseringen: Gebruik attribuut `next_in_minutes` zoals 'Als next_in_minutes > 0 EN next_in_minutes < 10, voltooi huidige laadcyclus nu voordat prijzen stijgen'. Waarde > 0 geeft altijd aan dat een toekomstige dure periode is gepland." + }, + "home_type": { + "description": "Type woning (appartement, huis enz.)", + "long_description": "Toont het woningtype zoals geconfigureerd in je Tibber-account. Deze metadata kunnen nuttig zijn voor het categoriseren van energieverbruikspatronen.", + "usage_tips": "Gebruik dit voor het organiseren van je smart home-systeem of voor analysedoeleinden." + }, + "home_size": { + "description": "Woonoppervlakte in vierkante meters", + "long_description": "Toont de grootte van je woning in vierkante meters zoals geconfigureerd in je Tibber-account. Kan worden gebruikt om energieverbruik per vierkante meter te berekenen.", + "usage_tips": "Gebruik dit in energie-efficiëntieberekeningen: 'Mijn woning verbruikt X kWh per vierkante meter per jaar'." + }, + "main_fuse_size": { + "description": "Hoofdzekeringgrootte in ampères", + "long_description": "Toont de capaciteit van je hoofdzekering in ampères. Dit bepaalt de maximale elektrische belasting die je woning tegelijkertijd aankan.", + "usage_tips": "Gebruik dit om overbelasting te voorkomen: 'Als het totale stroomverbruik de zekeringgrootte nadert, stel het starten van extra apparaten uit'." + }, + "number_of_residents": { + "description": "Aantal personen dat in de woning woont", + "long_description": "Toont het aantal bewoners zoals geconfigureerd in je Tibber-account. Nuttig voor berekeningen van energieverbruik per persoon.", + "usage_tips": "Gebruik dit voor huishoudelijke energie-analyses: 'Energieverbruik per persoon per dag'." + }, + "primary_heating_source": { + "description": "Primair verwarmingssysteemtype", + "long_description": "Toont het type verwarmingssysteem dat in je woning wordt gebruikt zoals geconfigureerd in je Tibber-account. Dit kan een warmtepomp, elektrische verwarming, gas, olie of andere warmtebronnen zijn.", + "usage_tips": "Gebruik dit om verwarmingsgerelateerde automatiseringen te categoriseren of voor energieverbruiksanalyse per verwarmingstype." + }, + "grid_company": { + "description": "Naam van je elektriciteitsnetbeheerder", + "long_description": "Toont de naam van het bedrijf dat het elektriciteitsnet in je gebied beheert. Dit is de distributienetwerkbeheerder (DNB) die verantwoordelijk is voor de levering van elektriciteit aan je woning.", + "usage_tips": "Nuttig voor administratieve doeleinden en het oplossen van netgerelateerde problemen." + }, + "grid_area_code": { + "description": "Netgebied-identificatiecode", + "long_description": "Toont de code die je elektriciteitsnetgebied identificeert. Deze code wordt door de netbeheerder gebruikt voor routing- en factureringsdoeleinden.", + "usage_tips": "Gebruik dit als administratieve referentie of bij contact met je netbeheerder." + }, + "price_area_code": { + "description": "Elektriciteitsprijszonecode", + "long_description": "Toont de code voor je elektriciteitsprijszone (bijv. NO1, NO2, SE3, DK1). Verschillende zones hebben verschillende groothandelselektriciteitsprijzen op basis van regionaal aanbod en vraag.", + "usage_tips": "Gebruik dit om te begrijpen in welke prijsregio je je bevindt. Nuttig bij het vergelijken van prijzen met anderen of het analyseren van regionale prijspatronen." + }, + "consumption_ean": { + "description": "EAN-code voor elektriciteitsverbruiksmeting", + "long_description": "Toont de European Article Number (EAN)-code die je elektriciteitsverbruiksmeter uniek identificeert. Deze 18-cijferige code wordt gebruikt voor facturerings- en administratieve doeleinden.", + "usage_tips": "Gebruik dit bij communicatie met je elektriciteitsleverancier of voor administratieve documentatie." + }, + "production_ean": { + "description": "EAN-code voor elektriciteitsproductiemeting", + "long_description": "Toont de European Article Number (EAN)-code voor je elektriciteitsproductiemeter (als je zonnepanelen of andere opwekking hebt). Deze code volgt elektriciteit die je terug het net op stuurt.", + "usage_tips": "Relevant als je zonnepanelen of andere elektriciteitsopwekking hebt. Gebruik voor administratieve doeleinden en bij het claimen van teruglevering." + }, + "energy_tax_type": { + "description": "Type energiebelasting toegepast", + "long_description": "Toont de energiebelastingcategorie die wordt toegepast op je elektriciteitsverbruik. Belastingtarieven variëren per land en soms per consumententype (particulier, zakelijk enz.).", + "usage_tips": "Gebruik dit voor het begrijpen van de uitsplitsing van je elektriciteitsrekening en voor berekeningen van totale kosten." + }, + "vat_type": { + "description": "BTW-categorie (belasting over toegevoegde waarde)", + "long_description": "Toont de BTW-categorie die wordt toegepast op je elektriciteitsverbruik. BTW-tarieven variëren per land en kunnen verschillen voor elektriciteit vergeleken met andere goederen en diensten.", + "usage_tips": "Gebruik dit voor het begrijpen van je elektriciteitsrekening en het berekenen van totale kosten inclusief belastingen." + }, + "estimated_annual_consumption": { + "description": "Geschat jaarlijks elektriciteitsverbruik in kWh", + "long_description": "Toont je geschatte jaarlijkse elektriciteitsverbruik in kilowattuur zoals berekend of geconfigureerd in je Tibber-account. Deze schatting wordt gebruikt om daadwerkelijk verbruik te vergelijken met verwachte waarden.", + "usage_tips": "Gebruik dit om te volgen of je daadwerkelijke verbruik boven of onder de verwachtingen ligt. Vergelijk maandelijks verbruik met 1/12 van deze waarde om ongebruikelijke patronen te identificeren." + }, + "subscription_status": { + "description": "Status van je Tibber-abonnement", + "long_description": "Geeft aan of je Tibber-abonnement momenteel actief is, beëindigd of wacht op activering. Een 'Actief'-status betekent dat je actief elektriciteit via Tibber afneemt.", + "usage_tips": "Gebruik dit om je abonnementsstatus te monitoren. Stel meldingen in als de status verandert van 'Actief' om ononderbroken service te waarborgen." + }, + "day_pattern_yesterday": { + "description": "Gedetecteerd prijspatroon van gisterens elektriciteitsprijzen", + "long_description": "Classificeert gisteren in een prijspatroon: Dal (goedkoop in het midden), Piek (duur in het midden), Dubbel Dal (twee goedkope perioden), Dubbele Piek (twee dure perioden), Vlak (weinig variatie), Stijgend, Dalend of Gemengd. De confidence- en CV-attributen tonen hoe betrouwbaar het patroon is gedetecteerd.", + "usage_tips": "Gebruik het patroon van gisteren om automations te verfijnen: een Daldag herhaalt zich vaak de volgende dag en suggereert om goedkope middaguren in te plannen." + }, + "day_pattern_today": { + "description": "Gedetecteerd prijspatroon van de huidige elektriciteitsprijzen", + "long_description": "Classificeert vandaag in een prijspatroon: Dal (goedkoop 's middags), Piek (duur 's middags), Dubbel Dal (W-vorm), Dubbele Piek (M-vorm), Vlak, Stijgend, Dalend of Gemengd. Attributen omvatten confidence (0–1), variatiecoëfficiënt, kniepunttijden en dagsegmenten.", + "usage_tips": "Gebruik het dagpatroon om verbruik te verschuiven. Daldag: draai vaatwasser, wasmachine of laad de EV 's middags. Piekdag: gebruik apparaten vroeg in de ochtend of laat in de avond. Gebruik valley_start en valley_end voor precieze automations." + }, + "day_pattern_tomorrow": { + "description": "Gedetecteerd prijspatroon van de elektriciteitsprijzen van morgen", + "long_description": "Classificeert morgen (zodra data beschikbaar is, doorgaans na 13:00) in een prijspatroon met hetzelfde algoritme als vandaag. De attributen valley_start/valley_end of peak_start/peak_end geven kniepunttijden voor het primaire extremum.", + "usage_tips": "Stel avondautomations in die het patroon van morgen lezen en warmtepomp, autolader of boiler vooraf configureren. Combineer met de tomorrow_data_available binaire sensor." + }, + "chart_data_export": { + "description": "Data-export voor dashboard-integraties", + "long_description": "Deze sensor roept de get_chartdata-service aan met jouw geconfigureerde YAML-configuratie en stelt het resultaat beschikbaar als entiteitsattributen. De status toont 'ready' wanneer data beschikbaar is, 'error' bij fouten, of 'pending' voor de eerste aanroep. Perfekt voor dashboard-integraties zoals ApexCharts die prijsgegevens uit entiteitsattributen moeten lezen.", + "usage_tips": "Configureer de YAML-parameters in de integratie-opties om overeen te komen met jouw get_chartdata-service-aanroep. De sensor wordt automatisch bijgewerkt wanneer prijsgegevens worden bijgewerkt (typisch na middernacht en wanneer gegevens van morgen binnenkomen). Krijg toegang tot de service-responsgegevens direct vanuit de entiteitsattributen - de structuur komt exact overeen met wat get_chartdata retourneert." + }, + "chart_metadata": { + "description": "Lichtgewicht metadata voor diagramconfiguratie", + "long_description": "Biedt essentiële diagramconfiguratiewaarden als sensorattributen. Nuttig voor elke grafiekkaart die Y-as-grenzen nodig heeft. De sensor roept get_chartdata aan in alleen-metadata-modus (geen dataverwerking) en extraheert: yaxis_min, yaxis_max (gesuggereerd Y-asbereik voor optimale schaling). De status weerspiegelt het service-aanroepresultaat: 'ready' bij succes, 'error' bij fouten, 'pending' tijdens initialisatie.", + "usage_tips": "Configureer via configuration.yaml onder tibber_prices.chart_metadata_config (optioneel: day, subunit_currency, resolution). De sensor wordt automatisch bijgewerkt bij prijsgegevenswijzigingen. Krijg toegang tot metadata vanuit attributen: yaxis_min, yaxis_max. Gebruik met config-template-card of elk hulpmiddel dat entiteitsattributen leest - perfect voor dynamische diagramconfiguratie zonder handmatige berekeningen." + }, + "current_interval_price_rank_today": { + "description": "Waar de huidige intervalprijs staat in de ranglijst van vandaag — percentielrang (0% = goedkoopste moment)", + "long_description": "Toont hoe goedkoop of duur de prijs van het huidige kwartier is vergeleken met alle 96 kwartierslots van vandaag. 0% betekent dat dit het goedkoopste moment van de dag is. 50% betekent dat de helft van de slots goedkoper is. ca. 99% betekent het duurste slot van de dag. Formule: aantal goedkopere slots ÷ totaal slots × 100. Attributen: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Ideaal voor automatiseringen: 'Als current_interval_price_rank_today < 25, start de vaatwasser'. Een waarde van 0 garandeert het goedkoopste slot van de dag." + }, + "current_interval_price_rank_tomorrow": { + "description": "Percentielrang van de huidige intervalprijs in de ranglijst van morgen (0% = goedkoopste van morgen)", + "long_description": "Toont hoe de huidige intervalprijs zich verhoudt tot alle 96 kwartierslots van morgen. 0% betekent dat de huidige prijs goedkoper is dan elk slot van morgen. Geeft 'Onbekend' terug totdat de data van morgen beschikbaar is (doorgaans na 13:00). Attributen: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Gebruik om te beslissen of wachten loont: 'Als current_interval_price_rank_tomorrow < 10, zijn er morgen nog goedkopere slots — stel de taak uit'." + }, + "current_interval_price_rank_today_tomorrow": { + "description": "Percentielrang van de huidige intervalprijs over vandaag+morgen samen (0% = goedkoopste van het twee-dagenvenster)", + "long_description": "Toont hoe goedkoop of duur de huidige intervalprijs is vergeleken met alle slots over vandaag en morgen samen (tot 192 kwartierslots). Valt terug op alleen vandaag als de data van morgen nog niet beschikbaar is. Attributen: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Het breedste signaal voor 'is dit nu een goed moment?'. Gebruik 'Als current_interval_price_rank_today_tomorrow < 20, voer energieintensieve taak nu uit'." + }, + "next_interval_price_rank_today": { + "description": "Percentielrang van de volgende intervalprijs in de ranglijst van vandaag (0% = goedkoopste moment van vandaag)", + "long_description": "Toont de percentielrang van het komende kwartier binnen de 96 slots van vandaag. Biedt een vooruitblik voordat het volgende interval begint. Attributen: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Voor voorbereiding: 'Als next_interval_price_rank_today < 15, begin nu met voorverwarmen zodat het apparaat in het volgende goedkope slot draait'." + }, + "next_interval_price_rank_today_tomorrow": { + "description": "Percentielrang van de volgende intervalprijs over vandaag+morgen samen (0% = goedkoopste van het twee-dagenvenster)", + "long_description": "Toont de percentielrang van het komende kwartier binnen de gecombineerde pool van vandaag+morgen (tot 192 slots). Valt terug op alleen vandaag. Attributen: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Breedste vooruitblik: 'Als next_interval_price_rank_today_tomorrow < 10, is het volgende interval één van de goedkoopste van het twee-dagenvenster'." + }, + "previous_interval_price_rank_today": { + "description": "Percentielrang van de vorige intervalprijs in de ranglijst van vandaag (0% = goedkoopste moment van vandaag)", + "long_description": "Toont de percentielrang van het zojuist afgelopen kwartier binnen de 96 slots van vandaag. Nuttig voor logging. Attributen: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Voor retrospectieve automatiseringen: 'Leg het prijsniveau van het vorige interval vast voor energierapporten'." + }, + "previous_interval_price_rank_today_tomorrow": { + "description": "Percentielrang van de vorige intervalprijs over vandaag+morgen samen (0% = goedkoopste van het twee-dagenvenster)", + "long_description": "Toont de percentielrang van het zojuist afgelopen kwartier binnen de gecombineerde pool van vandaag+morgen (tot 192 slots). Valt terug op alleen vandaag. Attributen: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Voor retrospectieve vergelijkingen over een twee-dagenvenster." + }, + "current_hour_price_rank_today": { + "description": "Percentielrang van het huidige voortschrijdend uurgemiddelde in de ranglijst van vandaag (0% = goedkoopste uur vandaag)", + "long_description": "Toont waar het voortschrijdend gemiddelde van 5 intervallen (2 voor + huidig + 2 na, ca. 1 uur) staat in de prijsranglijst van vandaag. Egaliseer prijspieken voor een bredere inschatting. Attributen: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Voor taken van ongeveer een uur: 'Als current_hour_price_rank_today < 20, is dit een goedkoop uur — start de wasmachine'." + }, + "current_hour_price_rank_today_tomorrow": { + "description": "Voortschrijdend uurgemiddelde prijsrang over vandaag+morgen samen (0% = goedkoopste uur van het twee-dagenvenster)", + "long_description": "Toont waar het voortschrijdend gemiddelde van 5 intervallen (±2 intervallen, ca. 1 uur) staat in de gecombineerde ranglijst vandaag+morgen (tot 192 slots). Valt terug op alleen vandaag. Attributen: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Breedste uursignaal: 'Als current_hour_price_rank_today_tomorrow < 15, is dit één van de goedkoopste uren van het twee-dagenvenster'." + }, + "next_hour_price_rank_today": { + "description": "Percentielrang van het volgende voortschrijdend uurgemiddelde in de ranglijst van vandaag (0% = goedkoopste uur vandaag)", + "long_description": "Toont waar het voortschrijdend gemiddelde van 5 intervallen gecentreerd op het volgende interval staat in de prijsranglijst van vandaag. Maakt planning een uur vooruit mogelijk. Attributen: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Plan een uur vooruit: 'Als next_hour_price_rank_today < 20, is het komende uur goedkoop — start nu een taak'." + }, + "next_hour_price_rank_today_tomorrow": { + "description": "Volgend voortschrijdend uurgemiddelde prijsrang over vandaag+morgen samen (0% = goedkoopste uur van het twee-dagenvenster)", + "long_description": "Toont waar het voortschrijdend gemiddelde van 5 intervallen gecentreerd op het volgende interval staat in de gecombineerde ranglijst vandaag+morgen (tot 192 slots). Valt terug op alleen vandaag. Attributen: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Breedste uurvooruitblik: 'Als next_hour_price_rank_today_tomorrow < 10, is het komende uur één van de goedkoopste van het twee-dagenvenster'." + } + }, + "binary_sensor": { + "tomorrow_data_available": { + "description": "Of prijsgegevens voor morgen beschikbaar zijn", + "long_description": "Geeft aan of prijsgegevens voor de volgende dag zijn ontvangen van Tibber", + "usage_tips": "Gebruik dit om te controleren of de prijzen van morgen beschikbaar zijn voor planning" + }, + "peak_price_period": { + "description": "Of het huidige interval tot de duurste van de dag behoort", + "long_description": "Wordt geactiveerd wanneer de huidige prijs in de top 20% van de prijzen van vandaag ligt", + "usage_tips": "Gebruik dit om te voorkomen dat je apparaten met hoog verbruik draait tijdens dure intervallen" + }, + "best_price_period": { + "description": "Of het huidige interval tot de goedkoopste van de dag behoort", + "long_description": "Wordt geactiveerd wanneer de huidige prijs in de onderste 20% van de prijzen van vandaag ligt", + "usage_tips": "Gebruik dit om apparaten met hoog verbruik te laten draaien tijdens de goedkoopste intervallen" + }, + "connection": { + "description": "Of de verbinding met de Tibber API werkt", + "long_description": "Geeft aan of de integratie succesvol verbinding kan maken met de Tibber API", + "usage_tips": "Gebruik dit om de verbindingsstatus met de Tibber API te monitoren" + }, + "has_ventilation_system": { + "description": "Of je woning een ventilatiesysteem heeft", + "long_description": "Geeft aan of een ventilatiesysteem is geregistreerd voor je woning in het Tibber-account. Ventilatiesystemen kunnen aanzienlijke elektriciteitsverbruikers zijn die baat kunnen hebben bij slimme planning.", + "usage_tips": "Gebruik dit om ventilatiespecifieke automatiseringen of energiemonitoring in te schakelen. Indien actief, overweeg ventilatie te plannen tijdens perioden met lage prijzen." + }, + "realtime_consumption_enabled": { + "description": "Of realtime verbruiksmonitoring actief is", + "long_description": "Geeft aan of realtime elektriciteitsverbruikmonitoring is ingeschakeld en actief voor je Tibber-woning. Dit vereist compatibele meethardware (bijv. Tibber Pulse) en een actief abonnement.", + "usage_tips": "Gebruik dit om te verifiëren dat realtimeverbruiksgegevens beschikbaar zijn. Schakel meldingen in als dit onverwacht verandert naar 'uit', wat wijst op mogelijke hardware- of verbindingsproblemen." + } + }, + "number": { + "best_price_flex_override": { + "description": "Maximaal percentage boven de dagelijkse minimumprijs dat intervallen kunnen hebben en nog steeds als 'beste prijs' kwalificeren. Aanbevolen: 15-20 met versoepeling ingeschakeld (standaard), of 25-35 zonder versoepeling. Maximum: 50 (harde limiet voor betrouwbare periodedetectie).", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Flexibiliteit'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", + "usage_tips": "Schakel deze entiteit in om beste prijs-detectie dynamisch aan te passen via automatiseringen, bijv. hogere flexibiliteit voor kritieke lasten of strengere eisen voor flexibele apparaten." + }, + "best_price_min_distance_override": { + "description": "Minimale procentuele afstand onder het daggemiddelde. Intervallen moeten zo ver onder het gemiddelde liggen om als 'beste prijs' te kwalificeren. Helpt echte lage prijsperioden te onderscheiden van gemiddelde prijzen.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimale afstand'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", + "usage_tips": "Verhoog de waarde voor strengere beste prijs-criteria. Verlaag als te weinig perioden worden gedetecteerd." + }, + "best_price_min_period_length_override": { + "description": "Minimale periodelengte in 15-minuten intervallen. Perioden korter dan dit worden niet gerapporteerd. Voorbeeld: 2 = minimaal 30 minuten.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimale periodelengte'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", + "usage_tips": "Pas aan op typische apparaatlooptijd: 2 (30 min) voor snelle programma's, 4-8 (1-2 uur) voor normale cycli, 8+ voor lange ECO-programma's." + }, + "best_price_min_periods_override": { + "description": "Minimum aantal beste prijs-perioden om dagelijks te vinden. Wanneer versoepeling is ingeschakeld, past het systeem automatisch de criteria aan om dit aantal te bereiken.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimum periodes'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", + "usage_tips": "Stel dit in op het aantal tijdkritieke taken dat je dagelijks hebt. Voorbeeld: 2 voor twee wasladingen." + }, + "best_price_relaxation_attempts_override": { + "description": "Aantal pogingen om de criteria geleidelijk te versoepelen om het minimum aantal perioden te bereiken. Elke poging verhoogt de flexibiliteit met 3 procent. Bij 0 worden alleen basiscriteria gebruikt.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Versoepeling pogingen'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", + "usage_tips": "Hogere waarden maken periodedetectie adaptiever voor dagen met stabiele prijzen. Stel in op 0 om strikte criteria af te dwingen zonder versoepeling." + }, + "best_price_gap_count_override": { + "description": "Maximum aantal duurdere intervallen dat mag worden toegestaan tussen goedkope intervallen terwijl ze nog steeds als één aaneengesloten periode tellen. Bij 0 moeten goedkope intervallen opeenvolgend zijn.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Gap tolerantie'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", + "usage_tips": "Verhoog dit voor apparaten met variabele belasting (bijv. warmtepompen) die korte duurdere intervallen kunnen tolereren. Stel in op 0 voor continu goedkope perioden." + }, + "peak_price_flex_override": { + "description": "Maximaal percentage onder de dagelijkse maximumprijs dat intervallen kunnen hebben en nog steeds als 'piekprijs' kwalificeren. Dezelfde aanbevelingen als voor beste prijs-flexibiliteit.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Flexibiliteit'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", + "usage_tips": "Gebruik dit om de piekprijs-drempel tijdens runtime aan te passen voor automatiseringen die verbruik tijdens dure uren vermijden." + }, + "peak_price_min_distance_override": { + "description": "Minimale procentuele afstand boven het daggemiddelde. Intervallen moeten zo ver boven het gemiddelde liggen om als 'piekprijs' te kwalificeren.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimale afstand'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", + "usage_tips": "Verhoog de waarde om alleen extreme prijspieken te vangen. Verlaag om meer dure tijden mee te nemen." + }, + "peak_price_min_period_length_override": { + "description": "Minimale periodelengte in 15-minuten intervallen voor piekprijzen. Kortere prijspieken worden niet als perioden gerapporteerd.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimale periodelengte'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", + "usage_tips": "Kortere waarden vangen korte prijspieken. Langere waarden focussen op aanhoudende dure perioden." + }, + "peak_price_min_periods_override": { + "description": "Minimum aantal piekprijs-perioden om dagelijks te vinden.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimum periodes'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", + "usage_tips": "Stel dit in op basis van hoeveel dure perioden je per dag wilt vangen voor automatiseringen." + }, + "peak_price_relaxation_attempts_override": { + "description": "Aantal pogingen om de criteria te versoepelen om het minimum aantal piekprijs-perioden te bereiken.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Versoepeling pogingen'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", + "usage_tips": "Verhoog dit als geen perioden worden gevonden op dagen met stabiele prijzen. Stel in op 0 om strikte criteria af te dwingen." + }, + "peak_price_gap_count_override": { + "description": "Maximum aantal goedkopere intervallen dat mag worden toegestaan tussen dure intervallen terwijl ze nog steeds als één piekprijs-periode tellen.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Gap tolerantie'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", + "usage_tips": "Hogere waarden vangen langere dure perioden zelfs met korte prijsdips. Stel in op 0 voor strikt aaneengesloten piekprijzen." + } + }, + "switch": { + "best_price_enable_relaxation_override": { + "description": "Indien ingeschakeld, worden criteria automatisch versoepeld om het minimum aantal perioden te bereiken. Indien uitgeschakeld, worden alleen perioden gerapporteerd die aan strikte criteria voldoen (mogelijk nul perioden op dagen met stabiele prijzen).", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimum aantal bereiken'-instelling uit de opties-dialoog voor beste prijs-periodeberekeningen.", + "usage_tips": "Schakel dit in voor gegarandeerde dagelijkse automatiseringsmogelijkheden. Schakel uit als je alleen echt goedkope perioden wilt, ook als dat betekent dat er op sommige dagen geen perioden zijn." + }, + "peak_price_enable_relaxation_override": { + "description": "Indien ingeschakeld, worden criteria automatisch versoepeld om het minimum aantal perioden te bereiken. Indien uitgeschakeld, worden alleen echte prijspieken gerapporteerd.", + "long_description": "Wanneer deze entiteit is ingeschakeld, overschrijft de waarde de 'Minimum aantal bereiken'-instelling uit de opties-dialoog voor piekprijs-periodeberekeningen.", + "usage_tips": "Schakel dit in voor consistente piekprijs-waarschuwingen. Schakel uit om alleen extreme prijspieken te vangen." + } + }, + "home_types": { + "APARTMENT": "Appartement", + "ROWHOUSE": "Rijhuis", + "HOUSE": "Huis", + "COTTAGE": "Huisje" + }, + "time_units": { + "day": "{count} dag", + "days": "{count} dagen", + "hour": "{count} uur", + "hours": "{count} uur", + "minute": "{count} minuut", + "minutes": "{count} minuten", + "ago": "{parts} geleden", + "now": "nu" + }, + "attribution": "Gegevens geleverd door Tibber" } diff --git a/custom_components/tibber_prices/custom_translations/sv.json b/custom_components/tibber_prices/custom_translations/sv.json index a67135d..323fc67 100644 --- a/custom_components/tibber_prices/custom_translations/sv.json +++ b/custom_components/tibber_prices/custom_translations/sv.json @@ -1,653 +1,693 @@ { - "apexcharts": { - "title_rating_level": "Prisfaser dagsprogress", - "title_level": "Prisnivå", - "hourly_suffix": "(Ø per timme)", - "best_price_period_name": "Bästa prisperiod", - "peak_price_period_name": "Toppprisperiod", - "notification": { - "metadata_sensor_unavailable": { - "title": "Tibber Prices: ApexCharts YAML genererad med begränsad funktionalitet", - "message": "Du har precis genererat en ApexCharts-kortkonfiguration via Utvecklarverktyg. Diagram-metadata-sensorn är inaktiverad, så den genererade YAML:en visar bara **grundläggande funktionalitet** (auto-skalning, fast gradient vid 50%).\n\n**För full funktionalitet** (optimerad skalning, dynamiska gradientfärger):\n1. [Öppna Tibber Prices-integrationen](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Aktivera 'Chart Metadata'-sensorn\n3. **Generera YAML:en igen** via Utvecklarverktyg\n4. **Ersätt den gamla YAML:en** i din instrumentpanel med den nya versionen\n\n⚠️ Det räcker inte att bara aktivera sensorn - du måste regenerera och ersätta YAML-koden!" - }, - "missing_cards": { - "title": "Tibber Prices: ApexCharts YAML kan inte användas", - "message": "Du har precis genererat en ApexCharts-kortkonfiguration via Utvecklarverktyg, men den genererade YAML:en **kommer inte att fungera** eftersom nödvändiga anpassade kort saknas.\n\n**Saknade kort:**\n{cards}\n\n**För att använda den genererade YAML:en:**\n1. Klicka på länkarna ovan för att installera de saknade korten från HACS\n2. Starta om Home Assistant (ibland nödvändigt)\n3. **Generera YAML:en igen** via Utvecklarverktyg\n4. Lägg till YAML:en i din instrumentpanel\n\n⚠️ Den nuvarande YAML-koden fungerar inte förrän alla kort är installerade!" - } - } + "apexcharts": { + "title_rating_level": "Prisfaser dagsprogress", + "title_level": "Prisnivå", + "hourly_suffix": "(Ø per timme)", + "best_price_period_name": "Bästa prisperiod", + "peak_price_period_name": "Toppprisperiod", + "notification": { + "metadata_sensor_unavailable": { + "title": "Tibber Prices: ApexCharts YAML genererad med begränsad funktionalitet", + "message": "Du har precis genererat en ApexCharts-kortkonfiguration via Utvecklarverktyg. Diagram-metadata-sensorn är inaktiverad, så den genererade YAML:en visar bara **grundläggande funktionalitet** (auto-skalning, fast gradient vid 50%).\n\n**För full funktionalitet** (optimerad skalning, dynamiska gradientfärger):\n1. [Öppna Tibber Prices-integrationen](https://my.home-assistant.io/redirect/integration/?domain=tibber_prices)\n2. Aktivera 'Chart Metadata'-sensorn\n3. **Generera YAML:en igen** via Utvecklarverktyg\n4. **Ersätt den gamla YAML:en** i din instrumentpanel med den nya versionen\n\n⚠️ Det räcker inte att bara aktivera sensorn - du måste regenerera och ersätta YAML-koden!" + }, + "missing_cards": { + "title": "Tibber Prices: ApexCharts YAML kan inte användas", + "message": "Du har precis genererat en ApexCharts-kortkonfiguration via Utvecklarverktyg, men den genererade YAML:en **kommer inte att fungera** eftersom nödvändiga anpassade kort saknas.\n\n**Saknade kort:**\n{cards}\n\n**För att använda den genererade YAML:en:**\n1. Klicka på länkarna ovan för att installera de saknade korten från HACS\n2. Starta om Home Assistant (ibland nödvändigt)\n3. **Generera YAML:en igen** via Utvecklarverktyg\n4. Lägg till YAML:en i din instrumentpanel\n\n⚠️ Den nuvarande YAML-koden fungerar inte förrän alla kort är installerade!" + } + } + }, + "sensor": { + "current_interval_price": { + "description": "Det nuvarande elpriset per kWh", + "long_description": "Visar nuvarande pris per kWh från ditt Tibber-abonnemang", + "usage_tips": "Använd detta för att spåra priser eller skapa automationer som körs när el är billig" }, - "sensor": { - "current_interval_price": { - "description": "Det nuvarande elpriset per kWh", - "long_description": "Visar nuvarande pris per kWh från ditt Tibber-abonnemang", - "usage_tips": "Använd detta för att spåra priser eller skapa automationer som körs när el är billig" - }, - "current_interval_price_base": { - "description": "Nuvarande elpris i huvudvaluta (EUR/kWh, NOK/kWh, osv.) för Energipanelen", - "long_description": "Visar nuvarande pris per kWh i huvudvaluta-enheter (t.ex. EUR/kWh istället för ct/kWh, NOK/kWh istället för øre/kWh). Denna sensor är speciellt utformad för användning med Home Assistants Energipanel, som kräver priser i standardvalutaenheter.", - "usage_tips": "Använd denna sensor när du konfigurerar Energipanelen under Inställningar → Instrumentpaneler → Energi. Välj denna sensor som 'Entitet med nuvarande pris' för att automatiskt beräkna dina energikostnader. Energipanelen multiplicerar din energiförbrukning (kWh) med detta pris för att visa totala kostnader." - }, - "next_interval_price": { - "description": "Nästa intervalls elpris per kWh", - "long_description": "Visar priset för nästa 15-minuters intervall från ditt Tibber-abonnemang", - "usage_tips": "Använd detta för att förbereda dig för kommande prisändringar eller schemalägga enheter att köras under billigare intervaller" - }, - "previous_interval_price": { - "description": "Föregående intervalls elpris per kWh", - "long_description": "Visar priset för föregående 15-minuters intervall från ditt Tibber-abonnemang", - "usage_tips": "Använd detta för att granska tidigare prisändringar eller spåra prishistorik" - }, - "current_hour_average_price": { - "description": "Rullande 5-intervalls genomsnittspris per kWh", - "long_description": "Visar genomsnittspriset per kWh beräknat från 5 intervaller: 2 föregående, nuvarande och 2 nästa intervaller (ungefär 75 minuter totalt). Detta ger ett utjämnat 'timpris' som anpassar sig när tiden går, istället för att vara fixerat till klockslag.", - "usage_tips": "Använd detta för en stabilare prisindikator som jämnar ut kortsiktiga fluktuationer medan den fortfarande är responsiv till prisändringar. Bättre än fasta timpriser för konsumtionsbeslut." - }, - "next_hour_average_price": { - "description": "Rullande 5-intervalls genomsnittspris för nästa timme per kWh", - "long_description": "Visar genomsnittspriset per kWh beräknat från 5 intervaller centrerade en timme framåt: ungefär intervaller +2 till +6 från nu (täcker minuter +30 till +105). Detta ger ett framåtblickande utjämnat 'timpris' för konsumtionsplanering.", - "usage_tips": "Använd detta för att förutse prisändringar nästa timme. Användbart för att schemalägga högkonsumtionsaktiviteter som laddning av elfordon, körning av diskmaskiner eller värmesystem." - }, - "lowest_price_today": { - "description": "Det lägsta elpriset för idag per kWh", - "long_description": "Visar det lägsta priset per kWh för nuvarande dag från ditt Tibber-abonnemang", - "usage_tips": "Använd detta för att jämföra nuvarande priser med den billigaste tiden på dagen" - }, - "highest_price_today": { - "description": "Det högsta elpriset för idag per kWh", - "long_description": "Visar det högsta priset per kWh för nuvarande dag från ditt Tibber-abonnemang", - "usage_tips": "Använd detta för att undvika att köra apparater under topppristider" - }, - "average_price_today": { - "description": "Typiskt elpris för idag per kWh (konfigurerbart visningsformat)", - "long_description": "Visar priset per kWh för nuvarande dag från ditt Tibber-abonnemang. **Som standard visar statusen medianen** (motståndskraftig mot extrema prispikar, visar typisk prisnåvå). Du kan ändra detta i integrationsinstllningarna för att visa det aritmetiska medelvärdet istället. Det alternativa värdet är tillgängligt som attribut.", - "usage_tips": "Använd detta som baslinje för att jämföra nuvarande priser. För beräkningar använd: {{ state_attr('sensor.average_price_today', 'price_mean') }}" - }, - "lowest_price_tomorrow": { - "description": "Det lägsta elpriset för imorgon per kWh", - "long_description": "Visar det lägsta priset per kWh för morgondagen från ditt Tibber-abonnemang. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", - "usage_tips": "Använd detta för att planera energikrävande aktiviteter för morgondagens billigaste tid. Perfekt för förhandsplanering av uppvärmning, EV-laddning eller apparater." - }, - "highest_price_tomorrow": { - "description": "Det högsta elpriset för imorgon per kWh", - "long_description": "Visar det högsta priset per kWh för morgondagen från ditt Tibber-abonnemang. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", - "usage_tips": "Använd detta för att undvika att köra apparater under morgondagens topppristider. Användbart för att planera runt dyra perioder." - }, - "average_price_tomorrow": { - "description": "Typiskt elpris för imorgon per kWh (konfigurerbart visningsformat)", - "long_description": "Visar priset per kWh för morgondagen från ditt Tibber-abonnemang. **Som standard visar statusen medianen** (motståndskraftig mot extrema prispikar). Du kan ändra detta i integrationsinstllningarna för att visa det aritmetiska medelvärdet istället. Det alternativa värdet är tillgängligt som attribut. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", - "usage_tips": "Använd detta som baslinje för att jämföra morgondagens priser och planera konsumtion. Jämför med dagens median för att se om morgondagen kommer att bli dyrare eller billigare totalt sett." - }, - "yesterday_price_level": { - "description": "Aggregerad prisnivå för igår", - "long_description": "Visar den aggregerade prisnivån för alla intervall igår. Använder samma logik som timsensorerna för att bestämma den totala prisnivån för hela dagen.", - "usage_tips": "Använd detta för att förstå den övergripande prissituationen igår. Jämför med idag för att se dagliga trender." - }, - "today_price_level": { - "description": "Aggregerad prisnivå för idag", - "long_description": "Visar den aggregerade prisnivån för alla intervall idag. Använder samma logik som timsensorerna för att bestämma den totala prisnivån för hela dagen.", - "usage_tips": "Använd detta för att förstå dagens prissituation snabbt. Praktiskt för snabba bedömningar om dagen i allmänhet är billig eller dyr." - }, - "tomorrow_price_level": { - "description": "Aggregerad prisnivå för imorgon", - "long_description": "Visar den aggregerade prisnivån för alla intervall imorgon. Använder samma logik som timsensorerna för att bestämma den totala prisnivån för hela dagen. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", - "usage_tips": "Använd detta för att förstå imorgonens prissituation. Jämför med idag för att se om imorgon blir mer eller mindre gynnsamt för energiförbrukning." - }, - "yesterday_price_rating": { - "description": "Aggregerad prisvärdering för igår", - "long_description": "Visar den aggregerade prisvärderingen (låg/normal/hög) för alla intervall igår, baserat på dina konfigurerade tröskelvärden. Använder samma logik som timsensorerna för att bestämma den totala värderingen för hela dagen.", - "usage_tips": "Använd detta för att förstå igårens prissituation i förhållande till dina personliga tröskelvärden. Jämför med idag för trendanalys." - }, - "today_price_rating": { - "description": "Aggregerad prisvärdering för idag", - "long_description": "Visar den aggregerade prisvärderingen (låg/normal/hög) för alla intervall idag, baserat på dina konfigurerade tröskelvärden. Använder samma logik som timsensorerna för att bestämme den totala värderingen för hela dagen.", - "usage_tips": "Använd detta för att snabbt bedöma dagens prissituation i förhållande till dina personliga tröskelvärden. Hjälper till att fatta förbrukningsbeslut för innevarande dag." - }, - "tomorrow_price_rating": { - "description": "Aggregerad prisvärdering för imorgon", - "long_description": "Visar den aggregerade prisvärderingen (låg/normal/hög) för alla intervall imorgon, baserat på dina konfigurerade tröskelvärden. Använder samma logik som timsensorerna för att bestämma den totala värderingen för hela dagen. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", - "usage_tips": "Använd detta för att planera imorgonens energiförbrukning baserat på dina personliga priströskelvärden. Jämför med idag för att avgöra om du ska skjuta upp förbrukning till imorgon eller använda energi idag." - }, - "trailing_price_average": { - "description": "Typiskt elpris för de senaste 24 timmarna per kWh (konfigurerbart visningsformat)", - "long_description": "Visar priset per kWh beräknat från de senaste 24 timmarna. **Som standard visar statusen medianen** (motståndskraftig mot extrema prispikar, visar typisk prisnåvå). Du kan ändra detta i integrationsinstllningarna för att visa det aritmetiska medelvärdet istället. Det alternativa värdet är tillgängligt som attribut. Uppdateras var 15:e minut.", - "usage_tips": "Använd statusvärdet för att se den typiska nuvarande prisnåvån. För kostnadsberäkningar använd: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" - }, - "leading_price_average": { - "description": "Typiskt elpris för nästa 24 timmar per kWh (konfigurerbart visningsformat)", - "long_description": "Visar priset per kWh beräknat från nästa 24 timmar. **Som standard visar statusen medianen** (motståndskraftig mot extrema prispikar, visar förväntad prisnåvå). Du kan ändra detta i integrationsinstllningarna för att visa det aritmetiska medelvärdet istället. Det alternativa värdet är tillgängligt som attribut.", - "usage_tips": "Använd statusvärdet för att se den typiska kommande prisnåvån. För kostnadsberäkningar använd: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" - }, - "trailing_price_min": { - "description": "Det minsta elpriset för de senaste 24 timmarna per kWh", - "long_description": "Visar minimipriset per kWh från de senaste 24 timmarna (rullande minimum) från ditt Tibber-abonnemang. Detta ger det lägsta priset som setts de senaste 24 timmarna.", - "usage_tips": "Använd detta för att se den bästa prismöjligheten du hade de senaste 24 timmarna och jämför med nuvarande priser." - }, - "trailing_price_max": { - "description": "Det maximala elpriset för de senaste 24 timmarna per kWh", - "long_description": "Visar maximipriset per kWh från de senaste 24 timmarna (rullande maximum) från ditt Tibber-abonnemang. Detta ger det högsta priset som setts de senaste 24 timmarna.", - "usage_tips": "Använd detta för att se topppriset de senaste 24 timmarna och bedöma prisvolatilitet." - }, - "leading_price_min": { - "description": "Det minsta elpriset för nästa 24 timmar per kWh", - "long_description": "Visar minimipriset per kWh från nästa 24 timmar (framåtblickande minimum) från ditt Tibber-abonnemang. Detta ger det lägsta priset som förväntas nästa 24 timmar baserat på prognosdata.", - "usage_tips": "Använd detta för att identifiera den bästa prismöjligheten som kommer och planera energikrävande uppgifter därefter." - }, - "leading_price_max": { - "description": "Det maximala elpriset för nästa 24 timmar per kWh", - "long_description": "Visar maximipriset per kWh från nästa 24 timmar (framåtblickande maximum) från ditt Tibber-abonnemang. Detta ger det högsta priset som förväntas nästa 24 timmar baserat på prognosdata.", - "usage_tips": "Använd detta för att undvika att köra apparater under kommande toppprisperioder." - }, - "current_interval_price_level": { - "description": "Den nuvarande prisnivåklassificeringen", - "long_description": "Visar Tibbers klassificering av nuvarande pris jämfört med historiska priser", - "usage_tips": "Använd detta för att skapa automationer baserade på relativa prisnivåer istället för absoluta priser" - }, - "next_interval_price_level": { - "description": "Prisnivå för nästa 15-minuters intervall", - "long_description": "Visar prisnivåklassificeringen för kommande intervall. Hjälper att förutse kortsiktiga prisändringar för omedelbar planering.", - "usage_tips": "Använd för snabba beslut om att starta eller stoppa högeffektsenheter inom de kommande minuterna." - }, - "previous_interval_price_level": { - "description": "Prisnivå för föregående 15-minuters intervall", - "long_description": "Visar prisnivåklassificeringen för senaste intervallet. Användbart för historisk jämförelse och förståelse av senaste pristrender.", - "usage_tips": "Använd för att jämföra nuvarande vs senaste prisnivåer eller analysera konsumtionsmönster mot historiska priser." - }, - "current_hour_price_level": { - "description": "Aggregerad prisnivå för nuvarande rullande timme (5 intervaller)", - "long_description": "Visar median prisnivå över 5 intervaller (2 före, nuvarande, 2 efter) som täcker ungefär 75 minuter. Ger en stabilare prisnivåindikator som jämnar ut kortsiktiga fluktuationer.", - "usage_tips": "Använd för planeringsbeslut på medellång sikt där du vill undvika att reagera på korta pristoppar eller -fall." - }, - "next_hour_price_level": { - "description": "Aggregerad prisnivå för nästa rullande timme (5 intervaller framåt)", - "long_description": "Visar median prisnivå över 5 intervaller centrerade en timme framåt. Hjälper att planera konsumtion baserat på kommande pristrender istället för ögonblickliga framtida priser.", - "usage_tips": "Använd för att schemalägga aktiviteter för nästa timme baserat på en utjämnad prisnivåprognos." - }, - "current_interval_price_rating": { - "description": "Hur nuvarande intervalls pris jämförs med historiska data", - "long_description": "Visar hur nuvarande intervalls pris jämförs med historiska prisdata som en procentsats", - "usage_tips": "En positiv procentsats betyder att nuvarande pris är över genomsnittet, negativ betyder under genomsnittet" - }, - "next_interval_price_rating": { - "description": "Prisvärdering för nästa 15-minuters intervall", - "long_description": "Visar hur nästa intervalls pris jämförs med det rullande 24-timmars genomsnittet. Hjälper att förutse om kommande priser är över eller under den senaste trenden.", - "usage_tips": "Använd för att fatta snabba beslut om att starta aktiviteter i nästa intervall baserat på relativ prisposition." - }, - "previous_interval_price_rating": { - "description": "Prisvärdering för föregående 15-minuters intervall", - "long_description": "Visar hur senaste intervalls pris jämfördes med det rullande genomsnittet. Användbart för att förstå senaste prisbeteende.", - "usage_tips": "Använd för att analysera hur prisvärderingar förändrades över tid eller validera tidigare konsumtionsbeslut." - }, - "current_hour_price_rating": { - "description": "Aggregerad prisvärdering för nuvarande rullande timme (5 intervaller)", - "long_description": "Visar genomsnittlig värdering över 5 intervaller (2 före, nuvarande, 2 efter). Baserad på genomsnittlig procentuell skillnad från rullande 24t genomsnitt, vilket ger en utjämnad värderingsindikator.", - "usage_tips": "Använd för stabil prisvärdering på medellång sikt som inte överreagerar på korta prisavvikelser." - }, - "next_hour_price_rating": { - "description": "Aggregerad prisvärdering för nästa rullande timme (5 intervaller framåt)", - "long_description": "Visar genomsnittlig värdering för 5 intervaller centrerade en timme framåt. Hjälper att förstå om nästa timme generellt kommer att ligga över eller under genomsnittlig prissättning.", - "usage_tips": "Använd för att bestämma om du ska vänta en timme innan du startar högkonsumtionsaktiviteter." - }, - "next_avg_1h": { - "description": "Genomsnittspris för nästa 1 timme (endast framåt från nästa intervall)", - "long_description": "Framåtblickande genomsnitt: Visar genomsnitt av nästa 4 intervaller (1 timme) från och med NÄSTA 15-minuters intervall (inte inklusive nuvarande). Skiljer sig från current_hour_average_price som inkluderar tidigare intervaller. Använd för absolut priströskelpla nering.", - "usage_tips": "Absolut priströskel: Starta endast apparater när genomsnittet stannar under ditt maximalt acceptabla pris (t.ex. under 0,25 EUR/kWh). Kombinera med trendsensor för optimal timing. Obs: Detta är INTE en ersättning för timpriser - använd current_hour_average_price för det." - }, - "next_avg_2h": { - "description": "Genomsnittspris för nästa 2 timmar", - "long_description": "Visar genomsnittspriset för nästa 8 intervaller (2 timmar) från och med nästa 15-minuters intervall.", - "usage_tips": "Absolut priströskel: Sätt ett maximalt acceptabelt genomsnittspris för standardapparater som tvättmaskiner. Säkerställer att du aldrig betalar mer än din gräns." - }, - "next_avg_3h": { - "description": "Genomsnittspris för nästa 3 timmar", - "long_description": "Visar genomsnittspriset för nästa 12 intervaller (3 timmar) från och med nästa 15-minuters intervall.", - "usage_tips": "Absolut priströskel: För EU Eco-program (diskmaskiner, 3-4t körtid). Starta endast när 3t genomsnitt är under din prisgräns. Använd med trendsensor för att hitta bästa ögonblick inom acceptabelt prisområde." - }, - "next_avg_4h": { - "description": "Genomsnittspris för nästa 4 timmar", - "long_description": "Visar genomsnittspriset för nästa 16 intervaller (4 timmar) från och med nästa 15-minuters intervall.", - "usage_tips": "Absolut priströskel: Sätt maximalt acceptabelt pris för värmepumpar eller varmvattenberedare. Förhindrar drift under dyra perioder oavsett relativa trender." - }, - "next_avg_5h": { - "description": "Genomsnittspris för nästa 5 timmar", - "long_description": "Visar genomsnittspriset för nästa 20 intervaller (5 timmar) från och med nästa 15-minuters intervall.", - "usage_tips": "Absolut priströskel: Brygga mellan kort och lång sikt planering. Använd för utökade cykler med hårda prisgränser (t.ex. poolpumpar, utökade uppvärmningscykler)." - }, - "next_avg_6h": { - "description": "Genomsnittspris för nästa 6 timmar", - "long_description": "Visar genomsnittspriset för nästa 24 intervaller (6 timmar) från och med nästa 15-minuters intervall.", - "usage_tips": "Absolut priströskel: Kvällsplanering med pristak. Schemalägg endast uppgifter om 6t genomsnitt stannar under dina maximalt acceptabla kostnader." - }, - "next_avg_8h": { - "description": "Genomsnittspris för nästa 8 timmar", - "long_description": "Visar genomsnittspriset för nästa 32 intervaller (8 timmar) från och med nästa 15-minuters intervall.", - "usage_tips": "Absolut priströskel: Nattliga driftsbeslut. Sätt hårda prisgränser för nattliga laster (batteriladdning, termisk lagring). Överskrid aldrig din budget." - }, - "next_avg_12h": { - "description": "Genomsnittspris för nästa 12 timmar", - "long_description": "Visar genomsnittspriset för nästa 48 intervaller (12 timmar) från och med nästa 15-minuters intervall.", - "usage_tips": "Absolut priströskel: Strategiska beslut med pristak. Fortsätt endast om 12t genomsnitt är under ditt maximalt acceptabla pris. Bra för uppskjutbara stora laster." - }, - "price_outlook_1h": { - "description": "Prisöversikt för nästa timme", - "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under nästa timme (4 intervaller). Alla översiktssensorer (1h–12h) delar samma utgångspunkt: ditt nuvarande pris — de skiljer sig bara i fönsterstorlek. Stigande/fallande vid ±3%, kraftigt vid ±9% (konfigurerbart, volatilitetsadaptivt).", - "usage_tips": "Beslutstöd: 'stigande' = AGERA NU, ditt nuvarande pris är billigare än fönstergenomsnittet. 'fallande' = VÄNTA, fönstergenomsnittet är billigare än nu. 'stabil' = timing spelar ingen roll." - }, - "price_outlook_2h": { - "description": "Prisöversikt för nästa 2 timmar", - "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 2 timmarna (8 intervaller). 'stigande' = nuvarande pris under 2h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", - "usage_tips": "Apparater: 'stigande' = starta nu, du har ett bra pris jämfört med nästa 2h. Kombinera med price_trajectory_2h för att se om priserna fortfarande faller eller redan stiger." - }, - "price_outlook_3h": { - "description": "Prisöversikt för nästa 3 timmar", - "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 3 timmarna (12 intervaller). 'stigande' = nuvarande pris under 3h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", - "usage_tips": "Eco-program: 'stigande' = starta eco-cykeln nu, priser är i genomsnitt högre i fönstret. 'fallande' = vänta, billigare genomsnittligt fönster kommer." - }, - "price_outlook_4h": { - "description": "Prisöversikt för nästa 4 timmar", - "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 4 timmarna (16 intervaller). 'stigande' = nuvarande pris under 4h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", - "usage_tips": "Värmepump/batteri: 'stigande' = ladda nu, du är på en relativ lågpunkt. Kombinera med price_trajectory_4h för att se om priserna fortfarande faller eller redan stiger." - }, - "price_outlook_5h": { - "description": "Prisöversikt för nästa 5 timmar", - "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 5 timmarna (20 intervaller). 'stigande' = nuvarande pris under 5h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", - "usage_tips": "Utökade cykler: 'stigande' eller 'stabil' = bra tid att starta. 'fallande' = vänta om din planering tillåter det." - }, - "price_outlook_6h": { - "description": "Prisöversikt för nästa 6 timmar", - "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 6 timmarna (24 intervaller). 'stigande' = nuvarande pris under 6h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", - "usage_tips": "Kvällsbeslut: 'stigande' = använd el nu medan den är relativt billig. 'fallande' = kvälls-/nattpriserna blir bättre i genomsnitt, vänta om möjligt." - }, - "price_outlook_8h": { - "description": "Prisöversikt för nästa 8 timmar", - "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 8 timmarna (32 intervaller). 'stigande' = nuvarande pris under 8h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", - "usage_tips": "Nattplanering: 'stigande' = ikväll/imorgon blir dyrare i genomsnitt, använd el nu. 'fallande' = nattpriserna blir billigare, värt att vänta." - }, - "price_outlook_12h": { - "description": "Prisöversikt för nästa 12 timmar", - "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 12 timmarna (48 intervaller). 'stigande' = nuvarande pris under 12h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", - "usage_tips": "Strategiska beslut: 'stigande' = du är på en lågpunkt relativt till nästa 12h, bra tid för strömkrävande uppgifter. 'fallande' = avsevärt bättre genomsnittspriser kommer." - }, - "price_trajectory_2h": { - "description": "Prisutveckling inom nästa 2-timmars fönster", - "long_description": "Compares the average of the first hour with the average of the second hour within the next 2-hour window. 'rising' = second half more expensive than first half. 'falling' = second half cheaper. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", - "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive) — revealing the upcoming reversal. 'outlook: falling + trajectory: rising' = you're AT the minimum, act now." - }, - "price_trajectory_3h": { - "description": "Prisutveckling inom nästa 3-timmars fönster", - "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, prices are already recovering — start now." - }, - "price_trajectory_4h": { - "description": "Prisutveckling inom nästa 4-timmars fönster", - "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Complements price_outlook_4h. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Heat pump charging: 'rising' = first half is cheaper, charge now. 'falling' = second half is cheaper, wait. Combine with outlook: if both rising, very strong signal to act now." - }, - "price_trajectory_5h": { - "description": "Prisutveckling inom nästa 5-timmars fönster", - "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Long cycles: 'outlook: rising + trajectory: rising' = clear signal to start now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start." - }, - "price_trajectory_6h": { - "description": "Prisutveckling inom nästa 6-timmars fönster", - "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the low." - }, - "price_trajectory_8h": { - "description": "Prisutveckling inom nästa 8-timmars fönster", - "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half will be cheapest, delay start." - }, - "price_trajectory_12h": { - "description": "Prisutveckling inom nästa 12-timmars fönster", - "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", - "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = afternoon/evening scheduling is better." - }, - "current_price_trend": { - "description": "Nuvarande pristrend-riktning och hur länge den varar", - "long_description": "Visar nuvarande pristrend (stigande/fallande/stabil) genom att kombinera historiskt momentum (viktad 1h tillbakablick) med framtidsutsikt. Känner igen pågående trender tidigare än endast framtidsanalys. Använder ±3 % momentum-tröskel och volatilitetsanpassad framtidsjämförelse. Beräknar dynamiskt till nästa trendändring (eller 3t standard om ingen ändring på 24t). Status visar nuvarande riktning, attribut visar när den ändras och vad som kommer härnäst.", - "usage_tips": "Statusvisning: Dashboard-synlighet av 'vad händer nu till när'. Perfekt synkroniserad med next_price_trend_change. Exempel: Badge som visar 'Stigande i 2,5t' eller 'Fallande till 16:45'. Bättre än tidsfönster-sensorer eftersom den förstår att du REDAN är i en trend, inte bara förutsäger framtida ändringar. Använd för snabb visuell överblick, inte automationsutlösare." - }, - "next_price_trend_change": { - "description": "När nästa betydande pristrendändring kommer att inträffa", - "long_description": "Skannar de nästa 24 timmarna (96 intervaller) för att hitta när pristrend-riktningen kommer att ändras. Bara riktningsändringar räknas: stigande/kraftigt stigande är en grupp, fallande/kraftigt fallande en annan, stabil är egen. En ändring från stigande till kraftigt stigande är INTE en trendändring. Använder volatilitetsadaptiva tröskelvärden (standard: ±3%/±9%) med hysteres (standard: 3 på varandra följande intervaller). Returnerar tidstämpeln när ändringen förväntas.", - "usage_tips": "Händelsestyrd automatisering: Utlös åtgärder NÄR trenden ändras, inte OM X timmar. Exempel: 'Ladda EV när nästa trendändring visar fallande priser' eller 'Starta diskmaskin innan priserna stiger'. Kompletterar tidsfönster-sensorer (price_outlook_Xh) som svarar på 'KOMMER priserna att vara högre om X timmar?'" - }, - "next_price_trend_change_in": { - "description": "Tid till nästa pristrendändring", - "long_description": "Visar hur lång tid det är kvar till nästa betydande pristrendändring inträffar. Värdet visas i timmar (t.ex. 2,25 h) för dashboards. Delar samma analys som tidstämpel-sensorn 'Nästa pristrendändring' men presenterar det som en nedtellningsvaraktighet. Uppdateras varje minut för noggranna nedtellningar. Visar 'Okänd' när ingen trendändring förväntas inom de närmaste 24 timmarna.", - "usage_tips": "Dashboard-nedtellning: Visa 'Trendändring om 1,5 h' som live nedtellning. För automatiseringar: 'Om next_price_trend_change_in < 0,25 (15 min), förbered för prisriktningsändring'. Kompletterar 'Nästa pristrendändring' (tidstämpel) — använd tidstämpeln för 'NÄR' och denna sensor för 'HUR LÄNGE'." - }, - "daily_rating": { - "description": "Hur dagens priser jämförs med historiska data", - "long_description": "Visar hur dagens priser jämförs med historiska prisdata som en procentsats", - "usage_tips": "En positiv procentsats betyder att dagens priser är över genomsnittet, negativ betyder under genomsnittet" - }, - "monthly_rating": { - "description": "Hur denna månads priser jämförs med historiska data", - "long_description": "Visar hur denna månads priser jämförs med historiska prisdata som en procentsats", - "usage_tips": "En positiv procentsats betyder att denna månads priser är över genomsnittet, negativ betyder under genomsnittet" - }, - "data_timestamp": { - "description": "Tidsstämpel för senaste tillgängliga prisdataintervall", - "long_description": "Visar tidsstämpeln för det senaste tillgängliga prisdataintervallet från ditt Tibber-abonnemang" - }, - "today_volatility": { - "description": "Hur mycket elpriserna varierar idag", - "long_description": "Visar om dagens priser är stabila eller har stora svängningar. Låg volatilitet innebär ganska jämna priser – timing spelar liten roll. Hög volatilitet innebär tydliga prisskillnader under dagen – bra tillfälle att flytta förbrukning till billigare perioder. `price_coefficient_variation_%` visar procentvärdet, `price_spread` visar den absoluta prisspannet.", - "usage_tips": "Använd detta för att avgöra om optimering är värt besväret. Vid låg volatilitet kan du köra enheter när som helst. Vid hög volatilitet sparar du märkbart genom att följa Best Price-perioder." - }, - "tomorrow_volatility": { - "description": "Hur mycket elpriserna kommer att variera i morgon", - "long_description": "Visar om priserna i morgon blir stabila eller får stora svängningar. Tillgänglig när morgondagens data är publicerad (vanligen 13:00–14:00 CET). Låg volatilitet innebär ganska jämna priser – timing är inte kritisk. Hög volatilitet innebär tydliga prisskillnader under dagen – bra läge att planera energikrävande uppgifter. `price_coefficient_variation_%` visar procentvärdet, `price_spread` visar den absoluta prisspannet.", - "usage_tips": "Använd för att planera morgondagens förbrukning. Hög volatilitet? Planera flexibla laster i Best Price-perioder. Låg volatilitet? Kör enheter när det passar dig." - }, - "next_24h_volatility": { - "description": "Hur mycket priserna varierar de kommande 24 timmarna", - "long_description": "Visar prisvolatilitet för ett rullande 24-timmarsfönster från nu (uppdateras var 15:e minut). Låg volatilitet innebär ganska jämna priser. Hög volatilitet innebär märkbara prissvängningar och därmed optimeringsmöjligheter. Till skillnad från idag/i morgon-sensorer korsar den här dagsgränser och ger en kontinuerlig framåtblickande bedömning. `price_coefficient_variation_%` visar procentvärdet, `price_spread` visar den absoluta prisspannet.", - "usage_tips": "Bäst för beslut i realtid. Använd vid planering av batteriladdning eller andra flexibla laster som kan gå över midnatt. Ger en konsekvent 24h-bild oberoende av kalenderdag." - }, - "today_tomorrow_volatility": { - "description": "Kombinerad prisvolatilitet för idag och imorgon", - "long_description": "Visar den samlade volatiliteten när idag och imorgon ses tillsammans (när morgondatan finns). Visar om det finns tydliga prisskillnader över dagsgränsen. Faller tillbaka till endast idag om morgondatan saknas. Nyttig för flerdagarsoptimering. `price_coefficient_variation_%` visar procentvärdet, `price_spread` visar den absoluta prisspannet.", - "usage_tips": "Använd för uppgifter som sträcker sig över flera dagar. Kontrollera om prisskillnaderna är stora nog för att planera efter. De enskilda dag-sensorerna visar bidrag per dag om du behöver mer detaljer." - }, - "price_rank_today": { - "description": "Den aktuella prisens position i dagens ranking — dess percentilrang (0% = billigast)", - "long_description": "Visar hur billig eller dyr den aktuella prisen är jämfört med alla 96 kvartersintervall för idag. 0% innebär att detta är dagens billigaste ögonblick — varje annat slot kostar mer. 50% innebär att hälften av dagens slots är billigare. ~99% innebär det dyraste slot på dagen. Formel (percentilrang): hur många slots är billigare ÷ totalt antal × 100. Attribut: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Perfekt för automatiseringar: 'Om prisrang < 25, starta diskmaskin' (billigaste fjärdedelen av dagen). Eller 'Om prisrang > 75, pausa värmepump' (dyraste fjärdedelen). Värde 0 garanterar att du är på dagens billigaste intervall." - }, - "price_rank_tomorrow": { - "description": "Percentilrang för aktuellt pris i morgondagens ranking (0% = billigast imorgon)", - "long_description": "Visar hur den aktuella prisen jämförs med alla 96 kvartersintervall för imorgon — dess percentilrang inom morgondagens prisfördelning. Användbart för att avgöra om det lönar sig att vänta till imorgon. 0% innebär att den aktuella prisen är billigare än varje intervall imorgon. Returnerar 'Okänt' tills morgondagens data anlänger (typiskt efter 13:00). Attribut: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Använd för att avgöra om det lönar sig att vänta: 'Om prisrang imorgon < 10, finns det ännu billigare slots imorgon — skjut upp uppgiften'. Bäst kombinerat med en binär sensor som bekräftar att uppgiften kan utföras imorgon." - }, - "price_rank_today_tomorrow": { - "description": "Percentilrang för aktuellt pris över idag och imorgon kombinerat (0% = billigast i tvådagarsfönstret)", - "long_description": "Visar hur billig eller dyr den aktuella prisen är jämfört med alla slots för idag och imorgon tillsammans — dess percentilrang inom tvådagarsfördelningen (upp till 192 intervall när båda dagarna är tillgängliga). Ger den bredaste tvådagarsvyn för flexibla uppgifter. Faller tillbaka till enbart idag när morgondagens data inte är tillgänglig än. 0% = billigast i det kombinerade fönstret. Attribut: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", - "usage_tips": "Det bredaste signalet för 'Passar det bra nu?'. Använd 'Om prisrang idag+imorgon < 20, kör energikrävande uppgift nu'. Särskilt värdefullt när uppgifter kan vänta en hel dag — ett värde nära 0 över två dagar är ett verkligt exceptionellt pris." - }, - "data_lifecycle_status": { - "description": "Gjeldende tilstand for prisdatalivssyklus og hurtigbufring", - "long_description": "Viser om integrasjonen bruker hurtigbufrede data eller ferske data fra API-et. Viser gjeldende livssyklustilstand: 'cached' (bruker lagrede data), 'fresh' (nettopp hentet fra API), 'refreshing' (henter for øyeblikket), 'searching_tomorrow' (søker aktivt etter morgendagens data etter 13:00), 'turnover_pending' (innen 15 minutter før midnatt, 23:45-00:00), eller 'error' (henting mislyktes). Inkluderer omfattende attributter som cache-alder, neste API-spørring, datafullstendighet og API-anropsstatistikk.", - "usage_tips": "Bruk denne diagnosesensoren for å forstå dataferskhet og API-anropsmønstre. Sjekk 'cache_age'-attributtet for å se hvor gamle de nåværende dataene er. Overvåk 'next_api_poll' for å vite når neste oppdatering er planlagt. Bruk 'data_completeness' for å se om data for i går/i dag/i morgen er tilgjengelig. 'api_calls_today'-telleren hjelper med å spore API-bruk. Perfekt for feilsøking eller forståelse av integrasjonens oppførsel." - }, - "best_price_end_time": { - "description": "Total längd för nuvarande eller nästa billigperiod (state i timmar, attribut i minuter)", - "long_description": "Visar hur länge billigperioden varar. State använder timmar (decimal) för en läsbar UI; attributet `period_duration_minutes` behåller avrundade minuter för automationer. Aktiv → varaktighet för aktuell period, annars nästa.", - "usage_tips": "UI kan visa 1,5 h medan `period_duration_minutes` = 90 för automationer." - }, - "best_price_period_duration": { - "description": "Längd på nuvarande/nästa billigperiod", - "long_description": "Total längd av nuvarande eller nästa billigperiod. State visas i timmar (t.ex. 1,5 h) för enkel avläsning i UI, medan attributet `period_duration_minutes` ger samma värde i minuter (t.ex. 90) för automationer. Detta värde representerar den **fullständigt planerade längden** av perioden och är konstant under hela perioden, även när återstående tid (remaining_minutes) minskar.", - "usage_tips": "Kombinera med remaining_minutes för att beräkna när långvariga enheter ska stoppas: Perioden startade för `period_duration_minutes - remaining_minutes` minuter sedan. Detta attribut stöder energioptimeringsstrategier genom att hjälpa till med att planera högförbruksaktiviteter inom billiga perioder." - }, - "best_price_remaining_minutes": { - "description": "Tid kvar i nuvarande billigperiod", - "long_description": "Visar hur mycket tid som återstår i nuvarande billigperiod. State visas i timmar (t.ex. 0,75 h) för enkel avläsning i instrumentpaneler, medan attributet `remaining_minutes` ger samma tid i minuter (t.ex. 45) för automationsvillkor. **Nedräkningstimer**: Detta värde minskar varje minut under en aktiv period. Returnerar 0 när ingen billigperiod är aktiv. Uppdateras varje minut.", - "usage_tips": "För automationer: Använd attribut `remaining_minutes` som 'Om remaining_minutes > 60, starta diskmaskin nu (tillräckligt med tid för att slutföra)' eller 'Om remaining_minutes < 15, avsluta nuvarande cykel snart'. UI visar användarvänliga timmar (t.ex. 1,25 h). Värde 0 indikerar ingen aktiv billigperiod." - }, - "best_price_progress": { - "description": "Framsteg genom nuvarande billigperiod (0% när inaktiv)", - "long_description": "Visar framsteg genom nuvarande billigperiod som 0-100%. Returnerar 0% när ingen period är aktiv. Uppdateras varje minut. 0% betyder att perioden just startade, 100% betyder att den snart slutar.", - "usage_tips": "Perfekt för visuella framstegsindikatorer. Använd i automationer: 'Om progress > 0 OCH progress > 75, skicka avisering om att billigperioden snart slutar'. Värde 0 indikerar ingen aktiv period." - }, - "best_price_next_start_time": { - "description": "Total längd för nuvarande eller nästa dyrperiod (state i timmar, attribut i minuter)", - "long_description": "Visar hur länge den dyra perioden varar. State använder timmar (decimal) för UI; attributet `period_duration_minutes` behåller avrundade minuter för automationer. Aktiv → varaktighet för aktuell period, annars nästa.", - "usage_tips": "UI kan visa 0,75 h medan `period_duration_minutes` = 45 för automationer." - }, - "best_price_next_in_minutes": { - "description": "Tid kvar i nuvarande dyrperiod (state i timmar, attribut i minuter)", - "long_description": "Visar hur mycket tid som återstår. State använder timmar (decimal); attributet `remaining_minutes` behåller avrundade minuter för automationer. Returnerar 0 när ingen period är aktiv. Uppdateras varje minut.", - "usage_tips": "Använd `remaining_minutes` för trösklar (t.ex. > 60) medan state är lätt att läsa i timmar." - }, - "peak_price_end_time": { - "description": "Tid tills nästa dyrperiod startar (state i timmar, attribut i minuter)", - "long_description": "Visar hur länge tills nästa dyrperiod startar. State använder timmar (decimal); attributet `next_in_minutes` behåller avrundade minuter för automationer. Under en aktiv period visar detta tiden till perioden efter den aktuella. 0 under korta övergångar. Uppdateras varje minut.", - "usage_tips": "Använd `next_in_minutes` i automationer (t.ex. < 10) medan state är lätt att läsa i timmar." - }, - "peak_price_period_duration": { - "description": "Längd på nuvarande/nästa dyrperiod", - "long_description": "Total längd av nuvarande eller nästa dyrperiod. State visas i timmar (t.ex. 1,5 h) för enkel avläsning i UI, medan attributet `period_duration_minutes` ger samma värde i minuter (t.ex. 90) för automationer. Detta värde representerar den **fullständigt planerade längden** av perioden och är konstant under hela perioden, även när återstående tid (remaining_minutes) minskar.", - "usage_tips": "Kombinera med remaining_minutes för att beräkna när långvariga enheter ska stoppas: Perioden startade för `period_duration_minutes - remaining_minutes` minuter sedan. Detta attribut stöder energibesparingsstrategier genom att hjälpa till med att planera högförbruksaktiviteter utanför dyra perioder." - }, - "peak_price_remaining_minutes": { - "description": "Tid kvar i nuvarande dyrperiod", - "long_description": "Visar hur mycket tid som återstår i nuvarande dyrperiod. State visas i timmar (t.ex. 0,75 h) för enkel avläsning i instrumentpaneler, medan attributet `remaining_minutes` ger samma tid i minuter (t.ex. 45) för automationsvillkor. **Nedräkningstimer**: Detta värde minskar varje minut under en aktiv period. Returnerar 0 när ingen dyrperiod är aktiv. Uppdateras varje minut.", - "usage_tips": "För automationer: Använd attribut `remaining_minutes` som 'Om remaining_minutes > 60, avbryt uppskjuten laddningssession' eller 'Om remaining_minutes < 15, återuppta normal drift snart'. UI visar användarvänliga timmar (t.ex. 1,0 h). Värde 0 indikerar ingen aktiv dyrperiod." - }, - "peak_price_progress": { - "description": "Framsteg genom nuvarande dyrperiod (0% när inaktiv)", - "long_description": "Visar framsteg genom nuvarande dyrperiod som 0-100%. Returnerar 0% när ingen period är aktiv. Uppdateras varje minut.", - "usage_tips": "Visuell framstegsindikator i instrumentpaneler. Automation: 'Om progress > 0 OCH progress > 90, förbered normal värmeplanering'. Värde 0 indikerar ingen aktiv period." - }, - "peak_price_next_start_time": { - "description": "När nästa dyrperiod startar", - "long_description": "Visar när nästa kommande dyrperiod startar. Under en aktiv period visar detta starten av NÄSTA period efter den nuvarande. Returnerar 'Okänt' endast när inga framtida perioder är konfigurerade.", - "usage_tips": "Alltid användbart för planering: 'Nästa dyrperiod startar om 2 timmar'. Automation: 'När nästa starttid är om 30 minuter, minska värmetemperatur förebyggande'." - }, - "peak_price_next_in_minutes": { - "description": "Tid till nästa dyrperiod", - "long_description": "Visar hur länge till nästa dyrperiod. State visas i timmar (t.ex. 0,5 h) för instrumentpaneler, medan attributet `next_in_minutes` ger minuter (t.ex. 30) för automationsvillkor. Under en aktiv period visar detta tiden till perioden EFTER den nuvarande. Returnerar 0 under korta övergångsmoment. Uppdateras varje minut.", - "usage_tips": "För automationer: Använd attribut `next_in_minutes` som 'Om next_in_minutes > 0 OCH next_in_minutes < 10, slutför nuvarande laddcykel nu innan priserna ökar'. Värde > 0 indikerar alltid att en framtida dyrperiod är planerad." - }, - "home_type": { - "description": "Bostadstyp (lägenhet, hus osv.)", - "long_description": "Visar bostadstypen som konfigurerats i ditt Tibber-konto. Denna metadata kan vara användbar för att kategorisera energiförbrukningsmönster.", - "usage_tips": "Använd detta för att organisera ditt smarthussystem eller för analysändamål." - }, - "home_size": { - "description": "Boyta i kvadratmeter", - "long_description": "Visar storleken på din bostad i kvadratmeter som konfigurerats i ditt Tibber-konto. Kan användas för att beräkna energiförbrukning per kvadratmeter.", - "usage_tips": "Använd detta i energieffektivitetsberäkningar: 'Min bostad använder X kWh per kvadratmeter per år'." - }, - "main_fuse_size": { - "description": "Huvudsäkringsstorlek i ampere", - "long_description": "Visar kapaciteten på din huvudsäkring i ampere. Detta bestämmer den maximala elektriska belastningen din bostad kan hantera samtidigt.", - "usage_tips": "Använd detta för att förhindra överbelastning: 'Om total strömförbrukning närmar sig säkringsstorleken, skjut upp start av ytterligare apparater'." - }, - "number_of_residents": { - "description": "Antal personer som bor i bostaden", - "long_description": "Visar antalet boende som konfigurerats i ditt Tibber-konto. Användbart för beräkningar av energiförbrukning per person.", - "usage_tips": "Använd detta för hushållets energianalyser: 'Energiförbrukning per person per dag'." - }, - "primary_heating_source": { - "description": "Primär värmesystemtyp", - "long_description": "Visar typen av värmesystem som används i din bostad som konfigurerats i ditt Tibber-konto. Detta kan vara en värmepump, elektrisk uppvärmning, gas, olja eller andra värmekällor.", - "usage_tips": "Använd detta för att kategorisera värmerelaterade automationer eller för energiförbrukningsanalys efter värmetyp." - }, - "grid_company": { - "description": "Namn på din elnätsoperatör", - "long_description": "Visar namnet på företaget som driver elnätet i ditt område. Detta är distributionssystemoperatören (DSO) som ansvarar för att leverera elektricitet till ditt hem.", - "usage_tips": "Användbart för administrativa ändamål och felsökning av nätrelaterade problem." - }, - "grid_area_code": { - "description": "Nätområdets identifieringskod", - "long_description": "Visar koden som identifierar ditt elnätsområde. Denna kod används av nätoperatören för routing- och faktureringsändamål.", - "usage_tips": "Använd detta som administrativ referens eller vid kontakt med din nätoperatör." - }, - "price_area_code": { - "description": "Elprisområdeskod", - "long_description": "Visar koden för ditt elprisområde (t.ex. NO1, NO2, SE3, DK1). Olika områden har olika grossistelpriser baserat på regionalt utbud och efterfrågan.", - "usage_tips": "Använd detta för att förstå vilket prisområde du befinner dig i. Användbart vid jämförelse av priser med andra eller analys av regionala prismönster." - }, - "consumption_ean": { - "description": "EAN-kod för elförbrukningsmätning", - "long_description": "Visar European Article Number (EAN)-koden som unikt identifierar din elförbrukningsmätare. Denna 18-siffriga kod används för fakturerings- och administrativa ändamål.", - "usage_tips": "Använd detta vid kommunikation med din elleverantör eller för administrativ dokumentation." - }, - "production_ean": { - "description": "EAN-kod för elproduktionsmätning", - "long_description": "Visar European Article Number (EAN)-koden för din elproduktionsmätare (om du har solpaneler eller annan produktion). Denna kod spårar elektricitet du matar tillbaka till nätet.", - "usage_tips": "Relevant om du har solpaneler eller annan elproduktion. Använd för administrativa ändamål och vid krav på inmatningsersättning." - }, - "energy_tax_type": { - "description": "Typ av energiskatt som tillämpas", - "long_description": "Visar energiskattekategorin som tillämpas på din elförbrukning. Skattesatser varierar per land och ibland per konsumenttyp (privat, kommersiell osv.).", - "usage_tips": "Använd detta för att förstå uppdelningen av din elräkning och för totala kostnadsberäkningar." - }, - "vat_type": { - "description": "Momskategori (mervärdesskatt)", - "long_description": "Visar momskategorin som tillämpas på din elförbrukning. Momssatser varierar per land och kan skilja sig för elektricitet jämfört med andra varor och tjänster.", - "usage_tips": "Använd detta för att förstå din elräkning och beräkna totala kostnader inklusive skatter." - }, - "estimated_annual_consumption": { - "description": "Uppskattat årligt elförbrukning i kWh", - "long_description": "Visar din uppskattade årliga elförbrukning i kilowattimmar som beräknats eller konfigurerats i ditt Tibber-konto. Denna uppskattning används för att jämföra faktisk förbrukning med förväntade värden.", - "usage_tips": "Använd detta för att spåra om din faktiska förbrukning är över eller under förväntningarna. Jämför månatlig förbrukning med 1/12 av detta värde för att identifiera ovanliga mönster." - }, - "subscription_status": { - "description": "Status för ditt Tibber-abonnemang", - "long_description": "Visar om ditt Tibber-abonnemang för närvarande är aktivt, har avslutats eller väntar på aktivering. En status 'Aktiv' betyder att du aktivt tar emot elektricitet genom Tibber.", - "usage_tips": "Använd detta för att övervaka din abonnemangsstatus. Ställ in varningar om statusen ändras från 'Aktiv' för att säkerställa oavbruten service." - }, - "day_pattern_yesterday": { - "description": "Detekterat prismönster för gårdagens elpriser", - "long_description": "Klassificerar igår i ett prismönster: Dal (billigt på mitten), Topp (dyrt på mitten), Dubbeldal (W-form, två billiga perioder), Dubbeltopp (M-form, två dyra toppar), Flat (liten variation), Stigande, Fallande eller Blandad. Konfidensen och CV-attributen visar hur tillförlitligt mönstret detekterades.", - "usage_tips": "Använd gårdagens mönster för att förfina automationer: ett Dalmönster upprepas ofta nästa dag och tyder på att du bör förplanera billiga middagstimmar." - }, - "day_pattern_today": { - "description": "Detekterat prismönster för dagens elpriser", - "long_description": "Klassificerar idag i ett prismönster: Dal (billigt på middagen), Topp (dyrt på middagen), Dubbeldal (W-form), Dubbeltopp (M-form), Flat, Stigande, Fallande eller Blandad. Attributen inkluderar konfidenspoäng (0–1), variationskoefficient, knäpunkttider och dagsegment.", - "usage_tips": "Använd dagens mönster för att flytta förbrukning. Daldag: kör diskmaskinen, tvättmaskinen eller ladda elbilen på middagen. Toppdag: kör apparater tidigt på morgonen eller sent på kvällen. Använd valley_start och valley_end för precisa automationer." - }, - "day_pattern_tomorrow": { - "description": "Detekterat prismönster för morgondagens elpriser", - "long_description": "Klassificerar imorgon (när data finns tillgänglig, vanligtvis efter 13:00) i ett prismönster med samma algoritm som idag. Attributen valley_start/valley_end eller peak_start/peak_end ger knäpunkttider för det primära extremvärdet.", - "usage_tips": "Ställ in kvällsautomationer som läser morgondagens mönster och förkonfigurerar värmepump, billaddare eller varmvattenberedare. Kombinera med tomorrow_data_available-binärsensorn." - }, - "chart_data_export": { - "description": "Dataexport för dashboard-integrationer", - "long_description": "Denna sensor anropar get_chartdata-tjänsten med din konfigurerade YAML-konfiguration och exponerar resultatet som entitetsattribut. Statusen visar 'ready' när data är tillgänglig, 'error' vid fel, eller 'pending' före första anropet. Perfekt för dashboard-integrationer som ApexCharts som behöver läsa prisdata från entitetsattribut.", - "usage_tips": "Konfigurera YAML-parametrarna i integrationsalternativen för att matcha ditt get_chartdata-tjänstanrop. Sensorn uppdateras automatiskt när prisdata uppdateras (vanligtvis efter midnatt och när morgondagens data anländer). Få tillgång till tjänstesvarsdata direkt från entitetens attribut - strukturen matchar exakt vad get_chartdata returnerar." - }, - "chart_metadata": { - "description": "Lättviktig metadata för diagramkonfiguration", - "long_description": "Tillhandahåller väsentliga diagramkonfigurationsvärden som sensorattribut. Användbart för vilket diagramkort som helst som behöver Y-axelgränser. Sensorn anropar get_chartdata med endast-metadata-läge (ingen databehandling) och extraherar: yaxis_min, yaxis_max (föreslagen Y-axelomfång för optimal skalning). Statusen återspeglar tjänstanropsresultatet: 'ready' vid framgång, 'error' vid fel, 'pending' under initialisering.", - "usage_tips": "Konfigurera via configuration.yaml under tibber_prices.chart_metadata_config (valfritt: day, subunit_currency, resolution). Sensorn uppdateras automatiskt vid pris dataändringar. Få tillgång till metadata från attribut: yaxis_min, yaxis_max. Använd med config-template-card eller vilket verktyg som helst som läser entitetsattribut - perfekt för dynamisk diagramkonfiguration utan manuella beräkningar." - } + "current_interval_price_base": { + "description": "Nuvarande elpris i huvudvaluta (EUR/kWh, NOK/kWh, osv.) för Energipanelen", + "long_description": "Visar nuvarande pris per kWh i huvudvaluta-enheter (t.ex. EUR/kWh istället för ct/kWh, NOK/kWh istället för øre/kWh). Denna sensor är speciellt utformad för användning med Home Assistants Energipanel, som kräver priser i standardvalutaenheter.", + "usage_tips": "Använd denna sensor när du konfigurerar Energipanelen under Inställningar → Instrumentpaneler → Energi. Välj denna sensor som 'Entitet med nuvarande pris' för att automatiskt beräkna dina energikostnader. Energipanelen multiplicerar din energiförbrukning (kWh) med detta pris för att visa totala kostnader." }, - "binary_sensor": { - "tomorrow_data_available": { - "description": "Om prisdata för morgondagen är tillgänglig", - "long_description": "Indikerar om prisdata för följande dag har mottagits från Tibber", - "usage_tips": "Använd detta för att kontrollera om morgondagens priser är tillgängliga för planering" - }, - "peak_price_period": { - "description": "Om nuvarande intervall är bland de dyraste på dagen", - "long_description": "Aktiveras när nuvarande pris ligger i topp 20% av dagens priser", - "usage_tips": "Använd detta för att undvika att köra högkonsumtionsapparater under dyra intervaller" - }, - "best_price_period": { - "description": "Om nuvarande intervall är bland de billigaste på dagen", - "long_description": "Aktiveras när nuvarande pris ligger i botten 20% av dagens priser", - "usage_tips": "Använd detta för att köra högkonsumtionsapparater under de billigaste intervallerna" - }, - "connection": { - "description": "Om anslutningen till Tibber API fungerar", - "long_description": "Indikerar om integrationen framgångsrikt kan ansluta till Tibber API", - "usage_tips": "Använd detta för att övervaka anslutningsstatus till Tibber API" - }, - "has_ventilation_system": { - "description": "Om din bostad har ventilationssystem", - "long_description": "Indikerar om ett ventilationssystem är registrerat för din bostad i Tibber-kontot. Ventilationssystem kan vara betydande elförbrukare som kan dra nytta av smart schemaläggning.", - "usage_tips": "Använd detta för att aktivera ventilationsspecifika automationer eller energiövervakning. Om aktivt, överväg att schemalägga ventilation under lågprisperioder." - }, - "realtime_consumption_enabled": { - "description": "Om realtidsförbrukningsövervakning är aktiv", - "long_description": "Indikerar om realtidsövervakning av elförbrukning är aktiverad och aktiv för ditt Tibber-hem. Detta kräver kompatibel mätutrustning (t.ex. Tibber Pulse) och en aktiv prenumeration.", - "usage_tips": "Använd detta för att verifiera att realtidsförbrukningen är tillgänglig. Aktivera meddelanden om detta oväntat ändras till 'av', vilket indikerar potentiella hårdvaru- eller anslutningsproblem." - } + "next_interval_price": { + "description": "Nästa intervalls elpris per kWh", + "long_description": "Visar priset för nästa 15-minuters intervall från ditt Tibber-abonnemang", + "usage_tips": "Använd detta för att förbereda dig för kommande prisändringar eller schemalägga enheter att köras under billigare intervaller" }, - "number": { - "best_price_flex_override": { - "description": "Maximal procent över daglig minimumpris som intervaller kan ha och fortfarande kvalificera som 'bästa pris'. Rekommenderas: 15-20 med lättnad aktiverad (standard), eller 25-35 utan lättnad. Maximum: 50 (hårt tak för tillförlitlig perioddetektering).", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Flexibilitet'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", - "usage_tips": "Aktivera denna entitet för att dynamiskt justera bästa pris-detektering via automatiseringar, t.ex. högre flexibilitet för kritiska laster eller striktare krav för flexibla apparater." - }, - "best_price_min_distance_override": { - "description": "Minsta procentuella avstånd under dagligt genomsnitt. Intervaller måste vara så långt under genomsnittet för att kvalificera som 'bästa pris'. Hjälper att skilja äkta lågprisperioder från genomsnittspriser.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Minimiavstånd'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", - "usage_tips": "Öka värdet för striktare bästa pris-kriterier. Minska om för få perioder detekteras." - }, - "best_price_min_period_length_override": { - "description": "Minsta periodlängd i 15-minuters intervaller. Perioder kortare än detta rapporteras inte. Exempel: 2 = minst 30 minuter.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Minsta periodlängd'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", - "usage_tips": "Anpassa till typisk apparatkörtid: 2 (30 min) för snabbprogram, 4-8 (1-2 timmar) för normala cykler, 8+ för långa ECO-program." - }, - "best_price_min_periods_override": { - "description": "Minsta antal bästa pris-perioder att hitta dagligen. När lättnad är aktiverad kommer systemet automatiskt att justera kriterierna för att uppnå detta antal.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Minsta antal perioder'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", - "usage_tips": "Ställ in detta på antalet tidskritiska uppgifter du har dagligen. Exempel: 2 för två tvattmaskinskörningar." - }, - "best_price_relaxation_attempts_override": { - "description": "Antal försök att gradvis lätta på kriterierna för att uppnå minsta periodantal. Varje försök ökar flexibiliteten med 3 procent. Vid 0 används endast baskriterier.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Lättnadsförsök'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", - "usage_tips": "Högre värden gör perioddetektering mer adaptiv för dagar med stabila priser. Ställ in på 0 för att tvinga strikta kriterier utan lättnad." - }, - "best_price_gap_count_override": { - "description": "Maximalt antal dyrare intervaller som kan tillåtas mellan billiga intervaller medan de fortfarande räknas som en sammanhängande period. Vid 0 måste billiga intervaller vara påföljande.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Glaptolerans'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", - "usage_tips": "Öka detta för apparater med variabel last (t.ex. värmepumpar) som kan tolerera korta dyrare intervaller. Ställ in på 0 för kontinuerligt billiga perioder." - }, - "peak_price_flex_override": { - "description": "Maximal procent under daglig maximumpris som intervaller kan ha och fortfarande kvalificera som 'topppris'. Samma rekommendationer som för bästa pris-flexibilitet.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Flexibilitet'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", - "usage_tips": "Använd detta för att justera topppris-tröskeln vid körtid för automatiseringar som undviker förbrukning under dyra timmar." - }, - "peak_price_min_distance_override": { - "description": "Minsta procentuella avstånd över dagligt genomsnitt. Intervaller måste vara så långt över genomsnittet för att kvalificera som 'topppris'.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Minimiavstånd'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", - "usage_tips": "Öka värdet för att endast fånga extrema pristoppar. Minska för att inkludera fler högpristider." - }, - "peak_price_min_period_length_override": { - "description": "Minsta periodlängd i 15-minuters intervaller för topppriser. Kortare pristoppar rapporteras inte som perioder.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Minsta periodlängd'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", - "usage_tips": "Kortare värden fångar korta pristoppar. Längre värden fokuserar på ihållande högprisperioder." - }, - "peak_price_min_periods_override": { - "description": "Minsta antal topppris-perioder att hitta dagligen.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Minsta antal perioder'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", - "usage_tips": "Ställ in detta baserat på hur många högprisperioder du vill fånga per dag för automatiseringar." - }, - "peak_price_relaxation_attempts_override": { - "description": "Antal försök att lätta på kriterierna för att uppnå minsta antal topppris-perioder.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Lättnadsförsök'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", - "usage_tips": "Öka detta om inga perioder hittas på dagar med stabila priser. Ställ in på 0 för att tvinga strikta kriterier." - }, - "peak_price_gap_count_override": { - "description": "Maximalt antal billigare intervaller som kan tillåtas mellan dyra intervaller medan de fortfarande räknas som en topppris-period.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Glaptolerans'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", - "usage_tips": "Högre värden fångar längre högprisperioder även med korta prisdipp. Ställ in på 0 för strikt sammanhängande topppriser." - } + "previous_interval_price": { + "description": "Föregående intervalls elpris per kWh", + "long_description": "Visar priset för föregående 15-minuters intervall från ditt Tibber-abonnemang", + "usage_tips": "Använd detta för att granska tidigare prisändringar eller spåra prishistorik" }, - "switch": { - "best_price_enable_relaxation_override": { - "description": "När aktiverad lättas kriterierna automatiskt för att uppnå minsta periodantal. När inaktiverad rapporteras endast perioder som uppfyller strikta kriterier (möjligen noll perioder på dagar med stabila priser).", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Uppnå minimiantal'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", - "usage_tips": "Aktivera detta för garanterade dagliga automatiseringsmöjligheter. Inaktivera om du endast vill ha riktigt billiga perioder, även om det innebär inga perioder vissa dagar." - }, - "peak_price_enable_relaxation_override": { - "description": "När aktiverad lättas kriterierna automatiskt för att uppnå minsta periodantal. När inaktiverad rapporteras endast äkta pristoppar.", - "long_description": "När denna entitet är aktiverad överskriver värdet 'Uppnå minimiantal'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", - "usage_tips": "Aktivera detta för konsekventa topppris-varningar. Inaktivera för att endast fånga extrema pristoppar." - } + "current_hour_average_price": { + "description": "Rullande 5-intervalls genomsnittspris per kWh", + "long_description": "Visar genomsnittspriset per kWh beräknat från 5 intervaller: 2 föregående, nuvarande och 2 nästa intervaller (ungefär 75 minuter totalt). Detta ger ett utjämnat 'timpris' som anpassar sig när tiden går, istället för att vara fixerat till klockslag.", + "usage_tips": "Använd detta för en stabilare prisindikator som jämnar ut kortsiktiga fluktuationer medan den fortfarande är responsiv till prisändringar. Bättre än fasta timpriser för konsumtionsbeslut." }, - "home_types": { - "APARTMENT": "Lägenhet", - "ROWHOUSE": "Radhus", - "HOUSE": "Hus", - "COTTAGE": "Stuga" + "next_hour_average_price": { + "description": "Rullande 5-intervalls genomsnittspris för nästa timme per kWh", + "long_description": "Visar genomsnittspriset per kWh beräknat från 5 intervaller centrerade en timme framåt: ungefär intervaller +2 till +6 från nu (täcker minuter +30 till +105). Detta ger ett framåtblickande utjämnat 'timpris' för konsumtionsplanering.", + "usage_tips": "Använd detta för att förutse prisändringar nästa timme. Användbart för att schemalägga högkonsumtionsaktiviteter som laddning av elfordon, körning av diskmaskiner eller värmesystem." }, - "time_units": { - "day": "{count} dag", - "days": "{count} dagar", - "hour": "{count} timme", - "hours": "{count} timmar", - "minute": "{count} minut", - "minutes": "{count} minuter", - "ago": "{parts} sedan", - "now": "nu" + "lowest_price_today": { + "description": "Det lägsta elpriset för idag per kWh", + "long_description": "Visar det lägsta priset per kWh för nuvarande dag från ditt Tibber-abonnemang", + "usage_tips": "Använd detta för att jämföra nuvarande priser med den billigaste tiden på dagen" }, - "attribution": "Data tillhandahålls av Tibber" + "highest_price_today": { + "description": "Det högsta elpriset för idag per kWh", + "long_description": "Visar det högsta priset per kWh för nuvarande dag från ditt Tibber-abonnemang", + "usage_tips": "Använd detta för att undvika att köra apparater under topppristider" + }, + "average_price_today": { + "description": "Typiskt elpris för idag per kWh (konfigurerbart visningsformat)", + "long_description": "Visar priset per kWh för nuvarande dag från ditt Tibber-abonnemang. **Som standard visar statusen medianen** (motståndskraftig mot extrema prispikar, visar typisk prisnåvå). Du kan ändra detta i integrationsinstllningarna för att visa det aritmetiska medelvärdet istället. Det alternativa värdet är tillgängligt som attribut.", + "usage_tips": "Använd detta som baslinje för att jämföra nuvarande priser. För beräkningar använd: {{ state_attr('sensor.average_price_today', 'price_mean') }}" + }, + "lowest_price_tomorrow": { + "description": "Det lägsta elpriset för imorgon per kWh", + "long_description": "Visar det lägsta priset per kWh för morgondagen från ditt Tibber-abonnemang. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", + "usage_tips": "Använd detta för att planera energikrävande aktiviteter för morgondagens billigaste tid. Perfekt för förhandsplanering av uppvärmning, EV-laddning eller apparater." + }, + "highest_price_tomorrow": { + "description": "Det högsta elpriset för imorgon per kWh", + "long_description": "Visar det högsta priset per kWh för morgondagen från ditt Tibber-abonnemang. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", + "usage_tips": "Använd detta för att undvika att köra apparater under morgondagens topppristider. Användbart för att planera runt dyra perioder." + }, + "average_price_tomorrow": { + "description": "Typiskt elpris för imorgon per kWh (konfigurerbart visningsformat)", + "long_description": "Visar priset per kWh för morgondagen från ditt Tibber-abonnemang. **Som standard visar statusen medianen** (motståndskraftig mot extrema prispikar). Du kan ändra detta i integrationsinstllningarna för att visa det aritmetiska medelvärdet istället. Det alternativa värdet är tillgängligt som attribut. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", + "usage_tips": "Använd detta som baslinje för att jämföra morgondagens priser och planera konsumtion. Jämför med dagens median för att se om morgondagen kommer att bli dyrare eller billigare totalt sett." + }, + "yesterday_price_level": { + "description": "Aggregerad prisnivå för igår", + "long_description": "Visar den aggregerade prisnivån för alla intervall igår. Använder samma logik som timsensorerna för att bestämma den totala prisnivån för hela dagen.", + "usage_tips": "Använd detta för att förstå den övergripande prissituationen igår. Jämför med idag för att se dagliga trender." + }, + "today_price_level": { + "description": "Aggregerad prisnivå för idag", + "long_description": "Visar den aggregerade prisnivån för alla intervall idag. Använder samma logik som timsensorerna för att bestämma den totala prisnivån för hela dagen.", + "usage_tips": "Använd detta för att förstå dagens prissituation snabbt. Praktiskt för snabba bedömningar om dagen i allmänhet är billig eller dyr." + }, + "tomorrow_price_level": { + "description": "Aggregerad prisnivå för imorgon", + "long_description": "Visar den aggregerade prisnivån för alla intervall imorgon. Använder samma logik som timsensorerna för att bestämma den totala prisnivån för hela dagen. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", + "usage_tips": "Använd detta för att förstå imorgonens prissituation. Jämför med idag för att se om imorgon blir mer eller mindre gynnsamt för energiförbrukning." + }, + "yesterday_price_rating": { + "description": "Aggregerad prisvärdering för igår", + "long_description": "Visar den aggregerade prisvärderingen (låg/normal/hög) för alla intervall igår, baserat på dina konfigurerade tröskelvärden. Använder samma logik som timsensorerna för att bestämma den totala värderingen för hela dagen.", + "usage_tips": "Använd detta för att förstå igårens prissituation i förhållande till dina personliga tröskelvärden. Jämför med idag för trendanalys." + }, + "today_price_rating": { + "description": "Aggregerad prisvärdering för idag", + "long_description": "Visar den aggregerade prisvärderingen (låg/normal/hög) för alla intervall idag, baserat på dina konfigurerade tröskelvärden. Använder samma logik som timsensorerna för att bestämme den totala värderingen för hela dagen.", + "usage_tips": "Använd detta för att snabbt bedöma dagens prissituation i förhållande till dina personliga tröskelvärden. Hjälper till att fatta förbrukningsbeslut för innevarande dag." + }, + "tomorrow_price_rating": { + "description": "Aggregerad prisvärdering för imorgon", + "long_description": "Visar den aggregerade prisvärderingen (låg/normal/hög) för alla intervall imorgon, baserat på dina konfigurerade tröskelvärden. Använder samma logik som timsensorerna för att bestämma den totala värderingen för hela dagen. Denna sensor blir otillgänglig tills morgondagens data publiceras av Tibber (vanligtvis runt 13:00-14:00 CET).", + "usage_tips": "Använd detta för att planera imorgonens energiförbrukning baserat på dina personliga priströskelvärden. Jämför med idag för att avgöra om du ska skjuta upp förbrukning till imorgon eller använda energi idag." + }, + "trailing_price_average": { + "description": "Typiskt elpris för de senaste 24 timmarna per kWh (konfigurerbart visningsformat)", + "long_description": "Visar priset per kWh beräknat från de senaste 24 timmarna. **Som standard visar statusen medianen** (motståndskraftig mot extrema prispikar, visar typisk prisnåvå). Du kan ändra detta i integrationsinstllningarna för att visa det aritmetiska medelvärdet istället. Det alternativa värdet är tillgängligt som attribut. Uppdateras var 15:e minut.", + "usage_tips": "Använd statusvärdet för att se den typiska nuvarande prisnåvån. För kostnadsberäkningar använd: {{ state_attr('sensor.trailing_price_average', 'price_mean') }}" + }, + "leading_price_average": { + "description": "Typiskt elpris för nästa 24 timmar per kWh (konfigurerbart visningsformat)", + "long_description": "Visar priset per kWh beräknat från nästa 24 timmar. **Som standard visar statusen medianen** (motståndskraftig mot extrema prispikar, visar förväntad prisnåvå). Du kan ändra detta i integrationsinstllningarna för att visa det aritmetiska medelvärdet istället. Det alternativa värdet är tillgängligt som attribut.", + "usage_tips": "Använd statusvärdet för att se den typiska kommande prisnåvån. För kostnadsberäkningar använd: {{ state_attr('sensor.leading_price_average', 'price_mean') }}" + }, + "trailing_price_min": { + "description": "Det minsta elpriset för de senaste 24 timmarna per kWh", + "long_description": "Visar minimipriset per kWh från de senaste 24 timmarna (rullande minimum) från ditt Tibber-abonnemang. Detta ger det lägsta priset som setts de senaste 24 timmarna.", + "usage_tips": "Använd detta för att se den bästa prismöjligheten du hade de senaste 24 timmarna och jämför med nuvarande priser." + }, + "trailing_price_max": { + "description": "Det maximala elpriset för de senaste 24 timmarna per kWh", + "long_description": "Visar maximipriset per kWh från de senaste 24 timmarna (rullande maximum) från ditt Tibber-abonnemang. Detta ger det högsta priset som setts de senaste 24 timmarna.", + "usage_tips": "Använd detta för att se topppriset de senaste 24 timmarna och bedöma prisvolatilitet." + }, + "leading_price_min": { + "description": "Det minsta elpriset för nästa 24 timmar per kWh", + "long_description": "Visar minimipriset per kWh från nästa 24 timmar (framåtblickande minimum) från ditt Tibber-abonnemang. Detta ger det lägsta priset som förväntas nästa 24 timmar baserat på prognosdata.", + "usage_tips": "Använd detta för att identifiera den bästa prismöjligheten som kommer och planera energikrävande uppgifter därefter." + }, + "leading_price_max": { + "description": "Det maximala elpriset för nästa 24 timmar per kWh", + "long_description": "Visar maximipriset per kWh från nästa 24 timmar (framåtblickande maximum) från ditt Tibber-abonnemang. Detta ger det högsta priset som förväntas nästa 24 timmar baserat på prognosdata.", + "usage_tips": "Använd detta för att undvika att köra apparater under kommande toppprisperioder." + }, + "current_interval_price_level": { + "description": "Den nuvarande prisnivåklassificeringen", + "long_description": "Visar Tibbers klassificering av nuvarande pris jämfört med historiska priser", + "usage_tips": "Använd detta för att skapa automationer baserade på relativa prisnivåer istället för absoluta priser" + }, + "next_interval_price_level": { + "description": "Prisnivå för nästa 15-minuters intervall", + "long_description": "Visar prisnivåklassificeringen för kommande intervall. Hjälper att förutse kortsiktiga prisändringar för omedelbar planering.", + "usage_tips": "Använd för snabba beslut om att starta eller stoppa högeffektsenheter inom de kommande minuterna." + }, + "previous_interval_price_level": { + "description": "Prisnivå för föregående 15-minuters intervall", + "long_description": "Visar prisnivåklassificeringen för senaste intervallet. Användbart för historisk jämförelse och förståelse av senaste pristrender.", + "usage_tips": "Använd för att jämföra nuvarande vs senaste prisnivåer eller analysera konsumtionsmönster mot historiska priser." + }, + "current_hour_price_level": { + "description": "Aggregerad prisnivå för nuvarande rullande timme (5 intervaller)", + "long_description": "Visar median prisnivå över 5 intervaller (2 före, nuvarande, 2 efter) som täcker ungefär 75 minuter. Ger en stabilare prisnivåindikator som jämnar ut kortsiktiga fluktuationer.", + "usage_tips": "Använd för planeringsbeslut på medellång sikt där du vill undvika att reagera på korta pristoppar eller -fall." + }, + "next_hour_price_level": { + "description": "Aggregerad prisnivå för nästa rullande timme (5 intervaller framåt)", + "long_description": "Visar median prisnivå över 5 intervaller centrerade en timme framåt. Hjälper att planera konsumtion baserat på kommande pristrender istället för ögonblickliga framtida priser.", + "usage_tips": "Använd för att schemalägga aktiviteter för nästa timme baserat på en utjämnad prisnivåprognos." + }, + "current_interval_price_rating": { + "description": "Hur nuvarande intervalls pris jämförs med historiska data", + "long_description": "Visar hur nuvarande intervalls pris jämförs med historiska prisdata som en procentsats", + "usage_tips": "En positiv procentsats betyder att nuvarande pris är över genomsnittet, negativ betyder under genomsnittet" + }, + "next_interval_price_rating": { + "description": "Prisvärdering för nästa 15-minuters intervall", + "long_description": "Visar hur nästa intervalls pris jämförs med det rullande 24-timmars genomsnittet. Hjälper att förutse om kommande priser är över eller under den senaste trenden.", + "usage_tips": "Använd för att fatta snabba beslut om att starta aktiviteter i nästa intervall baserat på relativ prisposition." + }, + "previous_interval_price_rating": { + "description": "Prisvärdering för föregående 15-minuters intervall", + "long_description": "Visar hur senaste intervalls pris jämfördes med det rullande genomsnittet. Användbart för att förstå senaste prisbeteende.", + "usage_tips": "Använd för att analysera hur prisvärderingar förändrades över tid eller validera tidigare konsumtionsbeslut." + }, + "current_hour_price_rating": { + "description": "Aggregerad prisvärdering för nuvarande rullande timme (5 intervaller)", + "long_description": "Visar genomsnittlig värdering över 5 intervaller (2 före, nuvarande, 2 efter). Baserad på genomsnittlig procentuell skillnad från rullande 24t genomsnitt, vilket ger en utjämnad värderingsindikator.", + "usage_tips": "Använd för stabil prisvärdering på medellång sikt som inte överreagerar på korta prisavvikelser." + }, + "next_hour_price_rating": { + "description": "Aggregerad prisvärdering för nästa rullande timme (5 intervaller framåt)", + "long_description": "Visar genomsnittlig värdering för 5 intervaller centrerade en timme framåt. Hjälper att förstå om nästa timme generellt kommer att ligga över eller under genomsnittlig prissättning.", + "usage_tips": "Använd för att bestämma om du ska vänta en timme innan du startar högkonsumtionsaktiviteter." + }, + "next_avg_1h": { + "description": "Genomsnittspris för nästa 1 timme (endast framåt från nästa intervall)", + "long_description": "Framåtblickande genomsnitt: Visar genomsnitt av nästa 4 intervaller (1 timme) från och med NÄSTA 15-minuters intervall (inte inklusive nuvarande). Skiljer sig från current_hour_average_price som inkluderar tidigare intervaller. Använd för absolut priströskelpla nering.", + "usage_tips": "Absolut priströskel: Starta endast apparater när genomsnittet stannar under ditt maximalt acceptabla pris (t.ex. under 0,25 EUR/kWh). Kombinera med trendsensor för optimal timing. Obs: Detta är INTE en ersättning för timpriser - använd current_hour_average_price för det." + }, + "next_avg_2h": { + "description": "Genomsnittspris för nästa 2 timmar", + "long_description": "Visar genomsnittspriset för nästa 8 intervaller (2 timmar) från och med nästa 15-minuters intervall.", + "usage_tips": "Absolut priströskel: Sätt ett maximalt acceptabelt genomsnittspris för standardapparater som tvättmaskiner. Säkerställer att du aldrig betalar mer än din gräns." + }, + "next_avg_3h": { + "description": "Genomsnittspris för nästa 3 timmar", + "long_description": "Visar genomsnittspriset för nästa 12 intervaller (3 timmar) från och med nästa 15-minuters intervall.", + "usage_tips": "Absolut priströskel: För EU Eco-program (diskmaskiner, 3-4t körtid). Starta endast när 3t genomsnitt är under din prisgräns. Använd med trendsensor för att hitta bästa ögonblick inom acceptabelt prisområde." + }, + "next_avg_4h": { + "description": "Genomsnittspris för nästa 4 timmar", + "long_description": "Visar genomsnittspriset för nästa 16 intervaller (4 timmar) från och med nästa 15-minuters intervall.", + "usage_tips": "Absolut priströskel: Sätt maximalt acceptabelt pris för värmepumpar eller varmvattenberedare. Förhindrar drift under dyra perioder oavsett relativa trender." + }, + "next_avg_5h": { + "description": "Genomsnittspris för nästa 5 timmar", + "long_description": "Visar genomsnittspriset för nästa 20 intervaller (5 timmar) från och med nästa 15-minuters intervall.", + "usage_tips": "Absolut priströskel: Brygga mellan kort och lång sikt planering. Använd för utökade cykler med hårda prisgränser (t.ex. poolpumpar, utökade uppvärmningscykler)." + }, + "next_avg_6h": { + "description": "Genomsnittspris för nästa 6 timmar", + "long_description": "Visar genomsnittspriset för nästa 24 intervaller (6 timmar) från och med nästa 15-minuters intervall.", + "usage_tips": "Absolut priströskel: Kvällsplanering med pristak. Schemalägg endast uppgifter om 6t genomsnitt stannar under dina maximalt acceptabla kostnader." + }, + "next_avg_8h": { + "description": "Genomsnittspris för nästa 8 timmar", + "long_description": "Visar genomsnittspriset för nästa 32 intervaller (8 timmar) från och med nästa 15-minuters intervall.", + "usage_tips": "Absolut priströskel: Nattliga driftsbeslut. Sätt hårda prisgränser för nattliga laster (batteriladdning, termisk lagring). Överskrid aldrig din budget." + }, + "next_avg_12h": { + "description": "Genomsnittspris för nästa 12 timmar", + "long_description": "Visar genomsnittspriset för nästa 48 intervaller (12 timmar) från och med nästa 15-minuters intervall.", + "usage_tips": "Absolut priströskel: Strategiska beslut med pristak. Fortsätt endast om 12t genomsnitt är under ditt maximalt acceptabla pris. Bra för uppskjutbara stora laster." + }, + "price_outlook_1h": { + "description": "Prisöversikt för nästa timme", + "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under nästa timme (4 intervaller). Alla översiktssensorer (1h–12h) delar samma utgångspunkt: ditt nuvarande pris — de skiljer sig bara i fönsterstorlek. Stigande/fallande vid ±3%, kraftigt vid ±9% (konfigurerbart, volatilitetsadaptivt).", + "usage_tips": "Beslutstöd: 'stigande' = AGERA NU, ditt nuvarande pris är billigare än fönstergenomsnittet. 'fallande' = VÄNTA, fönstergenomsnittet är billigare än nu. 'stabil' = timing spelar ingen roll." + }, + "price_outlook_2h": { + "description": "Prisöversikt för nästa 2 timmar", + "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 2 timmarna (8 intervaller). 'stigande' = nuvarande pris under 2h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", + "usage_tips": "Apparater: 'stigande' = starta nu, du har ett bra pris jämfört med nästa 2h. Kombinera med price_trajectory_2h för att se om priserna fortfarande faller eller redan stiger." + }, + "price_outlook_3h": { + "description": "Prisöversikt för nästa 3 timmar", + "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 3 timmarna (12 intervaller). 'stigande' = nuvarande pris under 3h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", + "usage_tips": "Eco-program: 'stigande' = starta eco-cykeln nu, priser är i genomsnitt högre i fönstret. 'fallande' = vänta, billigare genomsnittligt fönster kommer." + }, + "price_outlook_4h": { + "description": "Prisöversikt för nästa 4 timmar", + "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 4 timmarna (16 intervaller). 'stigande' = nuvarande pris under 4h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", + "usage_tips": "Värmepump/batteri: 'stigande' = ladda nu, du är på en relativ lågpunkt. Kombinera med price_trajectory_4h för att se om priserna fortfarande faller eller redan stiger." + }, + "price_outlook_5h": { + "description": "Prisöversikt för nästa 5 timmar", + "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 5 timmarna (20 intervaller). 'stigande' = nuvarande pris under 5h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", + "usage_tips": "Utökade cykler: 'stigande' eller 'stabil' = bra tid att starta. 'fallande' = vänta om din planering tillåter det." + }, + "price_outlook_6h": { + "description": "Prisöversikt för nästa 6 timmar", + "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 6 timmarna (24 intervaller). 'stigande' = nuvarande pris under 6h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", + "usage_tips": "Kvällsbeslut: 'stigande' = använd el nu medan den är relativt billig. 'fallande' = kvälls-/nattpriserna blir bättre i genomsnitt, vänta om möjligt." + }, + "price_outlook_8h": { + "description": "Prisöversikt för nästa 8 timmar", + "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 8 timmarna (32 intervaller). 'stigande' = nuvarande pris under 8h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", + "usage_tips": "Nattplanering: 'stigande' = ikväll/imorgon blir dyrare i genomsnitt, använd el nu. 'fallande' = nattpriserna blir billigare, värt att vänta." + }, + "price_outlook_12h": { + "description": "Prisöversikt för nästa 12 timmar", + "long_description": "Jämför ditt nuvarande pris med genomsnittet av alla intervaller under de nästa 12 timmarna (48 intervaller). 'stigande' = nuvarande pris under 12h-fönstergenomsnittet; 'fallande' = fönstergenomsnittet är billigare än nu. Stigande/fallande vid ±3%, kraftigt vid ±9%.", + "usage_tips": "Strategiska beslut: 'stigande' = du är på en lågpunkt relativt till nästa 12h, bra tid för strömkrävande uppgifter. 'fallande' = avsevärt bättre genomsnittspriser kommer." + }, + "price_trajectory_2h": { + "description": "Prisutveckling inom nästa 2-timmars fönster", + "long_description": "Compares the average of the first hour with the average of the second hour within the next 2-hour window. 'rising' = second half more expensive than first half. 'falling' = second half cheaper. Rising/falling at ±3%, strongly at ±9% (configurable, volatility-adaptive).", + "usage_tips": "At a price minimum: price_outlook_2h may show 'falling' (window average is below current), but price_trajectory_2h shows 'rising' (second half more expensive) — revealing the upcoming reversal. 'outlook: falling + trajectory: rising' = you're AT the minimum, act now." + }, + "price_trajectory_3h": { + "description": "Prisutveckling inom nästa 3-timmars fönster", + "long_description": "Compares the average of the first 1.5 hours with the average of the second 1.5 hours within the next 3-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Appliance timing: 'outlook: strongly_falling + trajectory: rising' = you're at or past the minimum, prices are already recovering — start now." + }, + "price_trajectory_4h": { + "description": "Prisutveckling inom nästa 4-timmars fönster", + "long_description": "Compares the average of the first 2 hours with the average of the second 2 hours within the next 4-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Complements price_outlook_4h. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Heat pump charging: 'rising' = first half is cheaper, charge now. 'falling' = second half is cheaper, wait. Combine with outlook: if both rising, very strong signal to act now." + }, + "price_trajectory_5h": { + "description": "Prisutveckling inom nästa 5-timmars fönster", + "long_description": "Compares the average of the first 2.5 hours with the average of the second 2.5 hours within the next 5-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Long cycles: 'outlook: rising + trajectory: rising' = clear signal to start now. 'outlook: falling + trajectory: rising' = you're near the bottom, good time to start." + }, + "price_trajectory_6h": { + "description": "Prisutveckling inom nästa 6-timmars fönster", + "long_description": "Compares the average of the first 3 hours with the average of the second 3 hours within the next 6-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Evening/overnight planning: 'falling' at evening peak = overnight will be cheaper, postpone. 'rising' in the morning = current morning prices are the low." + }, + "price_trajectory_8h": { + "description": "Prisutveckling inom nästa 8-timmars fönster", + "long_description": "Compares the average of the first 4 hours with the average of the second 4 hours within the next 8-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Overnight charging: 'rising' during evening = first half of night is cheapest, start charging earlier. 'falling' = second half will be cheapest, delay start." + }, + "price_trajectory_12h": { + "description": "Prisutveckling inom nästa 12-timmars fönster", + "long_description": "Compares the average of the first 6 hours with the average of the second 6 hours within the next 12-hour window. 'rising' = prices are climbing; 'falling' = prices are dropping. Rising/falling at ±3%, strongly at ±9%.", + "usage_tips": "Day-ahead planning: 'rising' at midnight = first half of day is cheaper, schedule morning loads. 'falling' = afternoon/evening scheduling is better." + }, + "current_price_trend": { + "description": "Nuvarande pristrend-riktning och hur länge den varar", + "long_description": "Visar nuvarande pristrend (stigande/fallande/stabil) genom att kombinera historiskt momentum (viktad 1h tillbakablick) med framtidsutsikt. Känner igen pågående trender tidigare än endast framtidsanalys. Använder ±3 % momentum-tröskel och volatilitetsanpassad framtidsjämförelse. Beräknar dynamiskt till nästa trendändring (eller 3t standard om ingen ändring på 24t). Status visar nuvarande riktning, attribut visar när den ändras och vad som kommer härnäst.", + "usage_tips": "Statusvisning: Dashboard-synlighet av 'vad händer nu till när'. Perfekt synkroniserad med next_price_trend_change. Exempel: Badge som visar 'Stigande i 2,5t' eller 'Fallande till 16:45'. Bättre än tidsfönster-sensorer eftersom den förstår att du REDAN är i en trend, inte bara förutsäger framtida ändringar. Använd för snabb visuell överblick, inte automationsutlösare." + }, + "next_price_trend_change": { + "description": "När nästa betydande pristrendändring kommer att inträffa", + "long_description": "Skannar de nästa 24 timmarna (96 intervaller) för att hitta när pristrend-riktningen kommer att ändras. Bara riktningsändringar räknas: stigande/kraftigt stigande är en grupp, fallande/kraftigt fallande en annan, stabil är egen. En ändring från stigande till kraftigt stigande är INTE en trendändring. Använder volatilitetsadaptiva tröskelvärden (standard: ±3%/±9%) med hysteres (standard: 3 på varandra följande intervaller). Returnerar tidstämpeln när ändringen förväntas.", + "usage_tips": "Händelsestyrd automatisering: Utlös åtgärder NÄR trenden ändras, inte OM X timmar. Exempel: 'Ladda EV när nästa trendändring visar fallande priser' eller 'Starta diskmaskin innan priserna stiger'. Kompletterar tidsfönster-sensorer (price_outlook_Xh) som svarar på 'KOMMER priserna att vara högre om X timmar?'" + }, + "next_price_trend_change_in": { + "description": "Tid till nästa pristrendändring", + "long_description": "Visar hur lång tid det är kvar till nästa betydande pristrendändring inträffar. Värdet visas i timmar (t.ex. 2,25 h) för dashboards. Delar samma analys som tidstämpel-sensorn 'Nästa pristrendändring' men presenterar det som en nedtellningsvaraktighet. Uppdateras varje minut för noggranna nedtellningar. Visar 'Okänd' när ingen trendändring förväntas inom de närmaste 24 timmarna.", + "usage_tips": "Dashboard-nedtellning: Visa 'Trendändring om 1,5 h' som live nedtellning. För automatiseringar: 'Om next_price_trend_change_in < 0,25 (15 min), förbered för prisriktningsändring'. Kompletterar 'Nästa pristrendändring' (tidstämpel) — använd tidstämpeln för 'NÄR' och denna sensor för 'HUR LÄNGE'." + }, + "daily_rating": { + "description": "Hur dagens priser jämförs med historiska data", + "long_description": "Visar hur dagens priser jämförs med historiska prisdata som en procentsats", + "usage_tips": "En positiv procentsats betyder att dagens priser är över genomsnittet, negativ betyder under genomsnittet" + }, + "monthly_rating": { + "description": "Hur denna månads priser jämförs med historiska data", + "long_description": "Visar hur denna månads priser jämförs med historiska prisdata som en procentsats", + "usage_tips": "En positiv procentsats betyder att denna månads priser är över genomsnittet, negativ betyder under genomsnittet" + }, + "data_timestamp": { + "description": "Tidsstämpel för senaste tillgängliga prisdataintervall", + "long_description": "Visar tidsstämpeln för det senaste tillgängliga prisdataintervallet från ditt Tibber-abonnemang" + }, + "today_volatility": { + "description": "Hur mycket elpriserna varierar idag", + "long_description": "Visar om dagens priser är stabila eller har stora svängningar. Låg volatilitet innebär ganska jämna priser – timing spelar liten roll. Hög volatilitet innebär tydliga prisskillnader under dagen – bra tillfälle att flytta förbrukning till billigare perioder. `price_coefficient_variation_%` visar procentvärdet, `price_spread` visar den absoluta prisspannet.", + "usage_tips": "Använd detta för att avgöra om optimering är värt besväret. Vid låg volatilitet kan du köra enheter när som helst. Vid hög volatilitet sparar du märkbart genom att följa Best Price-perioder." + }, + "tomorrow_volatility": { + "description": "Hur mycket elpriserna kommer att variera i morgon", + "long_description": "Visar om priserna i morgon blir stabila eller får stora svängningar. Tillgänglig när morgondagens data är publicerad (vanligen 13:00–14:00 CET). Låg volatilitet innebär ganska jämna priser – timing är inte kritisk. Hög volatilitet innebär tydliga prisskillnader under dagen – bra läge att planera energikrävande uppgifter. `price_coefficient_variation_%` visar procentvärdet, `price_spread` visar den absoluta prisspannet.", + "usage_tips": "Använd för att planera morgondagens förbrukning. Hög volatilitet? Planera flexibla laster i Best Price-perioder. Låg volatilitet? Kör enheter när det passar dig." + }, + "next_24h_volatility": { + "description": "Hur mycket priserna varierar de kommande 24 timmarna", + "long_description": "Visar prisvolatilitet för ett rullande 24-timmarsfönster från nu (uppdateras var 15:e minut). Låg volatilitet innebär ganska jämna priser. Hög volatilitet innebär märkbara prissvängningar och därmed optimeringsmöjligheter. Till skillnad från idag/i morgon-sensorer korsar den här dagsgränser och ger en kontinuerlig framåtblickande bedömning. `price_coefficient_variation_%` visar procentvärdet, `price_spread` visar den absoluta prisspannet.", + "usage_tips": "Bäst för beslut i realtid. Använd vid planering av batteriladdning eller andra flexibla laster som kan gå över midnatt. Ger en konsekvent 24h-bild oberoende av kalenderdag." + }, + "today_tomorrow_volatility": { + "description": "Kombinerad prisvolatilitet för idag och imorgon", + "long_description": "Visar den samlade volatiliteten när idag och imorgon ses tillsammans (när morgondatan finns). Visar om det finns tydliga prisskillnader över dagsgränsen. Faller tillbaka till endast idag om morgondatan saknas. Nyttig för flerdagarsoptimering. `price_coefficient_variation_%` visar procentvärdet, `price_spread` visar den absoluta prisspannet.", + "usage_tips": "Använd för uppgifter som sträcker sig över flera dagar. Kontrollera om prisskillnaderna är stora nog för att planera efter. De enskilda dag-sensorerna visar bidrag per dag om du behöver mer detaljer." + }, + "data_lifecycle_status": { + "description": "Gjeldende tilstand for prisdatalivssyklus og hurtigbufring", + "long_description": "Viser om integrasjonen bruker hurtigbufrede data eller ferske data fra API-et. Viser gjeldende livssyklustilstand: 'cached' (bruker lagrede data), 'fresh' (nettopp hentet fra API), 'refreshing' (henter for øyeblikket), 'searching_tomorrow' (søker aktivt etter morgendagens data etter 13:00), 'turnover_pending' (innen 15 minutter før midnatt, 23:45-00:00), eller 'error' (henting mislyktes). Inkluderer omfattende attributter som cache-alder, neste API-spørring, datafullstendighet og API-anropsstatistikk.", + "usage_tips": "Bruk denne diagnosesensoren for å forstå dataferskhet og API-anropsmønstre. Sjekk 'cache_age'-attributtet for å se hvor gamle de nåværende dataene er. Overvåk 'next_api_poll' for å vite når neste oppdatering er planlagt. Bruk 'data_completeness' for å se om data for i går/i dag/i morgen er tilgjengelig. 'api_calls_today'-telleren hjelper med å spore API-bruk. Perfekt for feilsøking eller forståelse av integrasjonens oppførsel." + }, + "best_price_end_time": { + "description": "Total längd för nuvarande eller nästa billigperiod (state i timmar, attribut i minuter)", + "long_description": "Visar hur länge billigperioden varar. State använder timmar (decimal) för en läsbar UI; attributet `period_duration_minutes` behåller avrundade minuter för automationer. Aktiv → varaktighet för aktuell period, annars nästa.", + "usage_tips": "UI kan visa 1,5 h medan `period_duration_minutes` = 90 för automationer." + }, + "best_price_period_duration": { + "description": "Längd på nuvarande/nästa billigperiod", + "long_description": "Total längd av nuvarande eller nästa billigperiod. State visas i timmar (t.ex. 1,5 h) för enkel avläsning i UI, medan attributet `period_duration_minutes` ger samma värde i minuter (t.ex. 90) för automationer. Detta värde representerar den **fullständigt planerade längden** av perioden och är konstant under hela perioden, även när återstående tid (remaining_minutes) minskar.", + "usage_tips": "Kombinera med remaining_minutes för att beräkna när långvariga enheter ska stoppas: Perioden startade för `period_duration_minutes - remaining_minutes` minuter sedan. Detta attribut stöder energioptimeringsstrategier genom att hjälpa till med att planera högförbruksaktiviteter inom billiga perioder." + }, + "best_price_remaining_minutes": { + "description": "Tid kvar i nuvarande billigperiod", + "long_description": "Visar hur mycket tid som återstår i nuvarande billigperiod. State visas i timmar (t.ex. 0,75 h) för enkel avläsning i instrumentpaneler, medan attributet `remaining_minutes` ger samma tid i minuter (t.ex. 45) för automationsvillkor. **Nedräkningstimer**: Detta värde minskar varje minut under en aktiv period. Returnerar 0 när ingen billigperiod är aktiv. Uppdateras varje minut.", + "usage_tips": "För automationer: Använd attribut `remaining_minutes` som 'Om remaining_minutes > 60, starta diskmaskin nu (tillräckligt med tid för att slutföra)' eller 'Om remaining_minutes < 15, avsluta nuvarande cykel snart'. UI visar användarvänliga timmar (t.ex. 1,25 h). Värde 0 indikerar ingen aktiv billigperiod." + }, + "best_price_progress": { + "description": "Framsteg genom nuvarande billigperiod (0% när inaktiv)", + "long_description": "Visar framsteg genom nuvarande billigperiod som 0-100%. Returnerar 0% när ingen period är aktiv. Uppdateras varje minut. 0% betyder att perioden just startade, 100% betyder att den snart slutar.", + "usage_tips": "Perfekt för visuella framstegsindikatorer. Använd i automationer: 'Om progress > 0 OCH progress > 75, skicka avisering om att billigperioden snart slutar'. Värde 0 indikerar ingen aktiv period." + }, + "best_price_next_start_time": { + "description": "Total längd för nuvarande eller nästa dyrperiod (state i timmar, attribut i minuter)", + "long_description": "Visar hur länge den dyra perioden varar. State använder timmar (decimal) för UI; attributet `period_duration_minutes` behåller avrundade minuter för automationer. Aktiv → varaktighet för aktuell period, annars nästa.", + "usage_tips": "UI kan visa 0,75 h medan `period_duration_minutes` = 45 för automationer." + }, + "best_price_next_in_minutes": { + "description": "Tid kvar i nuvarande dyrperiod (state i timmar, attribut i minuter)", + "long_description": "Visar hur mycket tid som återstår. State använder timmar (decimal); attributet `remaining_minutes` behåller avrundade minuter för automationer. Returnerar 0 när ingen period är aktiv. Uppdateras varje minut.", + "usage_tips": "Använd `remaining_minutes` för trösklar (t.ex. > 60) medan state är lätt att läsa i timmar." + }, + "peak_price_end_time": { + "description": "Tid tills nästa dyrperiod startar (state i timmar, attribut i minuter)", + "long_description": "Visar hur länge tills nästa dyrperiod startar. State använder timmar (decimal); attributet `next_in_minutes` behåller avrundade minuter för automationer. Under en aktiv period visar detta tiden till perioden efter den aktuella. 0 under korta övergångar. Uppdateras varje minut.", + "usage_tips": "Använd `next_in_minutes` i automationer (t.ex. < 10) medan state är lätt att läsa i timmar." + }, + "peak_price_period_duration": { + "description": "Längd på nuvarande/nästa dyrperiod", + "long_description": "Total längd av nuvarande eller nästa dyrperiod. State visas i timmar (t.ex. 1,5 h) för enkel avläsning i UI, medan attributet `period_duration_minutes` ger samma värde i minuter (t.ex. 90) för automationer. Detta värde representerar den **fullständigt planerade längden** av perioden och är konstant under hela perioden, även när återstående tid (remaining_minutes) minskar.", + "usage_tips": "Kombinera med remaining_minutes för att beräkna när långvariga enheter ska stoppas: Perioden startade för `period_duration_minutes - remaining_minutes` minuter sedan. Detta attribut stöder energibesparingsstrategier genom att hjälpa till med att planera högförbruksaktiviteter utanför dyra perioder." + }, + "peak_price_remaining_minutes": { + "description": "Tid kvar i nuvarande dyrperiod", + "long_description": "Visar hur mycket tid som återstår i nuvarande dyrperiod. State visas i timmar (t.ex. 0,75 h) för enkel avläsning i instrumentpaneler, medan attributet `remaining_minutes` ger samma tid i minuter (t.ex. 45) för automationsvillkor. **Nedräkningstimer**: Detta värde minskar varje minut under en aktiv period. Returnerar 0 när ingen dyrperiod är aktiv. Uppdateras varje minut.", + "usage_tips": "För automationer: Använd attribut `remaining_minutes` som 'Om remaining_minutes > 60, avbryt uppskjuten laddningssession' eller 'Om remaining_minutes < 15, återuppta normal drift snart'. UI visar användarvänliga timmar (t.ex. 1,0 h). Värde 0 indikerar ingen aktiv dyrperiod." + }, + "peak_price_progress": { + "description": "Framsteg genom nuvarande dyrperiod (0% när inaktiv)", + "long_description": "Visar framsteg genom nuvarande dyrperiod som 0-100%. Returnerar 0% när ingen period är aktiv. Uppdateras varje minut.", + "usage_tips": "Visuell framstegsindikator i instrumentpaneler. Automation: 'Om progress > 0 OCH progress > 90, förbered normal värmeplanering'. Värde 0 indikerar ingen aktiv period." + }, + "peak_price_next_start_time": { + "description": "När nästa dyrperiod startar", + "long_description": "Visar när nästa kommande dyrperiod startar. Under en aktiv period visar detta starten av NÄSTA period efter den nuvarande. Returnerar 'Okänt' endast när inga framtida perioder är konfigurerade.", + "usage_tips": "Alltid användbart för planering: 'Nästa dyrperiod startar om 2 timmar'. Automation: 'När nästa starttid är om 30 minuter, minska värmetemperatur förebyggande'." + }, + "peak_price_next_in_minutes": { + "description": "Tid till nästa dyrperiod", + "long_description": "Visar hur länge till nästa dyrperiod. State visas i timmar (t.ex. 0,5 h) för instrumentpaneler, medan attributet `next_in_minutes` ger minuter (t.ex. 30) för automationsvillkor. Under en aktiv period visar detta tiden till perioden EFTER den nuvarande. Returnerar 0 under korta övergångsmoment. Uppdateras varje minut.", + "usage_tips": "För automationer: Använd attribut `next_in_minutes` som 'Om next_in_minutes > 0 OCH next_in_minutes < 10, slutför nuvarande laddcykel nu innan priserna ökar'. Värde > 0 indikerar alltid att en framtida dyrperiod är planerad." + }, + "home_type": { + "description": "Bostadstyp (lägenhet, hus osv.)", + "long_description": "Visar bostadstypen som konfigurerats i ditt Tibber-konto. Denna metadata kan vara användbar för att kategorisera energiförbrukningsmönster.", + "usage_tips": "Använd detta för att organisera ditt smarthussystem eller för analysändamål." + }, + "home_size": { + "description": "Boyta i kvadratmeter", + "long_description": "Visar storleken på din bostad i kvadratmeter som konfigurerats i ditt Tibber-konto. Kan användas för att beräkna energiförbrukning per kvadratmeter.", + "usage_tips": "Använd detta i energieffektivitetsberäkningar: 'Min bostad använder X kWh per kvadratmeter per år'." + }, + "main_fuse_size": { + "description": "Huvudsäkringsstorlek i ampere", + "long_description": "Visar kapaciteten på din huvudsäkring i ampere. Detta bestämmer den maximala elektriska belastningen din bostad kan hantera samtidigt.", + "usage_tips": "Använd detta för att förhindra överbelastning: 'Om total strömförbrukning närmar sig säkringsstorleken, skjut upp start av ytterligare apparater'." + }, + "number_of_residents": { + "description": "Antal personer som bor i bostaden", + "long_description": "Visar antalet boende som konfigurerats i ditt Tibber-konto. Användbart för beräkningar av energiförbrukning per person.", + "usage_tips": "Använd detta för hushållets energianalyser: 'Energiförbrukning per person per dag'." + }, + "primary_heating_source": { + "description": "Primär värmesystemtyp", + "long_description": "Visar typen av värmesystem som används i din bostad som konfigurerats i ditt Tibber-konto. Detta kan vara en värmepump, elektrisk uppvärmning, gas, olja eller andra värmekällor.", + "usage_tips": "Använd detta för att kategorisera värmerelaterade automationer eller för energiförbrukningsanalys efter värmetyp." + }, + "grid_company": { + "description": "Namn på din elnätsoperatör", + "long_description": "Visar namnet på företaget som driver elnätet i ditt område. Detta är distributionssystemoperatören (DSO) som ansvarar för att leverera elektricitet till ditt hem.", + "usage_tips": "Användbart för administrativa ändamål och felsökning av nätrelaterade problem." + }, + "grid_area_code": { + "description": "Nätområdets identifieringskod", + "long_description": "Visar koden som identifierar ditt elnätsområde. Denna kod används av nätoperatören för routing- och faktureringsändamål.", + "usage_tips": "Använd detta som administrativ referens eller vid kontakt med din nätoperatör." + }, + "price_area_code": { + "description": "Elprisområdeskod", + "long_description": "Visar koden för ditt elprisområde (t.ex. NO1, NO2, SE3, DK1). Olika områden har olika grossistelpriser baserat på regionalt utbud och efterfrågan.", + "usage_tips": "Använd detta för att förstå vilket prisområde du befinner dig i. Användbart vid jämförelse av priser med andra eller analys av regionala prismönster." + }, + "consumption_ean": { + "description": "EAN-kod för elförbrukningsmätning", + "long_description": "Visar European Article Number (EAN)-koden som unikt identifierar din elförbrukningsmätare. Denna 18-siffriga kod används för fakturerings- och administrativa ändamål.", + "usage_tips": "Använd detta vid kommunikation med din elleverantör eller för administrativ dokumentation." + }, + "production_ean": { + "description": "EAN-kod för elproduktionsmätning", + "long_description": "Visar European Article Number (EAN)-koden för din elproduktionsmätare (om du har solpaneler eller annan produktion). Denna kod spårar elektricitet du matar tillbaka till nätet.", + "usage_tips": "Relevant om du har solpaneler eller annan elproduktion. Använd för administrativa ändamål och vid krav på inmatningsersättning." + }, + "energy_tax_type": { + "description": "Typ av energiskatt som tillämpas", + "long_description": "Visar energiskattekategorin som tillämpas på din elförbrukning. Skattesatser varierar per land och ibland per konsumenttyp (privat, kommersiell osv.).", + "usage_tips": "Använd detta för att förstå uppdelningen av din elräkning och för totala kostnadsberäkningar." + }, + "vat_type": { + "description": "Momskategori (mervärdesskatt)", + "long_description": "Visar momskategorin som tillämpas på din elförbrukning. Momssatser varierar per land och kan skilja sig för elektricitet jämfört med andra varor och tjänster.", + "usage_tips": "Använd detta för att förstå din elräkning och beräkna totala kostnader inklusive skatter." + }, + "estimated_annual_consumption": { + "description": "Uppskattat årligt elförbrukning i kWh", + "long_description": "Visar din uppskattade årliga elförbrukning i kilowattimmar som beräknats eller konfigurerats i ditt Tibber-konto. Denna uppskattning används för att jämföra faktisk förbrukning med förväntade värden.", + "usage_tips": "Använd detta för att spåra om din faktiska förbrukning är över eller under förväntningarna. Jämför månatlig förbrukning med 1/12 av detta värde för att identifiera ovanliga mönster." + }, + "subscription_status": { + "description": "Status för ditt Tibber-abonnemang", + "long_description": "Visar om ditt Tibber-abonnemang för närvarande är aktivt, har avslutats eller väntar på aktivering. En status 'Aktiv' betyder att du aktivt tar emot elektricitet genom Tibber.", + "usage_tips": "Använd detta för att övervaka din abonnemangsstatus. Ställ in varningar om statusen ändras från 'Aktiv' för att säkerställa oavbruten service." + }, + "day_pattern_yesterday": { + "description": "Detekterat prismönster för gårdagens elpriser", + "long_description": "Klassificerar igår i ett prismönster: Dal (billigt på mitten), Topp (dyrt på mitten), Dubbeldal (W-form, två billiga perioder), Dubbeltopp (M-form, två dyra toppar), Flat (liten variation), Stigande, Fallande eller Blandad. Konfidensen och CV-attributen visar hur tillförlitligt mönstret detekterades.", + "usage_tips": "Använd gårdagens mönster för att förfina automationer: ett Dalmönster upprepas ofta nästa dag och tyder på att du bör förplanera billiga middagstimmar." + }, + "day_pattern_today": { + "description": "Detekterat prismönster för dagens elpriser", + "long_description": "Klassificerar idag i ett prismönster: Dal (billigt på middagen), Topp (dyrt på middagen), Dubbeldal (W-form), Dubbeltopp (M-form), Flat, Stigande, Fallande eller Blandad. Attributen inkluderar konfidenspoäng (0–1), variationskoefficient, knäpunkttider och dagsegment.", + "usage_tips": "Använd dagens mönster för att flytta förbrukning. Daldag: kör diskmaskinen, tvättmaskinen eller ladda elbilen på middagen. Toppdag: kör apparater tidigt på morgonen eller sent på kvällen. Använd valley_start och valley_end för precisa automationer." + }, + "day_pattern_tomorrow": { + "description": "Detekterat prismönster för morgondagens elpriser", + "long_description": "Klassificerar imorgon (när data finns tillgänglig, vanligtvis efter 13:00) i ett prismönster med samma algoritm som idag. Attributen valley_start/valley_end eller peak_start/peak_end ger knäpunkttider för det primära extremvärdet.", + "usage_tips": "Ställ in kvällsautomationer som läser morgondagens mönster och förkonfigurerar värmepump, billaddare eller varmvattenberedare. Kombinera med tomorrow_data_available-binärsensorn." + }, + "chart_data_export": { + "description": "Dataexport för dashboard-integrationer", + "long_description": "Denna sensor anropar get_chartdata-tjänsten med din konfigurerade YAML-konfiguration och exponerar resultatet som entitetsattribut. Statusen visar 'ready' när data är tillgänglig, 'error' vid fel, eller 'pending' före första anropet. Perfekt för dashboard-integrationer som ApexCharts som behöver läsa prisdata från entitetsattribut.", + "usage_tips": "Konfigurera YAML-parametrarna i integrationsalternativen för att matcha ditt get_chartdata-tjänstanrop. Sensorn uppdateras automatiskt när prisdata uppdateras (vanligtvis efter midnatt och när morgondagens data anländer). Få tillgång till tjänstesvarsdata direkt från entitetens attribut - strukturen matchar exakt vad get_chartdata returnerar." + }, + "chart_metadata": { + "description": "Lättviktig metadata för diagramkonfiguration", + "long_description": "Tillhandahåller väsentliga diagramkonfigurationsvärden som sensorattribut. Användbart för vilket diagramkort som helst som behöver Y-axelgränser. Sensorn anropar get_chartdata med endast-metadata-läge (ingen databehandling) och extraherar: yaxis_min, yaxis_max (föreslagen Y-axelomfång för optimal skalning). Statusen återspeglar tjänstanropsresultatet: 'ready' vid framgång, 'error' vid fel, 'pending' under initialisering.", + "usage_tips": "Konfigurera via configuration.yaml under tibber_prices.chart_metadata_config (valfritt: day, subunit_currency, resolution). Sensorn uppdateras automatiskt vid pris dataändringar. Få tillgång till metadata från attribut: yaxis_min, yaxis_max. Använd med config-template-card eller vilket verktyg som helst som läser entitetsattribut - perfekt för dynamisk diagramkonfiguration utan manuella beräkningar." + }, + "current_interval_price_rank_today": { + "description": "Var det aktuella intervallpriset placerar sig i dagens rangordning — percentilrang (0 % = billigaste tillfället)", + "long_description": "Visar hur billigt eller dyrt det aktuella kvartspriset är jämfört med alla 96 kvartsslotar idag. 0 % innebär att detta är det billigaste tillfället under dagen. 50 % innebär att hälften av dagens slotar är billigare. ca. 99 % innebär det dyraste slottet. Formel: antal billigare slotar ÷ totalt antal × 100. Attribut: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Idealiskt för automatiseringar: 'Om current_interval_price_rank_today < 25, starta diskmaskinen'. Ett värde på 0 garanterar att du är på det billigaste slottet under dagen." + }, + "current_interval_price_rank_tomorrow": { + "description": "Percentilrang för aktuellt intervallpris i morgondagens rangordning (0 % = billigaste imorgon)", + "long_description": "Visar hur det aktuella intervallpriset jämförs med alla 96 kvartslotar imorgon. 0 % innebär att det aktuella priset är billigare än varje slot imorgon. Returnerar 'Okänd' tills morgondagens data är tillgänglig (vanligtvis efter kl. 13:00). Attribut: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Används för att avgöra om väntan lönar sig: 'Om current_interval_price_rank_tomorrow < 10, finns det ännu billigare slotar imorgon — skjut upp uppgiften'." + }, + "current_interval_price_rank_today_tomorrow": { + "description": "Percentilrang för aktuellt intervallpris över idag+imorgon sammantaget (0 % = billigaste i tvådagarsperioden)", + "long_description": "Visar hur billigt eller dyrt det aktuella intervallpriset är jämfört med alla slotar idag och imorgon tillsammans (upp till 192 kvartsslotar). Faller tillbaka på enbart idag när morgondagens data inte är tillgänglig. Attribut: `current_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Den bredaste signalen för 'är det ett bra tillfälle nu?'. Använd 'Om current_interval_price_rank_today_tomorrow < 20, kör energikrävande uppgift nu'." + }, + "next_interval_price_rank_today": { + "description": "Percentilrang för nästa intervalls pris i dagens rangordning (0 % = billigaste tillfället idag)", + "long_description": "Visar percentilrangen för det kommande kvartalet inom dagens 96 slotar. Ger en förhandstitt innan nästa intervall börjar. Attribut: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "För förberedelse: 'Om next_interval_price_rank_today < 15, börja förvärmningen nu så att enheten körs under nästa billiga slot'." + }, + "next_interval_price_rank_today_tomorrow": { + "description": "Percentilrang för nästa intervalls pris över idag+imorgon sammantaget (0 % = billigaste i tvådagarsperioden)", + "long_description": "Visar percentilrangen för det kommande kvartalet inom den kombinerade idag+imorgon-poolen (upp till 192 slotar). Faller tillbaka på enbart idag. Attribut: `next_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Bredaste framtidsskick: 'Om next_interval_price_rank_today_tomorrow < 10, är nästa intervall bland de billigaste i tvådagarsfönstret'." + }, + "previous_interval_price_rank_today": { + "description": "Percentilrang för föregående intervalls pris i dagens rangordning (0 % = billigaste tillfället idag)", + "long_description": "Visar percentilrangen för det nyligen avslutade kvartalet inom dagens 96 slotar. Användbart för loggning. Attribut: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "För retrospektiva automatiseringar: 'Registrera prisnivån för det förra intervallet i energirapporter'." + }, + "previous_interval_price_rank_today_tomorrow": { + "description": "Percentilrang för föregående intervalls pris över idag+imorgon sammantaget (0 % = billigaste i tvådagarsperioden)", + "long_description": "Visar percentilrangen för det nyligen avslutade kvartalet inom den kombinerade idag+imorgon-poolen (upp till 192 slotar). Faller tillbaka på enbart idag. Attribut: `previous_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "För retrospektiva jämförelser inom ett tvådagarsfönster." + }, + "current_hour_price_rank_today": { + "description": "Percentilrang för aktuellt rullande timgenom­snittspris i dagens rangordning (0 % = billigaste timmen idag)", + "long_description": "Visar var det rullande 5-intervallets genomsnitt (2 intervall före + aktuellt + 2 efter, ca. 1 timme) placerar sig i dagens prisrangordning. Jämnar ut korta pristoppar. Attribut: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "För uppgifter som tar ungefär en timme: 'Om current_hour_price_rank_today < 20, är detta en billig timme — starta tvättmaskinen'." + }, + "current_hour_price_rank_today_tomorrow": { + "description": "Rullande timgenomsnittsprisrang över idag+imorgon sammantaget (0 % = billigaste timmen i tvådagarsfönstret)", + "long_description": "Visar var det rullande 5-intervallets genomsnitt (±2 intervall, ca. 1 timme) placerar sig i den kombinerade idag+imorgon-rangordningen (upp till 192 slotar). Faller tillbaka på enbart idag. Attribut: `current_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Bredaste timsignal: 'Om current_hour_price_rank_today_tomorrow < 15, är detta en av de billigaste timmarna i tvådagarsfönstret'." + }, + "next_hour_price_rank_today": { + "description": "Percentilrang för nästa rullande timgenom­snittspris i dagens rangordning (0 % = billigaste timmen idag)", + "long_description": "Visar var det 5-intervallsgenomsnitt centrerat på nästa intervall placerar sig i dagens prisrangordning. Möjliggör planering en timme framåt. Attribut: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Planera en timme framåt: 'Om next_hour_price_rank_today < 20, är den kommande timmen billig — starta en uppgift nu'." + }, + "next_hour_price_rank_today_tomorrow": { + "description": "Nästa rullande timgenom­snittsprisrang över idag+imorgon sammantaget (0 % = billigaste timmen i tvådagarsfönstret)", + "long_description": "Visar var det 5-intervallsgenomsnitt centrerat på nästa intervall placerar sig i den kombinerade idag+imorgon-rangordningen (upp till 192 slotar). Faller tillbaka på enbart idag. Attribut: `next_hour_avg_price`, `prices_below_count`, `interval_count`, `reference_min`, `reference_max`, `reference_mean`.", + "usage_tips": "Bredaste timframtidsskick: 'Om next_hour_price_rank_today_tomorrow < 10, är den kommande timmen bland de billigaste i tvådagarsfönstret'." + } + }, + "binary_sensor": { + "tomorrow_data_available": { + "description": "Om prisdata för morgondagen är tillgänglig", + "long_description": "Indikerar om prisdata för följande dag har mottagits från Tibber", + "usage_tips": "Använd detta för att kontrollera om morgondagens priser är tillgängliga för planering" + }, + "peak_price_period": { + "description": "Om nuvarande intervall är bland de dyraste på dagen", + "long_description": "Aktiveras när nuvarande pris ligger i topp 20% av dagens priser", + "usage_tips": "Använd detta för att undvika att köra högkonsumtionsapparater under dyra intervaller" + }, + "best_price_period": { + "description": "Om nuvarande intervall är bland de billigaste på dagen", + "long_description": "Aktiveras när nuvarande pris ligger i botten 20% av dagens priser", + "usage_tips": "Använd detta för att köra högkonsumtionsapparater under de billigaste intervallerna" + }, + "connection": { + "description": "Om anslutningen till Tibber API fungerar", + "long_description": "Indikerar om integrationen framgångsrikt kan ansluta till Tibber API", + "usage_tips": "Använd detta för att övervaka anslutningsstatus till Tibber API" + }, + "has_ventilation_system": { + "description": "Om din bostad har ventilationssystem", + "long_description": "Indikerar om ett ventilationssystem är registrerat för din bostad i Tibber-kontot. Ventilationssystem kan vara betydande elförbrukare som kan dra nytta av smart schemaläggning.", + "usage_tips": "Använd detta för att aktivera ventilationsspecifika automationer eller energiövervakning. Om aktivt, överväg att schemalägga ventilation under lågprisperioder." + }, + "realtime_consumption_enabled": { + "description": "Om realtidsförbrukningsövervakning är aktiv", + "long_description": "Indikerar om realtidsövervakning av elförbrukning är aktiverad och aktiv för ditt Tibber-hem. Detta kräver kompatibel mätutrustning (t.ex. Tibber Pulse) och en aktiv prenumeration.", + "usage_tips": "Använd detta för att verifiera att realtidsförbrukningen är tillgänglig. Aktivera meddelanden om detta oväntat ändras till 'av', vilket indikerar potentiella hårdvaru- eller anslutningsproblem." + } + }, + "number": { + "best_price_flex_override": { + "description": "Maximal procent över daglig minimumpris som intervaller kan ha och fortfarande kvalificera som 'bästa pris'. Rekommenderas: 15-20 med lättnad aktiverad (standard), eller 25-35 utan lättnad. Maximum: 50 (hårt tak för tillförlitlig perioddetektering).", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Flexibilitet'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", + "usage_tips": "Aktivera denna entitet för att dynamiskt justera bästa pris-detektering via automatiseringar, t.ex. högre flexibilitet för kritiska laster eller striktare krav för flexibla apparater." + }, + "best_price_min_distance_override": { + "description": "Minsta procentuella avstånd under dagligt genomsnitt. Intervaller måste vara så långt under genomsnittet för att kvalificera som 'bästa pris'. Hjälper att skilja äkta lågprisperioder från genomsnittspriser.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Minimiavstånd'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", + "usage_tips": "Öka värdet för striktare bästa pris-kriterier. Minska om för få perioder detekteras." + }, + "best_price_min_period_length_override": { + "description": "Minsta periodlängd i 15-minuters intervaller. Perioder kortare än detta rapporteras inte. Exempel: 2 = minst 30 minuter.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Minsta periodlängd'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", + "usage_tips": "Anpassa till typisk apparatkörtid: 2 (30 min) för snabbprogram, 4-8 (1-2 timmar) för normala cykler, 8+ för långa ECO-program." + }, + "best_price_min_periods_override": { + "description": "Minsta antal bästa pris-perioder att hitta dagligen. När lättnad är aktiverad kommer systemet automatiskt att justera kriterierna för att uppnå detta antal.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Minsta antal perioder'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", + "usage_tips": "Ställ in detta på antalet tidskritiska uppgifter du har dagligen. Exempel: 2 för två tvattmaskinskörningar." + }, + "best_price_relaxation_attempts_override": { + "description": "Antal försök att gradvis lätta på kriterierna för att uppnå minsta periodantal. Varje försök ökar flexibiliteten med 3 procent. Vid 0 används endast baskriterier.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Lättnadsförsök'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", + "usage_tips": "Högre värden gör perioddetektering mer adaptiv för dagar med stabila priser. Ställ in på 0 för att tvinga strikta kriterier utan lättnad." + }, + "best_price_gap_count_override": { + "description": "Maximalt antal dyrare intervaller som kan tillåtas mellan billiga intervaller medan de fortfarande räknas som en sammanhängande period. Vid 0 måste billiga intervaller vara påföljande.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Glaptolerans'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", + "usage_tips": "Öka detta för apparater med variabel last (t.ex. värmepumpar) som kan tolerera korta dyrare intervaller. Ställ in på 0 för kontinuerligt billiga perioder." + }, + "peak_price_flex_override": { + "description": "Maximal procent under daglig maximumpris som intervaller kan ha och fortfarande kvalificera som 'topppris'. Samma rekommendationer som för bästa pris-flexibilitet.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Flexibilitet'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", + "usage_tips": "Använd detta för att justera topppris-tröskeln vid körtid för automatiseringar som undviker förbrukning under dyra timmar." + }, + "peak_price_min_distance_override": { + "description": "Minsta procentuella avstånd över dagligt genomsnitt. Intervaller måste vara så långt över genomsnittet för att kvalificera som 'topppris'.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Minimiavstånd'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", + "usage_tips": "Öka värdet för att endast fånga extrema pristoppar. Minska för att inkludera fler högpristider." + }, + "peak_price_min_period_length_override": { + "description": "Minsta periodlängd i 15-minuters intervaller för topppriser. Kortare pristoppar rapporteras inte som perioder.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Minsta periodlängd'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", + "usage_tips": "Kortare värden fångar korta pristoppar. Längre värden fokuserar på ihållande högprisperioder." + }, + "peak_price_min_periods_override": { + "description": "Minsta antal topppris-perioder att hitta dagligen.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Minsta antal perioder'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", + "usage_tips": "Ställ in detta baserat på hur många högprisperioder du vill fånga per dag för automatiseringar." + }, + "peak_price_relaxation_attempts_override": { + "description": "Antal försök att lätta på kriterierna för att uppnå minsta antal topppris-perioder.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Lättnadsförsök'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", + "usage_tips": "Öka detta om inga perioder hittas på dagar med stabila priser. Ställ in på 0 för att tvinga strikta kriterier." + }, + "peak_price_gap_count_override": { + "description": "Maximalt antal billigare intervaller som kan tillåtas mellan dyra intervaller medan de fortfarande räknas som en topppris-period.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Glaptolerans'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", + "usage_tips": "Högre värden fångar längre högprisperioder även med korta prisdipp. Ställ in på 0 för strikt sammanhängande topppriser." + } + }, + "switch": { + "best_price_enable_relaxation_override": { + "description": "När aktiverad lättas kriterierna automatiskt för att uppnå minsta periodantal. När inaktiverad rapporteras endast perioder som uppfyller strikta kriterier (möjligen noll perioder på dagar med stabila priser).", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Uppnå minimiantal'-inställningen från alternativ-dialogen för bästa pris-periodberäkningar.", + "usage_tips": "Aktivera detta för garanterade dagliga automatiseringsmöjligheter. Inaktivera om du endast vill ha riktigt billiga perioder, även om det innebär inga perioder vissa dagar." + }, + "peak_price_enable_relaxation_override": { + "description": "När aktiverad lättas kriterierna automatiskt för att uppnå minsta periodantal. När inaktiverad rapporteras endast äkta pristoppar.", + "long_description": "När denna entitet är aktiverad överskriver värdet 'Uppnå minimiantal'-inställningen från alternativ-dialogen för topppris-periodberäkningar.", + "usage_tips": "Aktivera detta för konsekventa topppris-varningar. Inaktivera för att endast fånga extrema pristoppar." + } + }, + "home_types": { + "APARTMENT": "Lägenhet", + "ROWHOUSE": "Radhus", + "HOUSE": "Hus", + "COTTAGE": "Stuga" + }, + "time_units": { + "day": "{count} dag", + "days": "{count} dagar", + "hour": "{count} timme", + "hours": "{count} timmar", + "minute": "{count} minut", + "minutes": "{count} minuter", + "ago": "{parts} sedan", + "now": "nu" + }, + "attribution": "Data tillhandahålls av Tibber" } diff --git a/custom_components/tibber_prices/sensor/attributes/__init__.py b/custom_components/tibber_prices/sensor/attributes/__init__.py index 6638a86..32bceb7 100644 --- a/custom_components/tibber_prices/sensor/attributes/__init__.py +++ b/custom_components/tibber_prices/sensor/attributes/__init__.py @@ -191,7 +191,7 @@ def build_sensor_attributes( # noqa: PLR0912 elif _is_timing_or_volatility_sensor(key): _add_timing_or_volatility_attributes(attributes, key, cached_data, native_value, time=time) - elif key in ("price_rank_today", "price_rank_tomorrow", "price_rank_today_tomorrow"): + elif "_price_rank_" in key: add_percentile_rank_attributes(attributes, cached_data, time=time) elif key in ("day_pattern_yesterday", "day_pattern_today", "day_pattern_tomorrow"): diff --git a/custom_components/tibber_prices/sensor/calculators/volatility.py b/custom_components/tibber_prices/sensor/calculators/volatility.py index c250337..732311e 100644 --- a/custom_components/tibber_prices/sensor/calculators/volatility.py +++ b/custom_components/tibber_prices/sensor/calculators/volatility.py @@ -14,7 +14,8 @@ from custom_components.tibber_prices.const import ( DEFAULT_VOLATILITY_THRESHOLD_VERY_HIGH, get_display_unit_factor, ) -from custom_components.tibber_prices.entity_utils import add_icon_color_attribute +from custom_components.tibber_prices.coordinator.helpers import get_intervals_for_day_offsets +from custom_components.tibber_prices.entity_utils import add_icon_color_attribute, find_rolling_hour_center_index from custom_components.tibber_prices.sensor.attributes import ( add_volatility_type_attributes, get_prices_for_volatility, @@ -159,18 +160,25 @@ class TibberPricesVolatilityCalculator(TibberPricesBaseCalculator): """ return self._last_volatility_attributes - def get_percentile_rank_value(self, *, percentile_type: str) -> float | None: + def get_percentile_rank_value( + self, + *, + percentile_type: str, + subject: str = "current_interval", + ) -> float | None: """ - Calculate the percentile rank of the current price within a reference set. + Calculate the percentile rank of a subject price within a reference set. The result is 0-100: percentage of reference prices strictly cheaper than - the current interval price. 0% = cheapest, ~99% = most expensive. + the subject price. 0% = cheapest, ~99% = most expensive. Also stores detailed attributes in self._last_percentile_rank_attributes for use in extra_state_attributes. Args: - percentile_type: One of "today", "tomorrow", "today_tomorrow". + percentile_type: Reference window - one of "today", "tomorrow", "today_tomorrow". + subject: Price to rank - one of "current_interval" (default), "next_interval", + "previous_interval", "current_hour", "next_hour". Returns: Percentile rank (0.0-100.0) or None if unavailable. @@ -179,14 +187,10 @@ class TibberPricesVolatilityCalculator(TibberPricesBaseCalculator): if not self.has_data(): return None - # Get current interval price - current_interval = self.coordinator.get_current_interval() - if current_interval is None: + # Get the price of the subject to rank + subject_price = self._get_subject_price(subject) + if subject_price is None: return None - current_price_raw = current_interval.get("total") - if current_price_raw is None: - return None - current_price = float(current_price_raw) # Get reference prices for this type (reuse volatility helper) reference_prices = get_prices_for_volatility( @@ -198,16 +202,17 @@ class TibberPricesVolatilityCalculator(TibberPricesBaseCalculator): return None # Calculate percentile rank - rank = calculate_percentile_rank(current_price, reference_prices) + rank = calculate_percentile_rank(subject_price, reference_prices) if rank is None: return None # Convert to display units for attribute storage factor = get_display_unit_factor(self.config_entry) + price_attr_key = self._get_subject_price_attr_key(subject) self._last_percentile_rank_attributes = { - "current_price": round(current_price * factor, 2), - "prices_below_count": bisect.bisect_left(sorted(reference_prices), current_price), + price_attr_key: round(subject_price * factor, 2), + "prices_below_count": bisect.bisect_left(sorted(reference_prices), subject_price), "interval_count": len(reference_prices), "reference_min": round(min(reference_prices) * factor, 2), "reference_max": round(max(reference_prices) * factor, 2), @@ -216,6 +221,78 @@ class TibberPricesVolatilityCalculator(TibberPricesBaseCalculator): return rank + def _get_subject_price(self, subject: str) -> float | None: + """ + Get the price of the subject to rank. + + Args: + subject: One of "current_interval", "next_interval", "previous_interval", + "current_hour", "next_hour". + + Returns: + Price as float or None if unavailable. + + """ + if subject == "current_interval": + interval = self.find_interval_at_offset(0) + elif subject == "next_interval": + interval = self.find_interval_at_offset(1) + elif subject == "previous_interval": + interval = self.find_interval_at_offset(-1) + elif subject in ("current_hour", "next_hour"): + hour_offset = 0 if subject == "current_hour" else 1 + return self._get_rolling_hour_avg_price(hour_offset) + else: + return None + + if interval is None: + return None + raw = interval.get("total") + return float(raw) if raw is not None else None + + def _get_subject_price_attr_key(self, subject: str) -> str: + """Return the attribute key name for the subject's price.""" + return { + "current_interval": "current_price", + "next_interval": "next_price", + "previous_interval": "previous_price", + "current_hour": "current_hour_avg_price", + "next_hour": "next_hour_avg_price", + }.get(subject, "ranked_price") + + def _get_rolling_hour_avg_price(self, hour_offset: int) -> float | None: + """ + Get the rolling 1h average price for the given hour offset. + + Uses the same 5-interval window as current_hour_average_price. + + Args: + hour_offset: 0 for current hour, 1 for next hour. + + Returns: + Average price as float or None if unavailable. + + """ + all_prices = get_intervals_for_day_offsets(self.coordinator_data, [-1, 0, 1]) + if not all_prices: + return None + + time = self.coordinator.time + now = time.now() + center_idx = find_rolling_hour_center_index(all_prices, now, hour_offset, time=time) + if center_idx is None: + return None + + window: list[float] = [] + for offset in range(-2, 3): + idx = center_idx + offset + if 0 <= idx < len(all_prices): + raw = all_prices[idx].get("total") + if raw is not None: + window.append(float(raw)) + + return calculate_mean(window) if window else None + def get_percentile_rank_attributes(self) -> dict[str, Any]: """ Get stored percentile rank attributes from last calculation. diff --git a/custom_components/tibber_prices/sensor/core.py b/custom_components/tibber_prices/sensor/core.py index 71fdb97..cc06834 100644 --- a/custom_components/tibber_prices/sensor/core.py +++ b/custom_components/tibber_prices/sensor/core.py @@ -100,6 +100,22 @@ MIN_HOURS_FOR_LATER_HALF = 3 # Minimum hours needed to calculate later half ave _SENTINEL = object() +def _extract_percentile_rank_type(key: str) -> str | None: + """ + Extract the reference-window type from a price rank sensor key. + + Returns "today_tomorrow", "tomorrow", or "today" based on the key suffix. + Returns None if the key is not a price rank sensor key. + """ + if "_rank_today_tomorrow" in key: + return "today_tomorrow" + if "_rank_tomorrow" in key: + return "tomorrow" + if "_rank_today" in key: + return "today" + return None + + class TibberPricesSensor(TibberPricesEntity, RestoreSensor): """tibber_prices Sensor class with state restoration.""" @@ -1165,7 +1181,7 @@ class TibberPricesSensor(TibberPricesEntity, RestoreSensor): "trend_change_attributes": self._trend_calculator.get_trend_change_attributes(), "volatility_attributes": self._volatility_calculator.get_volatility_attributes(), "percentile_rank_attributes": self._volatility_calculator.get_percentile_rank_attributes(), - "percentile_rank_type": key.removeprefix("price_rank_") if key.startswith("price_rank_") else None, + "percentile_rank_type": _extract_percentile_rank_type(key), "coordinator_data": self.coordinator.data, "last_extreme_interval": self._daily_stat_calculator.get_last_extreme_interval(), "last_energy_tax_averages": self._daily_stat_calculator.get_last_energy_tax_averages(), diff --git a/custom_components/tibber_prices/sensor/definitions.py b/custom_components/tibber_prices/sensor/definitions.py index 26ff87a..c01e6cc 100644 --- a/custom_components/tibber_prices/sensor/definitions.py +++ b/custom_components/tibber_prices/sensor/definitions.py @@ -753,21 +753,24 @@ VOLATILITY_SENSORS = ( # - today_tomorrow: 192 combined intervals when tomorrow is available # # Use case: "Is now the right time to run a large appliance?" -# - price_rank_today < 25 → bottom quartile, great time to use energy -# - price_rank_today > 75 → top quartile, consider delaying consumption +# - current_interval_price_rank_today < 25 → bottom quartile, great time to use energy +# - current_interval_price_rank_today > 75 → top quartile, consider delaying consumption PERCENTILE_RANK_SENSORS = ( + # ---------------------------------------------------------------- + # Current interval rank sensors + # ---------------------------------------------------------------- SensorEntityDescription( - key="price_rank_today", - translation_key="price_rank_today", + key="current_interval_price_rank_today", + translation_key="current_interval_price_rank_today", icon="mdi:percent", native_unit_of_measurement=PERCENTAGE, state_class=None, # Position metric: no statistics suggested_display_precision=0, ), SensorEntityDescription( - key="price_rank_tomorrow", - translation_key="price_rank_tomorrow", + key="current_interval_price_rank_tomorrow", + translation_key="current_interval_price_rank_tomorrow", icon="mdi:percent", native_unit_of_measurement=PERCENTAGE, state_class=None, # Position metric: no statistics @@ -775,14 +778,95 @@ PERCENTILE_RANK_SENSORS = ( entity_registry_enabled_default=False, # Available once tomorrow's data arrives ), SensorEntityDescription( - key="price_rank_today_tomorrow", - translation_key="price_rank_today_tomorrow", + key="current_interval_price_rank_today_tomorrow", + translation_key="current_interval_price_rank_today_tomorrow", icon="mdi:percent", native_unit_of_measurement=PERCENTAGE, state_class=None, # Position metric: no statistics suggested_display_precision=0, entity_registry_enabled_default=False, # Advanced overview use case ), + # ---------------------------------------------------------------- + # Next interval rank sensors + # ---------------------------------------------------------------- + SensorEntityDescription( + key="next_interval_price_rank_today", + translation_key="next_interval_price_rank_today", + icon="mdi:percent", + native_unit_of_measurement=PERCENTAGE, + state_class=None, + suggested_display_precision=0, + entity_registry_enabled_default=False, + ), + SensorEntityDescription( + key="next_interval_price_rank_today_tomorrow", + translation_key="next_interval_price_rank_today_tomorrow", + icon="mdi:percent", + native_unit_of_measurement=PERCENTAGE, + state_class=None, + suggested_display_precision=0, + entity_registry_enabled_default=False, + ), + # ---------------------------------------------------------------- + # Previous interval rank sensors + # ---------------------------------------------------------------- + SensorEntityDescription( + key="previous_interval_price_rank_today", + translation_key="previous_interval_price_rank_today", + icon="mdi:percent", + native_unit_of_measurement=PERCENTAGE, + state_class=None, + suggested_display_precision=0, + entity_registry_enabled_default=False, + ), + SensorEntityDescription( + key="previous_interval_price_rank_today_tomorrow", + translation_key="previous_interval_price_rank_today_tomorrow", + icon="mdi:percent", + native_unit_of_measurement=PERCENTAGE, + state_class=None, + suggested_display_precision=0, + entity_registry_enabled_default=False, + ), + # ---------------------------------------------------------------- + # Rolling-hour rank sensors (rank of 1h rolling average) + # ---------------------------------------------------------------- + SensorEntityDescription( + key="current_hour_price_rank_today", + translation_key="current_hour_price_rank_today", + icon="mdi:percent", + native_unit_of_measurement=PERCENTAGE, + state_class=None, + suggested_display_precision=0, + entity_registry_enabled_default=False, + ), + SensorEntityDescription( + key="current_hour_price_rank_today_tomorrow", + translation_key="current_hour_price_rank_today_tomorrow", + icon="mdi:percent", + native_unit_of_measurement=PERCENTAGE, + state_class=None, + suggested_display_precision=0, + entity_registry_enabled_default=False, + ), + SensorEntityDescription( + key="next_hour_price_rank_today", + translation_key="next_hour_price_rank_today", + icon="mdi:percent", + native_unit_of_measurement=PERCENTAGE, + state_class=None, + suggested_display_precision=0, + entity_registry_enabled_default=False, + ), + SensorEntityDescription( + key="next_hour_price_rank_today_tomorrow", + translation_key="next_hour_price_rank_today_tomorrow", + icon="mdi:percent", + native_unit_of_measurement=PERCENTAGE, + state_class=None, + suggested_display_precision=0, + entity_registry_enabled_default=False, + ), ) # ---------------------------------------------------------------------------- diff --git a/custom_components/tibber_prices/sensor/value_getters.py b/custom_components/tibber_prices/sensor/value_getters.py index 68a2b5b..946fcac 100644 --- a/custom_components/tibber_prices/sensor/value_getters.py +++ b/custom_components/tibber_prices/sensor/value_getters.py @@ -250,10 +250,42 @@ def get_value_getter_mapping( # noqa: PLR0913 - needs all calculators as parame volatility_type="today_tomorrow" ), # Price rank sensors (via VolatilityCalculator - reuses same price extraction) - "price_rank_today": lambda: volatility_calculator.get_percentile_rank_value(percentile_type="today"), - "price_rank_tomorrow": lambda: volatility_calculator.get_percentile_rank_value(percentile_type="tomorrow"), - "price_rank_today_tomorrow": lambda: volatility_calculator.get_percentile_rank_value( - percentile_type="today_tomorrow" + # Current interval rank + "current_interval_price_rank_today": lambda: volatility_calculator.get_percentile_rank_value( + subject="current_interval", percentile_type="today" + ), + "current_interval_price_rank_tomorrow": lambda: volatility_calculator.get_percentile_rank_value( + subject="current_interval", percentile_type="tomorrow" + ), + "current_interval_price_rank_today_tomorrow": lambda: volatility_calculator.get_percentile_rank_value( + subject="current_interval", percentile_type="today_tomorrow" + ), + # Next interval rank + "next_interval_price_rank_today": lambda: volatility_calculator.get_percentile_rank_value( + subject="next_interval", percentile_type="today" + ), + "next_interval_price_rank_today_tomorrow": lambda: volatility_calculator.get_percentile_rank_value( + subject="next_interval", percentile_type="today_tomorrow" + ), + # Previous interval rank + "previous_interval_price_rank_today": lambda: volatility_calculator.get_percentile_rank_value( + subject="previous_interval", percentile_type="today" + ), + "previous_interval_price_rank_today_tomorrow": lambda: volatility_calculator.get_percentile_rank_value( + subject="previous_interval", percentile_type="today_tomorrow" + ), + # Rolling-hour rank (1h average) + "current_hour_price_rank_today": lambda: volatility_calculator.get_percentile_rank_value( + subject="current_hour", percentile_type="today" + ), + "current_hour_price_rank_today_tomorrow": lambda: volatility_calculator.get_percentile_rank_value( + subject="current_hour", percentile_type="today_tomorrow" + ), + "next_hour_price_rank_today": lambda: volatility_calculator.get_percentile_rank_value( + subject="next_hour", percentile_type="today" + ), + "next_hour_price_rank_today_tomorrow": lambda: volatility_calculator.get_percentile_rank_value( + subject="next_hour", percentile_type="today_tomorrow" ), # ================================================================ # BEST/PEAK PRICE TIMING SENSORS - via TimingCalculator diff --git a/custom_components/tibber_prices/translations/de.json b/custom_components/tibber_prices/translations/de.json index a77caf3..2bcd40c 100644 --- a/custom_components/tibber_prices/translations/de.json +++ b/custom_components/tibber_prices/translations/de.json @@ -866,15 +866,6 @@ "very_high": "Sehr hoch" } }, - "price_rank_today": { - "name": "Preisrang heute" - }, - "price_rank_tomorrow": { - "name": "Preisrang morgen" - }, - "price_rank_today_tomorrow": { - "name": "Preisrang heute+morgen" - }, "best_price_end_time": { "name": "Bestpreis endet" }, @@ -1036,6 +1027,39 @@ "ready": "Bereit", "error": "Fehler" } + }, + "current_interval_price_rank_today": { + "name": "Aktueller Preisrang (heute)" + }, + "current_interval_price_rank_tomorrow": { + "name": "Aktueller Preisrang (morgen)" + }, + "current_interval_price_rank_today_tomorrow": { + "name": "Aktueller Preisrang (heute+morgen)" + }, + "next_interval_price_rank_today": { + "name": "Nächster Preisrang (heute)" + }, + "next_interval_price_rank_today_tomorrow": { + "name": "Nächster Preisrang (heute+morgen)" + }, + "previous_interval_price_rank_today": { + "name": "Letzter Preisrang (heute)" + }, + "previous_interval_price_rank_today_tomorrow": { + "name": "Letzter Preisrang (heute+morgen)" + }, + "current_hour_price_rank_today": { + "name": "⌀ Stündlicher Preisrang Aktuell (heute)" + }, + "current_hour_price_rank_today_tomorrow": { + "name": "⌀ Stündlicher Preisrang Aktuell (heute+morgen)" + }, + "next_hour_price_rank_today": { + "name": "⌀ Stündlicher Preisrang Nächste (heute)" + }, + "next_hour_price_rank_today_tomorrow": { + "name": "⌀ Stündlicher Preisrang Nächste (heute+morgen)" } }, "binary_sensor": { diff --git a/custom_components/tibber_prices/translations/en.json b/custom_components/tibber_prices/translations/en.json index 83f041e..4aba4b1 100644 --- a/custom_components/tibber_prices/translations/en.json +++ b/custom_components/tibber_prices/translations/en.json @@ -866,15 +866,6 @@ "very_high": "Very High" } }, - "price_rank_today": { - "name": "Today's Price Rank" - }, - "price_rank_tomorrow": { - "name": "Tomorrow's Price Rank" - }, - "price_rank_today_tomorrow": { - "name": "Today+Tomorrow Price Rank" - }, "best_price_end_time": { "name": "Best Price End" }, @@ -1036,6 +1027,39 @@ "ready": "Ready", "error": "Error" } + }, + "current_interval_price_rank_today": { + "name": "Current Price Rank (Today)" + }, + "current_interval_price_rank_tomorrow": { + "name": "Current Price Rank (Tomorrow)" + }, + "current_interval_price_rank_today_tomorrow": { + "name": "Current Price Rank (Today+Tomorrow)" + }, + "next_interval_price_rank_today": { + "name": "Next Price Rank (Today)" + }, + "next_interval_price_rank_today_tomorrow": { + "name": "Next Price Rank (Today+Tomorrow)" + }, + "previous_interval_price_rank_today": { + "name": "Last Price Rank (Today)" + }, + "previous_interval_price_rank_today_tomorrow": { + "name": "Last Price Rank (Today+Tomorrow)" + }, + "current_hour_price_rank_today": { + "name": "⌀ Hourly Price Current Rank (Today)" + }, + "current_hour_price_rank_today_tomorrow": { + "name": "⌀ Hourly Price Current Rank (Today+Tomorrow)" + }, + "next_hour_price_rank_today": { + "name": "⌀ Hourly Price Next Rank (Today)" + }, + "next_hour_price_rank_today_tomorrow": { + "name": "⌀ Hourly Price Next Rank (Today+Tomorrow)" } }, "binary_sensor": { diff --git a/custom_components/tibber_prices/translations/nb.json b/custom_components/tibber_prices/translations/nb.json index 4123751..aa843a8 100644 --- a/custom_components/tibber_prices/translations/nb.json +++ b/custom_components/tibber_prices/translations/nb.json @@ -866,15 +866,6 @@ "very_high": "Svært Høy" } }, - "price_rank_today": { - "name": "Prisrang i dag" - }, - "price_rank_tomorrow": { - "name": "Prisrang i morgen" - }, - "price_rank_today_tomorrow": { - "name": "Prisrang i dag+i morgen" - }, "best_price_end_time": { "name": "Beste pris slutter" }, @@ -1036,6 +1027,39 @@ "ready": "Klar", "error": "Feil" } + }, + "current_interval_price_rank_today": { + "name": "Aktuell prisrang (i dag)" + }, + "current_interval_price_rank_tomorrow": { + "name": "Aktuell prisrang (i morgen)" + }, + "current_interval_price_rank_today_tomorrow": { + "name": "Aktuell prisrang (i dag+i morgen)" + }, + "next_interval_price_rank_today": { + "name": "Neste prisrang (i dag)" + }, + "next_interval_price_rank_today_tomorrow": { + "name": "Neste prisrang (i dag+i morgen)" + }, + "previous_interval_price_rank_today": { + "name": "Forrige prisrang (i dag)" + }, + "previous_interval_price_rank_today_tomorrow": { + "name": "Forrige prisrang (i dag+i morgen)" + }, + "current_hour_price_rank_today": { + "name": "⌀ Timesprisrang nå (i dag)" + }, + "current_hour_price_rank_today_tomorrow": { + "name": "⌀ Timesprisrang nå (i dag+i morgen)" + }, + "next_hour_price_rank_today": { + "name": "⌀ Timesprisrang neste (i dag)" + }, + "next_hour_price_rank_today_tomorrow": { + "name": "⌀ Timesprisrang neste (i dag+i morgen)" } }, "binary_sensor": { diff --git a/custom_components/tibber_prices/translations/nl.json b/custom_components/tibber_prices/translations/nl.json index 402a64d..af754b6 100644 --- a/custom_components/tibber_prices/translations/nl.json +++ b/custom_components/tibber_prices/translations/nl.json @@ -866,15 +866,6 @@ "very_high": "Zeer Hoog" } }, - "price_rank_today": { - "name": "Prijsrang vandaag" - }, - "price_rank_tomorrow": { - "name": "Prijsrang morgen" - }, - "price_rank_today_tomorrow": { - "name": "Prijsrang vandaag+morgen" - }, "best_price_end_time": { "name": "Beste Prijs Einde" }, @@ -1036,6 +1027,39 @@ "ready": "Gereed", "error": "Fout" } + }, + "current_interval_price_rank_today": { + "name": "Huidige prijsrang (vandaag)" + }, + "current_interval_price_rank_tomorrow": { + "name": "Huidige prijsrang (morgen)" + }, + "current_interval_price_rank_today_tomorrow": { + "name": "Huidige prijsrang (vandaag+morgen)" + }, + "next_interval_price_rank_today": { + "name": "Volgende prijsrang (vandaag)" + }, + "next_interval_price_rank_today_tomorrow": { + "name": "Volgende prijsrang (vandaag+morgen)" + }, + "previous_interval_price_rank_today": { + "name": "Vorige prijsrang (vandaag)" + }, + "previous_interval_price_rank_today_tomorrow": { + "name": "Vorige prijsrang (vandaag+morgen)" + }, + "current_hour_price_rank_today": { + "name": "⌀ Uurlijkse prijsrang huidig (vandaag)" + }, + "current_hour_price_rank_today_tomorrow": { + "name": "⌀ Uurlijkse prijsrang huidig (vandaag+morgen)" + }, + "next_hour_price_rank_today": { + "name": "⌀ Uurlijkse prijsrang volgende (vandaag)" + }, + "next_hour_price_rank_today_tomorrow": { + "name": "⌀ Uurlijkse prijsrang volgende (vandaag+morgen)" } }, "binary_sensor": { diff --git a/custom_components/tibber_prices/translations/sv.json b/custom_components/tibber_prices/translations/sv.json index f1cedae..5dfc752 100644 --- a/custom_components/tibber_prices/translations/sv.json +++ b/custom_components/tibber_prices/translations/sv.json @@ -866,15 +866,6 @@ "very_high": "Mycket hög" } }, - "price_rank_today": { - "name": "Prisrang idag" - }, - "price_rank_tomorrow": { - "name": "Prisrang imorgon" - }, - "price_rank_today_tomorrow": { - "name": "Prisrang idag+imorgon" - }, "best_price_end_time": { "name": "Bästa pris slutar" }, @@ -1036,6 +1027,39 @@ "ready": "Redo", "error": "Fel" } + }, + "current_interval_price_rank_today": { + "name": "Aktuellt prisrang (idag)" + }, + "current_interval_price_rank_tomorrow": { + "name": "Aktuellt prisrang (imorgon)" + }, + "current_interval_price_rank_today_tomorrow": { + "name": "Aktuellt prisrang (idag+imorgon)" + }, + "next_interval_price_rank_today": { + "name": "Nästa prisrang (idag)" + }, + "next_interval_price_rank_today_tomorrow": { + "name": "Nästa prisrang (idag+imorgon)" + }, + "previous_interval_price_rank_today": { + "name": "Förra prisrang (idag)" + }, + "previous_interval_price_rank_today_tomorrow": { + "name": "Förra prisrang (idag+imorgon)" + }, + "current_hour_price_rank_today": { + "name": "⌀ Timprisrang aktuell (idag)" + }, + "current_hour_price_rank_today_tomorrow": { + "name": "⌀ Timprisrang aktuell (idag+imorgon)" + }, + "next_hour_price_rank_today": { + "name": "⌀ Timprisrang nästa (idag)" + }, + "next_hour_price_rank_today_tomorrow": { + "name": "⌀ Timprisrang nästa (idag+imorgon)" } }, "binary_sensor": { diff --git a/docs/user/docs/sensor-reference.md b/docs/user/docs/sensor-reference.md index c85fb84..3386d79 100644 --- a/docs/user/docs/sensor-reference.md +++ b/docs/user/docs/sensor-reference.md @@ -214,12 +214,20 @@ explanations of each sensor's purpose, attributes, and automation examples. | Entity ID suffix | 🇬🇧 English | 🇩🇪 Deutsch | 🇳🇴 Norsk | 🇳🇱 Nederlands | 🇸🇪 Svenska | Default | |---|---|---|---|---|---|---| +| `current_hour_price_rank_today` | ⌀ Hourly Price Current Rank (Today) | ⌀ Stündlicher Preisrang Aktuell (heute) | ⌀ Timesprisrang nå (i dag) | ⌀ Uurlijkse prijsrang huidig (vandaag) | ⌀ Timprisrang aktuell (idag) | ❌ | +| `current_hour_price_rank_today_tomorrow` | ⌀ Hourly Price Current Rank (Today+Tomorrow) | ⌀ Stündlicher Preisrang Aktuell (heute+morgen) | ⌀ Timesprisrang nå (i dag+i morgen) | ⌀ Uurlijkse prijsrang huidig (vandaag+morgen) | ⌀ Timprisrang aktuell (idag+imorgon) | ❌ | +| `current_interval_price_rank_today` | Current Price Rank (Today) | Aktueller Preisrang (heute) | Aktuell prisrang (i dag) | Huidige prijsrang (vandaag) | Aktuellt prisrang (idag) | ✅ | +| `current_interval_price_rank_today_tomorrow` | Current Price Rank (Today+Tomorrow) | Aktueller Preisrang (heute+morgen) | Aktuell prisrang (i dag+i morgen) | Huidige prijsrang (vandaag+morgen) | Aktuellt prisrang (idag+imorgon) | ❌ | +| `current_interval_price_rank_tomorrow` | Current Price Rank (Tomorrow) | Aktueller Preisrang (morgen) | Aktuell prisrang (i morgen) | Huidige prijsrang (morgen) | Aktuellt prisrang (imorgon) | ❌ | | `day_pattern_today` | Today's Price Pattern | Preismuster Heute | Prismønster i dag | Prijspatroon Vandaag | Prismönster Idag | ✅ | | `day_pattern_tomorrow` | Tomorrow's Price Pattern | Preismuster Morgen | Prismønster i morgen | Prijspatroon Morgen | Prismönster Imorgon | ❌ | | `day_pattern_yesterday` | Yesterday's Price Pattern | Preismuster Gestern | Prismønster i går | Prijspatroon Gisteren | Prismönster Igår | ❌ | -| `price_rank_today` | Today's Price Rank | Preisrang heute | Prisrang i dag | Prijsrang vandaag | Prisrang idag | ✅ | -| `price_rank_today_tomorrow` | Today+Tomorrow Price Rank | Preisrang heute+morgen | Prisrang i dag+i morgen | Prijsrang vandaag+morgen | Prisrang idag+imorgon | ❌ | -| `price_rank_tomorrow` | Tomorrow's Price Rank | Preisrang morgen | Prisrang i morgen | Prijsrang morgen | Prisrang imorgon | ❌ | +| `next_hour_price_rank_today` | ⌀ Hourly Price Next Rank (Today) | ⌀ Stündlicher Preisrang Nächste (heute) | ⌀ Timesprisrang neste (i dag) | ⌀ Uurlijkse prijsrang volgende (vandaag) | ⌀ Timprisrang nästa (idag) | ❌ | +| `next_hour_price_rank_today_tomorrow` | ⌀ Hourly Price Next Rank (Today+Tomorrow) | ⌀ Stündlicher Preisrang Nächste (heute+morgen) | ⌀ Timesprisrang neste (i dag+i morgen) | ⌀ Uurlijkse prijsrang volgende (vandaag+morgen) | ⌀ Timprisrang nästa (idag+imorgon) | ❌ | +| `next_interval_price_rank_today` | Next Price Rank (Today) | Nächster Preisrang (heute) | Neste prisrang (i dag) | Volgende prijsrang (vandaag) | Nästa prisrang (idag) | ❌ | +| `next_interval_price_rank_today_tomorrow` | Next Price Rank (Today+Tomorrow) | Nächster Preisrang (heute+morgen) | Neste prisrang (i dag+i morgen) | Volgende prijsrang (vandaag+morgen) | Nästa prisrang (idag+imorgon) | ❌ | +| `previous_interval_price_rank_today` | Last Price Rank (Today) | Letzter Preisrang (heute) | Forrige prisrang (i dag) | Vorige prijsrang (vandaag) | Förra prisrang (idag) | ❌ | +| `previous_interval_price_rank_today_tomorrow` | Last Price Rank (Today+Tomorrow) | Letzter Preisrang (heute+morgen) | Forrige prisrang (i dag+i morgen) | Vorige prijsrang (vandaag+morgen) | Förra prisrang (idag+imorgon) | ❌ | ## Binary Sensors ### Binary Sensors diff --git a/docs/user/docs/sensors-volatility.md b/docs/user/docs/sensors-volatility.md index 0b0f9e5..2994c4e 100644 --- a/docs/user/docs/sensors-volatility.md +++ b/docs/user/docs/sensors-volatility.md @@ -139,44 +139,81 @@ The `price_spike_count` attribute (Tukey fence method: Q25 − 1.5×IQR to Q75 + ## Price Rank Sensors (Percentile Rank) -The price rank sensors answer the simple question: **"Is the current price cheap or expensive compared to the rest of the day?"** +The price rank sensors answer the simple question: **"Is this price cheap or expensive compared to the rest of the day?"** -Unlike the volatility sensors (which measure the _shape_ of the entire price distribution), price rank sensors place the _current price_ within that distribution — technically its **percentile rank**. A value of **0% means cheapest interval of the day**, while a value near **99% means most expensive**. +Unlike the volatility sensors (which measure the _shape_ of the entire price distribution), price rank sensors place a _specific price_ within that distribution — technically its **percentile rank**. A value of **0% means cheapest interval of the reference set**, while a value near **99% means most expensive**. + +Each sensor ranks a different **subject price** against a **reference window**: + +- **Subject** — Which price is being ranked: current interval, next interval, previous interval, or the rolling hourly average +- **Reference window** — Which pool of slots to compare against: today only, tomorrow only, or today+tomorrow combined ### How It Works (Percentile Rank Formula) ``` -Price rank (percentile rank) = (number of intervals strictly cheaper than now) ÷ total intervals × 100 +Price rank (percentile rank) = (number of intervals strictly cheaper than subject) ÷ total intervals × 100 ``` The cheapest interval always returns 0% — you can use `state == 0` to detect the absolute cheapest moment. ### Available Sensors -| Sensor | Reference Set | Enabled by Default | -| ------------------------------------------------------------------------------- | ----------------------------------------------- | ------------------ | -| Today's Price Rank | All of today's 96 quarter-hour intervals | ✅ Yes | -| Tomorrow's Price Rank | All of tomorrow's 96 intervals (once available) | ❌ No | -| Today+Tomorrow Price Rank | Combined pool (up to 192 intervals) | ❌ No | +**Current interval** (price of the active quarter-hour): + +| Sensor | Reference Set | Enabled by Default | +| ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ------------------ | +| Current Price Rank (Today) | Today's 96 quarter-hour intervals | ✅ Yes | +| Current Price Rank (Tomorrow) | Tomorrow's 96 intervals (once avail.) | ❌ No | +| Current Price Rank (Today+Tomorrow) | Combined pool (up to 192 intervals) | ❌ No | + +**Next interval** (price of the upcoming quarter-hour): + +| Sensor | Reference Set | Enabled by Default | +| ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ------------------ | +| Next Price Rank (Today) | Today's 96 quarter-hour intervals | ❌ No | +| Next Price Rank (Today+Tomorrow) | Combined pool (up to 192 intervals) | ❌ No | + +**Previous interval** (price of the just-ended quarter-hour): + +| Sensor | Reference Set | Enabled by Default | +| ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ------------------ | +| Last Price Rank (Today) | Today's 96 quarter-hour intervals | ❌ No | +| Last Price Rank (Today+Tomorrow) | Combined pool (up to 192 intervals) | ❌ No | + +**Rolling hourly average** (5-interval window, ~1 hour): + +| Sensor | Reference Set | Enabled by Default | +| ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ------------------ | +| ⌀ Hourly Price Current Rank (Today) | Today's 96 quarter-hour intervals | ❌ No | +| ⌀ Hourly Price Current Rank (Today+Tomorrow) | Combined pool (up to 192 intervals) | ❌ No | +| ⌀ Hourly Price Next Rank (Today) | Today's 96 quarter-hour intervals | ❌ No | +| ⌀ Hourly Price Next Rank (Today+Tomorrow) | Combined pool (up to 192 intervals) | ❌ No | ### Key Attributes -All price rank sensors share these attributes: +All price rank sensors share most of these attributes. The price attribute key reflects the subject: -| Attribute | Description | Example | -| -------------------- | --------------------------------------------- | ------- | -| `current_price` | The price being ranked | `14.2` | -| `prices_below_count` | How many intervals are strictly cheaper | `23` | -| `interval_count` | Total intervals in the reference set | `96` | -| `reference_min` | The cheapest price in the reference set | `8.1` | -| `reference_max` | The most expensive price in the reference set | `27.3` | -| `reference_mean` | Average price of the reference set | `15.8` | +| Attribute | Description | Subject | +| ------------------------ | -------------------------------------------------------- | ------------------ | +| `current_price` | The price being ranked (current interval) | Current interval | +| `next_price` | The price being ranked (next interval) | Next interval | +| `previous_price` | The price being ranked (previous interval) | Previous interval | +| `current_hour_avg_price` | The rolling average being ranked (current hour) | Current hour avg | +| `next_hour_avg_price` | The rolling average being ranked (next hour) | Next hour avg | +| `prices_below_count` | How many reference intervals are strictly cheaper | All sensors | +| `interval_count` | Total intervals in the reference set | All sensors | +| `reference_min` | The cheapest price in the reference set | All sensors | +| `reference_max` | The most expensive price in the reference set | All sensors | +| `reference_mean` | Average price of the reference set | All sensors | ### When to Use Which Sensor -- **`price_rank_today`** — For same-day scheduling. "Is now within the cheapest quarter of today? (< 25%)" -- **`price_rank_tomorrow`** — To compare today's price against what tomorrow offers. "Is it worth waiting until tomorrow?" -- **`price_rank_today_tomorrow`** — Broadest view for flexible tasks. "Is this among the cheapest moments of a 48-hour window?" +- **Current (Today)** — Same-day scheduling. "Is the active quarter-hour within the cheapest 25% of today?" +- **Next (Today)** — Prepare for the next interval. "Should I pre-heat now so the device runs in the coming cheap slot?" +- **Current (Today+Tomorrow)** — Broadest view for flexible tasks. "Is this among the cheapest moments of a 48-hour window?" +- **Current (Tomorrow)** — Decide whether to wait until tomorrow. "Is today's price worse than what tomorrow offers?" +- **⌀ Hourly Current (Today)** — For tasks that take about an hour. "Is this hour cheap enough to start a 60-minute cycle?" +- **⌀ Hourly Next (Today)** — One-hour look-ahead. "Will the upcoming hour be cheap enough to start now?" ### Usage in Automations @@ -188,7 +225,7 @@ automation: - alias: "Start dishwasher at cheapest time of day" trigger: - platform: numeric_state - entity_id: sensor._today_s_price_rank + entity_id: sensor._current_price_rank_today below: 25 condition: - condition: state @@ -214,10 +251,32 @@ automation: # Only postpone if tomorrow's cheapest quartile is better than the current price - condition: template value_template: > - {{ states('sensor._tomorrow_s_price_rank') | float(100) < 25 }} + {{ states('sensor._current_price_rank_tomorrow') | float(100) < 25 }} action: - service: input_boolean.turn_off entity_id: input_boolean.ev_charge_tonight ``` + +
+Show YAML: Pre-heat when the next interval is cheap + +```yaml +automation: + - alias: "Pre-heat if next interval is top quartile cheapest" + trigger: + - platform: time_pattern + minutes: "/15" + condition: + - condition: numeric_state + entity_id: sensor._next_price_rank_today + below: 25 + action: + - service: climate.set_hvac_mode + entity_id: climate.living_room + data: + hvac_mode: heat +``` + +