mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-30 13:23:41 +00:00
Added optional diagnostic binary sensor that exposes get_chartdata service results as entity attributes for legacy dashboard tools. Key features: - Entity: binary_sensor.tibber_home_NAME_chart_data_export - Configurable via Options Flow Step 7 (YAML parameters) - Calls get_chartdata service with user configuration - Exposes response as attributes for chart cards - Disabled by default (opt-in) - Auto-refreshes on coordinator updates - Manual refresh via homeassistant.update_entity Implementation details: - Added chart_data_export entity description to definitions.py - Implemented state/attribute logic in binary_sensor/core.py - Added YAML configuration schema in schemas.py - Added validation in options_flow.py (Step 7) - Service call validation with detailed error messages - Attribute ordering: metadata first, descriptions next, service data last - Dynamic icon mapping (database-export/database-alert) Translations: - Added chart_data_export_config to all 5 languages - Added Step 7 descriptions with legacy warning - Added invalid_yaml_syntax/invalid_yaml_structure error messages - Added custom_translations for sensor descriptions Documentation: - Added Chart Data Export section to sensors.md - Added comprehensive service guide to services.md - Migration path from sensor to service - Configuration instructions via Options Flow Impact: Provides backward compatibility for dashboard tools that can only read entity attributes (e.g., older ApexCharts versions). New integrations should use tibber_prices.get_chartdata service directly.
886 lines
46 KiB
JSON
886 lines
46 KiB
JSON
{
|
||
"config": {
|
||
"step": {
|
||
"user": {
|
||
"description": "Richte Tibber Preisinformationen & Bewertungen ein.\n\nUm einen API-Zugriffstoken zu generieren, besuche https://developer.tibber.com.",
|
||
"data": {
|
||
"access_token": "API-Zugriffstoken"
|
||
},
|
||
"submit": "Token validieren"
|
||
},
|
||
"select_home": {
|
||
"description": "Wähle ein Zuhause, um Preisinformationen und Bewertungen abzurufen.",
|
||
"data": {
|
||
"home_id": "Zuhause"
|
||
},
|
||
"title": "Wähle ein Zuhause",
|
||
"submit": "Zuhause auswählen"
|
||
},
|
||
"finish": {
|
||
"description": "Wähle ein Zuhause, um Preisinformationen und Bewertungen abzurufen.",
|
||
"data": {
|
||
"home_id": "Home ID"
|
||
},
|
||
"title": "Wähle ein Zuhause",
|
||
"submit": "Zuhause auswählen"
|
||
},
|
||
"reauth_confirm": {
|
||
"title": "Tibber Preis-Integration erneut authentifizieren",
|
||
"description": "Der Zugriffstoken für Tibber ist nicht mehr gültig. Bitte gib einen neuen API-Zugriffstoken ein, um diese Integration weiter zu nutzen.\n\nUm einen neuen API-Zugriffstoken zu generieren, besuche https://developer.tibber.com.",
|
||
"data": {
|
||
"access_token": "API-Zugriffstoken"
|
||
},
|
||
"submit": "Token aktualisieren"
|
||
}
|
||
},
|
||
"error": {
|
||
"auth": "Der Tibber Zugangstoken ist ungültig.",
|
||
"connection": "Verbindung zu Tibber nicht möglich. Bitte überprüfe deine Internetverbindung.",
|
||
"unknown": "Ein unerwarteter Fehler ist aufgetreten. Bitte überprüfe die Logs für Details.",
|
||
"cannot_connect": "Verbindung fehlgeschlagen",
|
||
"invalid_access_token": "Ungültiges Zugriffstoken",
|
||
"missing_homes": "Der neue Zugriffstoken hat keinen Zugriff auf alle konfigurierten Zuhause. Bitte verwende einen Zugriffstoken, der Zugriff auf die gleichen Tibber-Zuhause hat.",
|
||
"invalid_yaml_syntax": "Ungültige YAML-Syntax. Bitte prüfe Einrückung, Doppelpunkte und Sonderzeichen.",
|
||
"invalid_yaml_structure": "YAML muss ein Dictionary/Objekt sein (Schlüssel: Wert-Paare), keine Liste oder reiner Text.",
|
||
"service_call_failed": "Service-Aufruf-Validierung fehlgeschlagen: {error_detail}"
|
||
},
|
||
"abort": {
|
||
"already_configured": "Integration ist bereits konfiguriert",
|
||
"entry_not_found": "Tibber Konfigurationseintrag nicht gefunden.",
|
||
"setup_complete": "Einrichtung abgeschlossen! Du kannst zusätzliche Optionen für Tibber Preise in den Integrationsoptionen ändern, nachdem du diesen Dialog geschlossen hast.",
|
||
"reauth_successful": "Erneute Authentifizierung erfolgreich. Die Integration wurde mit dem neuen Zugriffstoken aktualisiert."
|
||
}
|
||
},
|
||
"common": {
|
||
"step_progress": "Schritt {step_num} von {total_steps}"
|
||
},
|
||
"config_subentries": {
|
||
"home": {
|
||
"initiate_flow": {
|
||
"user": "Tibber Zuhause hinzufügen"
|
||
},
|
||
"title": "Tibber Zuhause hinzufügen",
|
||
"step": {
|
||
"user": {
|
||
"title": "Tibber Zuhause hinzufügen",
|
||
"description": "Wähle ein Zuhause aus, das du zu deiner Tibber-Integration hinzufügen möchtest.",
|
||
"data": {
|
||
"home_id": "Zuhause"
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"api_error": "Fehler beim Abrufen der Zuhause von der Tibber API"
|
||
},
|
||
"abort": {
|
||
"no_parent_entry": "Übergeordneter Eintrag nicht gefunden",
|
||
"no_access_token": "Kein Zugriffstoken verfügbar",
|
||
"home_not_found": "Ausgewähltes Zuhause nicht gefunden",
|
||
"api_error": "Fehler beim Abrufen der Zuhause von der Tibber API",
|
||
"no_available_homes": "Keine zusätzlichen Zuhause verfügbar. Alle Zuhause von deinem Tibber-Konto wurden bereits hinzugefügt."
|
||
}
|
||
}
|
||
},
|
||
"options": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Allgemeine Einstellungen",
|
||
"description": "{step_progress}\n\nKonfiguration allgemeiner Einstellungen für Tibber Preisinformationen & Bewertungen.\n\nBenutzer: {user_login}",
|
||
"data": {
|
||
"extended_descriptions": "Erweiterte Beschreibungen in Entity-Attributen anzeigen"
|
||
},
|
||
"submit": "Weiter zu Schritt 2"
|
||
},
|
||
"current_interval_price_rating": {
|
||
"title": "Preisbewertungs-Schwellwerte",
|
||
"description": "{step_progress}\n\nKonfiguration der Schwellwerte für Preisbewertungsstufen (niedrig/normal/hoch) basierend auf dem Vergleich mit dem gleitenden 24-Stunden-Durchschnitt.",
|
||
"data": {
|
||
"price_rating_threshold_low": "Schwellwert für niedrige Bewertung (unter gleitendem Durchschnitt)",
|
||
"price_rating_threshold_high": "Schwellwert für hohe Bewertung (über gleitendem Durchschnitt)"
|
||
},
|
||
"submit": "Weiter zu Schritt 3"
|
||
},
|
||
"best_price": {
|
||
"title": "Bestpreis-Zeitraum Einstellungen",
|
||
"description": "{step_progress}\n\nKonfiguration für den Bestpreis-Zeitraum mit den niedrigsten Strompreisen.",
|
||
"data": {
|
||
"best_price_min_period_length": "Minimale Zeitraumlänge",
|
||
"best_price_flex": "Flexibilität: Maximal über dem Mindestpreis",
|
||
"best_price_min_distance_from_avg": "Mindestabstand: Erforderlich unter dem Tagesdurchschnitt",
|
||
"best_price_max_level": "Preisniveau-Filter (Optional)",
|
||
"best_price_max_level_gap_count": "Lückentoleranz für Niveaufilter",
|
||
"enable_min_periods_best": "Mindestanzahl Zeiträume anstreben",
|
||
"min_periods_best": "Mindestanzahl Zeiträume",
|
||
"relaxation_step_best": "Lockerungsschritt",
|
||
"relaxation_attempts_best": "Lockerungsversuche (Flex-Stufen)"
|
||
},
|
||
"data_description": {
|
||
"best_price_max_level": "Zeigt Bestpreis-Zeiträume nur an, wenn sie Intervalle mit Preisniveaus ≤ dem gewählten Wert enthalten. Beispiel: Wahl von 'Günstig' bedeutet, dass der Zeitraum mindestens ein 'SEHR GÜNSTIG' oder 'GÜNSTIG' Intervall haben muss. Dies stellt sicher, dass Bestpreis-Zeiträume nicht nur relativ günstig für den Tag sind, sondern tatsächlich günstig in absoluten Zahlen. Wähle 'Beliebig' um Bestpreise unabhängig vom absoluten Preisniveau anzuzeigen.",
|
||
"best_price_max_level_gap_count": "Maximale Anzahl aufeinanderfolgender Intervalle, die exakt um eine Niveaustufe vom geforderten Level abweichen dürfen. Beispiel: Bei Filter 'Günstig' und Lückentoleranz 1 wird die Sequenz 'GÜNSTIG, GÜNSTIG, NORMAL, GÜNSTIG' akzeptiert (NORMAL ist eine Stufe über GÜNSTIG). Dies verhindert, dass Zeiträume durch gelegentliche Niveau-Abweichungen aufgespalten werden. Standard: 1.",
|
||
"enable_min_periods_best": "Wenn aktiviert, werden Filter schrittweise gelockert, falls nicht genug Zeiträume gefunden wurden. Dies versucht die gewünschte Mindestanzahl zu erreichen, was dazu führen kann, dass auch weniger optimale Zeiträume als Bestpreis-Zeiträume markiert werden.",
|
||
"min_periods_best": "Mindestanzahl an Bestpreis-Zeiträumen, die pro Tag angestrebt werden. Filter werden schrittweise gelockert, um diese Anzahl zu erreichen. Nur aktiv, wenn 'Mindestanzahl Zeiträume anstreben' aktiviert ist. Standard: 1",
|
||
"relaxation_step_best": "Prozentsatz des ursprünglichen Flexibilitätsschwellwerts, der pro Lockerungsschritt addiert wird. Beispiel: Bei 15% Flexibilität und 25% Schrittgröße werden 15%, 18,75%, 22,5% usw. versucht. Höhere Werte bedeuten schnellere Lockerung, aber geringere Präzision.",
|
||
"relaxation_attempts_best": "Wie viele Flex-Stufen (Versuche) nacheinander ausprobiert werden, bevor aufgegeben wird. Jeder Versuch testet alle Filterkombinationen auf der neuen Flex-Stufe. Mehr Versuche erhöhen die Chance auf zusätzliche Zeiträume, benötigen aber etwas mehr Rechenzeit."
|
||
},
|
||
"submit": "Weiter zu Schritt 5"
|
||
},
|
||
"peak_price": {
|
||
"title": "Spitzenpreis-Zeitraum Einstellungen",
|
||
"description": "{step_progress}\n\nKonfiguration für den Spitzenpreis-Zeitraum mit den höchsten Strompreisen.",
|
||
"data": {
|
||
"peak_price_min_period_length": "Minimale Zeitraumlänge",
|
||
"peak_price_flex": "Flexibilität: Maximal unter dem Höchstpreis (negativer Wert)",
|
||
"peak_price_min_distance_from_avg": "Mindestabstand: Erforderlich über dem Tagesdurchschnitt",
|
||
"peak_price_min_level": "Preisniveau-Filter (Optional)",
|
||
"peak_price_max_level_gap_count": "Lückentoleranz für Niveaufilter",
|
||
"enable_min_periods_peak": "Mindestanzahl Zeiträume anstreben",
|
||
"min_periods_peak": "Mindestanzahl Zeiträume",
|
||
"relaxation_step_peak": "Lockerungsschritt",
|
||
"relaxation_attempts_peak": "Lockerungsversuche (Flex-Stufen)"
|
||
},
|
||
"data_description": {
|
||
"peak_price_min_level": "Zeigt Spitzenpreis-Zeiträume nur an, wenn sie Intervalle mit Preisniveaus ≥ dem gewählten Wert enthalten. Beispiel: Wahl von 'Teuer' bedeutet, dass der Zeitraum mindestens ein 'TEUER' oder 'SEHR TEUER' Intervall haben muss. Dies stellt sicher, dass Spitzenpreis-Zeiträume nicht nur relativ teuer für den Tag sind, sondern tatsächlich teuer in absoluten Zahlen. Wähle 'Beliebig' um Spitzenpreise unabhängig vom absoluten Preisniveau anzuzeigen.",
|
||
"peak_price_max_level_gap_count": "Maximale Anzahl aufeinanderfolgender Intervalle, die exakt um eine Niveaustufe vom geforderten Level abweichen dürfen. Beispiel: Bei Filter 'Teuer' und Lückentoleranz 2 wird die Sequenz 'TEUER, NORMAL, NORMAL, TEUER' akzeptiert (NORMAL ist eine Stufe unter TEUER). Dies verhindert, dass Zeiträume durch gelegentliche Niveau-Abweichungen aufgespalten werden. Standard: 0.",
|
||
"enable_min_periods_peak": "Wenn aktiviert, werden Filter schrittweise gelockert, falls nicht genug Zeiträume gefunden wurden. Dies versucht die gewünschte Mindestanzahl zu erreichen, um sicherzustellen, dass du auch an Tagen mit ungewöhnlichen Preismustern vor teuren Zeiträumen gewarnt wirst.",
|
||
"min_periods_peak": "Mindestanzahl an Spitzenpreis-Zeiträumen, die pro Tag angestrebt werden. Filter werden schrittweise gelockert, um diese Anzahl zu erreichen. Nur aktiv, wenn 'Mindestanzahl Zeiträume anstreben' aktiviert ist. Standard: 1",
|
||
"relaxation_step_peak": "Prozentsatz des ursprünglichen Flexibilitätsschwellwerts, der pro Lockerungsschritt addiert wird. Beispiel: Bei -15% Flexibilität und 25% Schrittgröße werden -15%, -18,75%, -22,5% usw. versucht. Höhere Werte bedeuten schnellere Lockerung, aber geringere Präzision.",
|
||
"relaxation_attempts_peak": "Wie viele Flex-Stufen (Versuche) nacheinander ausprobiert werden, bevor aufgegeben wird. Jeder Versuch testet alle Filterkombinationen auf der neuen Flex-Stufe. Mehr Versuche erhöhen die Chance auf zusätzliche Spitzenpreis-Zeiträume, benötigen aber etwas mehr Rechenzeit."
|
||
},
|
||
"submit": "Weiter zu Schritt 6"
|
||
},
|
||
"price_trend": {
|
||
"title": "Preistrend-Schwellenwerte",
|
||
"description": "{step_progress}\n\nKonfiguriere Schwellenwerte für Preistrend-Sensoren. Diese Sensoren vergleichen den aktuellen Preis mit dem Durchschnitt der nächsten N Stunden, um festzustellen, ob die Preise steigen, fallen oder stabil sind.",
|
||
"data": {
|
||
"price_trend_threshold_rising": "Steigender Schwellenwert (über dem aktuellen Preis)",
|
||
"price_trend_threshold_falling": "Fallender Schwellenwert (unter dem aktuellen Preis, negativer Wert)"
|
||
},
|
||
"submit": "Weiter zu Schritt 7"
|
||
},
|
||
"volatility": {
|
||
"title": "Volatilität Schwellenwerte",
|
||
"description": "{step_progress}\n\nKonfiguriere Schwellenwerte für die Volatilitätsklassifizierung. Volatilität misst relative Preisschwankungen anhand des Variationskoeffizienten (VK = Standardabweichung / Durchschnitt × 100%). Diese Schwellenwerte sind Prozentwerte, die für alle Preisniveaus funktionieren.\n\nVerwendet von:\n• Volatilitätssensoren (Klassifizierung)\n• Trend-Sensoren (adaptive Schwellenanpassung: <moderat = empfindlicher, ≥hoch = weniger empfindlich)",
|
||
"data": {
|
||
"volatility_threshold_moderate": "Moderate Schwelle (VK ≥ dieser %, z.B. 15)",
|
||
"volatility_threshold_high": "Hohe Schwelle (VK ≥ dieser %, z.B. 30)",
|
||
"volatility_threshold_very_high": "Sehr hohe Schwelle (VK ≥ dieser %, z.B. 50)"
|
||
},
|
||
"submit": "Weiter zu Schritt 4"
|
||
},
|
||
"chart_data_export": {
|
||
"title": "Diagramm-Datenexport",
|
||
"description": "{step_progress}\n\n⚠️ **Dieser Schritt ist optional:** Konfiguriere nur, wenn du einen diagnostischen Sensor für ältere Dashboard-Tools benötigst, die KEINE Services aufrufen können.\n\n⚠️ **WICHTIG: Legacy-Feature**\nDieser Sensor existiert nur für Abwärtskompatibilität mit älteren Tools, die Daten nur aus Entity-Attributen lesen können.\n\n**Für neue Integrationen nutze stattdessen direkt den `tibber_prices.get_chartdata` Service** - er ist flexibler, effizienter und der empfohlene Home Assistant Ansatz.\n\n**Wann diesen Sensor nutzen:**\n✅ NUR wenn dein Dashboard-Tool NUR Attribute lesen kann (z.B. ältere Versionen)\n❌ NICHT für neue Integrationen - nutze den Service direkt\n\n**Was ist dieser Sensor?**\nEin diagnostischer Sensor, der den `tibber_prices.get_chartdata` Service mit deinen YAML-Parametern aufruft und das Ergebnis als Attribute bereitstellt.\n\n**Wie nutzen:**\n1. Öffne Settings → Devices & Services → Tibber Prices\n2. Wähle dein Home\n3. Finde 'Diagramm-Datenexport' im Diagnose-Bereich\n4. Aktiviere den Sensor (standardmäßig deaktiviert)\n5. Nutze `homeassistant.update_entity` um Daten manuell zu aktualisieren\n\n**Konfigurationsanleitung:**\n1. Teste deinen Service-Aufruf in Entwicklerwerkzeuge → Services → `tibber_prices.get_chartdata`\n2. Kopiere das YAML aus dem `data:` Bereich (ohne `entry_id`)\n3. Füge es unten ein (nutze Shift+Enter oder Strg+Enter für neue Zeilen)\n\n**Beispiel-YAML:**\n```yaml\nday:\n - today\n - tomorrow\ninclude_level: true\ninclude_rating_level: true\n```\n\n**Hinweis:** Leer lassen oder diesen Schritt überspringen, wenn du den Service direkt nutzt (empfohlen).",
|
||
"data": {
|
||
"chart_data_config": "Service-Konfiguration (YAML)"
|
||
},
|
||
"data_description": {
|
||
"chart_data_config": "YAML-Konfiguration für get_chartdata Service. Unterstützte Parameter: day (Liste aus yesterday/today/tomorrow), resolution (interval/hourly), output_format, include_level, include_rating_level, include_average, und viele mehr. Siehe Service-Dokumentation für vollständige Liste. Leer lassen für Standard-Einstellungen (today, interval resolution, array of objects)."
|
||
},
|
||
"submit": "Konfiguration abschließen"
|
||
}
|
||
},
|
||
"error": {
|
||
"auth": "Der Tibber Zugangstoken ist ungültig.",
|
||
"connection": "Verbindung zu Tibber nicht möglich. Bitte überprüfe deine Internetverbindung.",
|
||
"unknown": "Ein unerwarteter Fehler ist aufgetreten. Bitte überprüfe die Logs für Details.",
|
||
"cannot_connect": "Verbindung fehlgeschlagen",
|
||
"invalid_access_token": "Ungültiges Zugriffstoken",
|
||
"different_home": "Der Zugriffstoken ist nicht gültig für die Home ID, für die diese Integration konfiguriert ist."
|
||
},
|
||
"abort": {
|
||
"entry_not_found": "Tibber Konfigurationseintrag nicht gefunden."
|
||
},
|
||
"best_price_flex": "Bestpreis Flexibilität (%)",
|
||
"peak_price_flex": "Spitzenpreis Flexibilität (%)",
|
||
"price_rating_threshold_low": "Niedriger Preis Schwellenwert (% zum gleitenden Durchschnitt)",
|
||
"price_rating_threshold_high": "Hoher Preis Schwellenwert (% zum gleitenden Durchschnitt)"
|
||
},
|
||
"entity": {
|
||
"sensor": {
|
||
"current_interval_price": {
|
||
"name": "Aktueller Strompreis"
|
||
},
|
||
"current_interval_price_major": {
|
||
"name": "Aktueller Strompreis (Energie-Dashboard)"
|
||
},
|
||
"next_interval_price": {
|
||
"name": "Nächster Strompreis"
|
||
},
|
||
"previous_interval_price": {
|
||
"name": "Vorheriger Strompreis"
|
||
},
|
||
"current_hour_average_price": {
|
||
"name": "⌀ Stunden-Preis aktuell"
|
||
},
|
||
"next_hour_average_price": {
|
||
"name": "⌀ Stunden-Preis nächste Stunde"
|
||
},
|
||
"current_interval_price_level": {
|
||
"name": "Aktuelles Preisniveau",
|
||
"state": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"next_interval_price_level": {
|
||
"name": "Nächstes Preisniveau",
|
||
"state": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"previous_interval_price_level": {
|
||
"name": "Vorheriges Preisniveau",
|
||
"state": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"current_hour_price_level": {
|
||
"name": "Aktuelles Stunden-Preisniveau",
|
||
"state": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"next_hour_price_level": {
|
||
"name": "Nächstes Stunden-Preisniveau",
|
||
"state": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"lowest_price_today": {
|
||
"name": "Mindestpreis heute"
|
||
},
|
||
"highest_price_today": {
|
||
"name": "Höchstpreis heute"
|
||
},
|
||
"average_price_today": {
|
||
"name": "⌀ Preis heute"
|
||
},
|
||
"lowest_price_tomorrow": {
|
||
"name": "Mindestpreis morgen"
|
||
},
|
||
"highest_price_tomorrow": {
|
||
"name": "Höchstpreis morgen"
|
||
},
|
||
"average_price_tomorrow": {
|
||
"name": "⌀ Preis morgen"
|
||
},
|
||
"yesterday_price_level": {
|
||
"name": "Preisniveau gestern",
|
||
"state": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"today_price_level": {
|
||
"name": "Preisniveau heute",
|
||
"state": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"tomorrow_price_level": {
|
||
"name": "Preisniveau morgen",
|
||
"state": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"yesterday_price_rating": {
|
||
"name": "Preisbewertung gestern",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"today_price_rating": {
|
||
"name": "Preisbewertung heute",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"tomorrow_price_rating": {
|
||
"name": "Preisbewertung morgen",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"trailing_price_average": {
|
||
"name": "⌀ Preis nachlaufend 24h"
|
||
},
|
||
"leading_price_average": {
|
||
"name": "⌀ Preis vorlaufend 24h"
|
||
},
|
||
"trailing_price_min": {
|
||
"name": "24h-Mindestpreis nachlaufend"
|
||
},
|
||
"trailing_price_max": {
|
||
"name": "24h-Höchstpreis nachlaufend"
|
||
},
|
||
"leading_price_min": {
|
||
"name": "24h-Mindestpreis vorlaufend"
|
||
},
|
||
"leading_price_max": {
|
||
"name": "24h-Höchstpreis vorlaufend"
|
||
},
|
||
"current_interval_price_rating": {
|
||
"name": "Aktuelle Preisbewertung",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"next_interval_price_rating": {
|
||
"name": "Nächste Preisbewertung",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"previous_interval_price_rating": {
|
||
"name": "Vorherige Preisbewertung",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"current_hour_price_rating": {
|
||
"name": "Aktuelle Stunden-Preisbewertung",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"next_hour_price_rating": {
|
||
"name": "Nächste Stunden-Preisbewertung",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"next_avg_1h": {
|
||
"name": "⌀ Preis nächste 1h"
|
||
},
|
||
"next_avg_2h": {
|
||
"name": "⌀ Preis nächste 2h"
|
||
},
|
||
"next_avg_3h": {
|
||
"name": "⌀ Preis nächste 3h"
|
||
},
|
||
"next_avg_4h": {
|
||
"name": "⌀ Preis nächste 4h"
|
||
},
|
||
"next_avg_5h": {
|
||
"name": "⌀ Preis nächste 5h"
|
||
},
|
||
"next_avg_6h": {
|
||
"name": "⌀ Preis nächste 6h"
|
||
},
|
||
"next_avg_8h": {
|
||
"name": "⌀ Preis nächste 8h"
|
||
},
|
||
"next_avg_12h": {
|
||
"name": "⌀ Preis nächste 12h"
|
||
},
|
||
"price_trend_1h": {
|
||
"name": "Preistrend (1h)",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_2h": {
|
||
"name": "Preistrend (2h)",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_3h": {
|
||
"name": "Preistrend (3h)",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_4h": {
|
||
"name": "Preistrend (4h)",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_5h": {
|
||
"name": "Preistrend (5h)",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_6h": {
|
||
"name": "Preistrend (6h)",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_8h": {
|
||
"name": "Preistrend (8h)",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_12h": {
|
||
"name": "Preistrend (12h)",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"current_price_trend": {
|
||
"name": "Aktueller Preistrend",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"next_price_trend_change": {
|
||
"name": "Nächste Trendänderung"
|
||
},
|
||
"daily_rating": {
|
||
"name": "Tägliche Preisbewertung"
|
||
},
|
||
"monthly_rating": {
|
||
"name": "Monatliche Preisbewertung"
|
||
},
|
||
"data_timestamp": {
|
||
"name": "Preisdaten-Ablauf"
|
||
},
|
||
"today_volatility": {
|
||
"name": "Volatilität heute",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"moderate": "Moderat",
|
||
"high": "Hoch",
|
||
"very_high": "Sehr hoch"
|
||
}
|
||
},
|
||
"tomorrow_volatility": {
|
||
"name": "Volatilität morgen",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"moderate": "Moderat",
|
||
"high": "Hoch",
|
||
"very_high": "Sehr hoch"
|
||
}
|
||
},
|
||
"next_24h_volatility": {
|
||
"name": "Volatilität der nächsten 24h",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"moderate": "Moderat",
|
||
"high": "Hoch",
|
||
"very_high": "Sehr hoch"
|
||
}
|
||
},
|
||
"today_tomorrow_volatility": {
|
||
"name": "Volatilität heute+morgen",
|
||
"state": {
|
||
"low": "Niedrig",
|
||
"moderate": "Moderat",
|
||
"high": "Hoch",
|
||
"very_high": "Sehr hoch"
|
||
}
|
||
},
|
||
"best_price_end_time": {
|
||
"name": "Bestpreis endet"
|
||
},
|
||
"best_price_period_duration": {
|
||
"name": "Bestpreis Dauer"
|
||
},
|
||
"best_price_remaining_minutes": {
|
||
"name": "Bestpreis verbleibend"
|
||
},
|
||
"best_price_progress": {
|
||
"name": "Bestpreis Fortschritt"
|
||
},
|
||
"best_price_next_start_time": {
|
||
"name": "Bestpreis startet"
|
||
},
|
||
"best_price_next_in_minutes": {
|
||
"name": "Bestpreis startet in"
|
||
},
|
||
"peak_price_end_time": {
|
||
"name": "Spitzenpreis endet"
|
||
},
|
||
"peak_price_period_duration": {
|
||
"name": "Spitzenpreis Dauer"
|
||
},
|
||
"peak_price_remaining_minutes": {
|
||
"name": "Spitzenpreis verbleibend"
|
||
},
|
||
"peak_price_progress": {
|
||
"name": "Spitzenpreis Fortschritt"
|
||
},
|
||
"peak_price_next_start_time": {
|
||
"name": "Spitzenpreis startet"
|
||
},
|
||
"peak_price_next_in_minutes": {
|
||
"name": "Spitzenpreis startet in"
|
||
},
|
||
"price_forecast": {
|
||
"name": "Preisprognose"
|
||
},
|
||
"home_type": {
|
||
"name": "Wohnungstyp",
|
||
"state": {
|
||
"apartment": "Wohnung",
|
||
"rowhouse": "Reihenhaus",
|
||
"house": "Haus",
|
||
"cottage": "Ferienhaus"
|
||
}
|
||
},
|
||
"home_size": {
|
||
"name": "Wohnfläche"
|
||
},
|
||
"main_fuse_size": {
|
||
"name": "Hauptsicherung"
|
||
},
|
||
"number_of_residents": {
|
||
"name": "Anzahl Bewohner"
|
||
},
|
||
"primary_heating_source": {
|
||
"name": "Primäre Heizquelle",
|
||
"state": {
|
||
"air2air_heatpump": "Luft-Luft-Wärmepumpe",
|
||
"air2water_heatpump": "Luft-Wasser-Wärmepumpe",
|
||
"boiler": "Boiler",
|
||
"central_heating": "Zentralheizung",
|
||
"district_heating": "Fernwärme",
|
||
"district": "Fernwärme",
|
||
"electric_boiler": "Elektroboiler",
|
||
"electricity": "Elektroheizung",
|
||
"floor": "Fußbodenheizung",
|
||
"gas": "Gas",
|
||
"ground_heatpump": "Erdwärmepumpe",
|
||
"ground": "Erdwärmepumpe",
|
||
"oil": "Öl",
|
||
"other": "Sonstige",
|
||
"waste": "Abwärme"
|
||
}
|
||
},
|
||
"grid_company": {
|
||
"name": "Netzbetreiber"
|
||
},
|
||
"grid_area_code": {
|
||
"name": "Netzgebietscode"
|
||
},
|
||
"price_area_code": {
|
||
"name": "Preiszonencode"
|
||
},
|
||
"consumption_ean": {
|
||
"name": "Verbrauchs-EAN"
|
||
},
|
||
"production_ean": {
|
||
"name": "Erzeugungs-EAN"
|
||
},
|
||
"energy_tax_type": {
|
||
"name": "Energiesteuertyp"
|
||
},
|
||
"vat_type": {
|
||
"name": "Mehrwertsteuertyp"
|
||
},
|
||
"estimated_annual_consumption": {
|
||
"name": "Geschätzter Jahresverbrauch"
|
||
},
|
||
"subscription_status": {
|
||
"name": "Abonnementstatus",
|
||
"state": {
|
||
"running": "Aktiv",
|
||
"ended": "Beendet",
|
||
"pending": "Ausstehend",
|
||
"unknown": "Unbekannt"
|
||
}
|
||
}
|
||
},
|
||
"binary_sensor": {
|
||
"peak_price_period": {
|
||
"name": "Spitzenpreis-Zeitraum"
|
||
},
|
||
"best_price_period": {
|
||
"name": "Bestpreis-Zeitraum"
|
||
},
|
||
"connection": {
|
||
"name": "Tibber-API-Verbindung"
|
||
},
|
||
"tomorrow_data_available": {
|
||
"name": "Morgige Daten verfügbar"
|
||
},
|
||
"has_ventilation_system": {
|
||
"name": "Hat Lüftungsanlage"
|
||
},
|
||
"realtime_consumption_enabled": {
|
||
"name": "Echtzeitverbrauch aktiviert"
|
||
},
|
||
"chart_data_export": {
|
||
"name": "Diagramm-Datenexport"
|
||
}
|
||
}
|
||
},
|
||
"issues": {
|
||
"new_homes_available": {
|
||
"title": "Neue Tibber-Häuser erkannt",
|
||
"description": "Wir haben {count} neue(s) Zuhause in deinem Tibber-Konto erkannt: {homes}. Du kannst diese über die Tibber-Integration in Home Assistant hinzufügen."
|
||
},
|
||
"homes_removed": {
|
||
"title": "Tibber-Häuser entfernt",
|
||
"description": "Wir haben erkannt, dass {count} Zuhause aus deinem Tibber-Konto entfernt wurde(n): {homes}. Bitte überprüfe deine Tibber-Integrationskonfiguration."
|
||
}
|
||
},
|
||
"services": {
|
||
"get_apexcharts_yaml": {
|
||
"name": "ApexCharts-Karten-YAML abrufen",
|
||
"description": "Gibt einen fertigen YAML-Schnipsel für eine ApexCharts-Karte zurück, die Tibber-Preise für den ausgewählten Tag visualisiert. Verwende dies, um ganz einfach ein vorkonfiguriertes Diagramm zu deinem Dashboard hinzuzufügen. Das YAML verwendet den get_chartdata-Service für Daten.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrags-ID",
|
||
"description": "Die Konfigurationseintrags-ID für die Tibber-Integration."
|
||
},
|
||
"day": {
|
||
"name": "Tag",
|
||
"description": "Welcher Tag visualisiert werden soll (gestern, heute oder morgen)."
|
||
},
|
||
"level_type": {
|
||
"name": "Stufen-Typ",
|
||
"description": "Wähle, welche Preisstufen-Klassifizierung visualisiert werden soll: 'rating_level' (niedrig/normal/hoch basierend auf deinen konfigurierten Schwellenwerten) oder 'level' (Tibber-API-Stufen: sehr günstig/günstig/normal/teuer/sehr teuer)."
|
||
}
|
||
}
|
||
},
|
||
"get_chartdata": {
|
||
"name": "Diagrammdaten abrufen",
|
||
"description": "Gibt Preisdaten in einem einfachen, diagrammfreundlichen Format kompatibel mit der Tibber Core Integration zurück. Perfekt für beliebte Diagramm-Karten wie ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card oder die eingebaute History Graph Card. Feldnamen und Datenstruktur können an die Anforderungen deines Diagramms angepasst werden.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Die Konfigurationseintrag-ID für die Tibber-Integration."
|
||
},
|
||
"day": {
|
||
"name": "Tag",
|
||
"description": "Für welche(n) Tag(e) sollen Preise abgerufen werden. Du kannst mehrere Tage auswählen. Falls nicht angegeben, werden alle verfügbaren Daten zurückgegeben (heute + morgen falls verfügbar)."
|
||
},
|
||
"resolution": {
|
||
"name": "Auflösung",
|
||
"description": "Zeitauflösung für die zurückgegebenen Daten. Optionen: 'interval' (Standard, 15-Minuten-Intervalle, 96 Datenpunkte pro Tag), 'hourly' (stündliche Durchschnitte, 24 Datenpunkte pro Tag)."
|
||
},
|
||
"output_format": {
|
||
"name": "Ausgabeformat",
|
||
"description": "Ausgabeformat für die zurückgegebenen Daten. Optionen: 'array_of_objects' (Standard, Array von Objekten mit anpassbaren Feldnamen), 'array_of_arrays' (Array von [Zeitstempel, Preis]-Arrays mit abschließendem Null-Punkt für Stepline-Charts)."
|
||
},
|
||
"array_fields": {
|
||
"name": "Array-Felder (nur Array von Arrays)",
|
||
"description": "[NUR FÜR Array von Arrays FORMAT] Definiere, welche Felder im array_of_arrays-Format enthalten sein sollen. Verwende Feldnamen in geschweiften Klammern, getrennt durch Kommas. Verfügbare Felder: start_time, price_per_kwh, level, rating_level, average. Felder werden automatisch aktiviert, auch wenn include_*-Optionen nicht gesetzt sind. Leer lassen für Standard (nur Zeitstempel und Preis)."
|
||
},
|
||
"minor_currency": {
|
||
"name": "Kleinere Währungseinheit",
|
||
"description": "Gibt Preise in kleineren Währungseinheiten zurück (Cent für EUR, Øre für NOK/SEK) statt in Hauptwährungseinheiten. Standardmäßig deaktiviert."
|
||
},
|
||
"round_decimals": {
|
||
"name": "Dezimalstellen runden",
|
||
"description": "Anzahl der Dezimalstellen, auf die Preise gerundet werden sollen (0-10). Falls nicht angegeben, wird die Standardgenauigkeit verwendet (4 Dezimalstellen für Hauptwährung, 2 für kleinere Währungseinheit)."
|
||
},
|
||
"include_level": {
|
||
"name": "Preisniveau einschließen (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Fügt das Tibber-Preisniveau (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) zu jedem Datenpunkt hinzu."
|
||
},
|
||
"include_rating_level": {
|
||
"name": "Preisbewertung einschließen (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Fügt die berechnete Preisbewertung (LOW, NORMAL, HIGH) basierend auf deinen konfigurierten Schwellwerten zu jedem Datenpunkt hinzu."
|
||
},
|
||
"include_average": {
|
||
"name": "Durchschnitt einschließen (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Den Tagesdurchschnittspreis in jedem Datenpunkt zum Vergleich einschließen."
|
||
},
|
||
"level_filter": {
|
||
"name": "Preisniveau-Filter",
|
||
"description": "Intervalle filtern, um nur bestimmte Tibber-Preisniveaus einzuschließen (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Falls nicht angegeben, werden alle Niveaus eingeschlossen."
|
||
},
|
||
"rating_level_filter": {
|
||
"name": "Preisbewertungs-Filter",
|
||
"description": "Intervalle filtern, um nur bestimmte Preisbewertungen einzuschließen (LOW, NORMAL, HIGH). Falls nicht angegeben, werden alle Bewertungen eingeschlossen."
|
||
},
|
||
"period_filter": {
|
||
"name": "Perioden-Filter",
|
||
"description": "Intervalle filtern, um nur solche innerhalb von Bestepreis- oder Spitzenpreis-Zeiträumen einzuschließen. Optionen: 'best_price' (nur Intervalle in Beste-Preis-Perioden), 'peak_price' (nur Intervalle in Spitzen-Preis-Perioden). Falls nicht angegeben, werden alle Intervalle eingeschlossen. Verwendet vorberechnete Periodendaten von Binär-Sensoren."
|
||
},
|
||
"insert_nulls": {
|
||
"name": "NULL-Werte einfügen",
|
||
"description": "Steuert das Einfügen von NULL-Werten für gefilterte Daten. 'none' (Standard): Keine NULL-Werte, nur passende Intervalle. 'segments': NULL-Punkte an Segmentgrenzen für saubere Lücken in Diagrammen hinzufügen (empfohlen für Stufenliniendiagramme). 'all': NULL für alle Zeitstempel einfügen, bei denen der Filter nicht übereinstimmt (nützlich für kontinuierliche Zeitreihenvisualisierung)."
|
||
},
|
||
"add_trailing_null": {
|
||
"name": "Abschließenden Null-Punkt hinzufügen",
|
||
"description": "[BEIDE FORMATE] Füge einen finalen Datenpunkt mit Nullwerten (außer Zeitstempel) am Ende hinzu. Einige Diagrammbibliotheken benötigen dies, um Extrapolation/Interpolation zum Viewport-Rand bei Verwendung von Stufendarstellung zu verhindern. Deaktiviert lassen, es sei denn, dein Diagramm benötigt es."
|
||
},
|
||
"start_time_field": {
|
||
"name": "Startzeit-Feldname (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Startzeit-Feld in der Ausgabe. Standardmäßig 'start_time', wenn nicht angegeben."
|
||
},
|
||
"end_time_field": {
|
||
"name": "Endzeit-Feldname (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Endzeit-Feld in der Ausgabe. Standardmäßig 'end_time', wenn nicht angegeben. Nur verwendet mit period_filter."
|
||
},
|
||
"price_field": {
|
||
"name": "Preis-Feldname (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Preis-Feld in der Ausgabe. Standard ist 'price_per_kwh', falls nicht angegeben."
|
||
},
|
||
"level_field": {
|
||
"name": "Preisniveau-Feldname (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Preisniveau-Feld in der Ausgabe. Standard ist 'level', falls nicht angegeben. Wird nur verwendet, wenn include_level aktiviert ist."
|
||
},
|
||
"rating_level_field": {
|
||
"name": "Preisbewertung-Feldname (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Preisbewertungs-Feld in der Ausgabe. Standard ist 'rating_level', falls nicht angegeben. Wird nur verwendet, wenn include_rating_level aktiviert ist."
|
||
},
|
||
"average_field": {
|
||
"name": "Durchschnitts-Feldname (nur Array von Objekten)",
|
||
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Durchschnitts-Feld in der Ausgabe. Standard ist 'average', falls nicht angegeben. Wird nur verwendet, wenn include_average aktiviert ist."
|
||
},
|
||
"data_key": {
|
||
"name": "Daten-Schlüssel (beide Formate)",
|
||
"description": "[BEIDE FORMATE] Benutzerdefinierter Name für den obersten Datenschlüssel in der Antwort. Standard ist 'data', falls nicht angegeben. Für ApexCharts-Kompatibilität mit Array von Arrays verwende 'points'."
|
||
}
|
||
}
|
||
},
|
||
"refresh_user_data": {
|
||
"name": "Benutzerdaten aktualisieren",
|
||
"description": "Erzwingt eine Aktualisierung der Benutzerdaten (Häuser, Profilinformationen) aus der Tibber API. Dies kann nützlich sein, nachdem Änderungen an deinem Tibber-Konto vorgenommen wurden oder bei der Fehlerbehebung von Verbindungsproblemen.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Die Konfigurationseintrag-ID für die Tibber-Integration."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"selector": {
|
||
"day": {
|
||
"options": {
|
||
"yesterday": "Gestern",
|
||
"today": "Heute",
|
||
"tomorrow": "Morgen"
|
||
}
|
||
},
|
||
"resolution": {
|
||
"options": {
|
||
"interval": "Intervall (15 Min)",
|
||
"hourly": "Stündlich"
|
||
}
|
||
},
|
||
"output_format": {
|
||
"options": {
|
||
"array_of_objects": "Array aus Objekten",
|
||
"array_of_arrays": "Array aus Arrays"
|
||
}
|
||
},
|
||
"level_type": {
|
||
"options": {
|
||
"rating_level": "Preisbewertung (niedrig/normal/hoch)",
|
||
"level": "Preisniveau (sehr günstig bis sehr teuer)"
|
||
}
|
||
},
|
||
"level_filter": {
|
||
"options": {
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
},
|
||
"rating_level_filter": {
|
||
"options": {
|
||
"low": "Niedrig",
|
||
"normal": "Normal",
|
||
"high": "Hoch"
|
||
}
|
||
},
|
||
"insert_nulls": {
|
||
"options": {
|
||
"none": "Keine",
|
||
"segments": "Segmente",
|
||
"all": "Alle"
|
||
}
|
||
},
|
||
"period_filter": {
|
||
"options": {
|
||
"best_price": "Bestpreis-Zeiträume",
|
||
"peak_price": "Spitzenpreis-Zeiträume"
|
||
}
|
||
},
|
||
"volatility": {
|
||
"options": {
|
||
"low": "Niedrig",
|
||
"moderate": "Moderat",
|
||
"high": "Hoch",
|
||
"very_high": "Sehr hoch"
|
||
}
|
||
},
|
||
"current_interval_price_level": {
|
||
"options": {
|
||
"any": "Beliebig",
|
||
"very_cheap": "Sehr günstig",
|
||
"cheap": "Günstig",
|
||
"normal": "Normal",
|
||
"expensive": "Teuer",
|
||
"very_expensive": "Sehr teuer"
|
||
}
|
||
}
|
||
},
|
||
"title": "Tibber Preisinformationen & Bewertungen"
|
||
}
|