mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-07-27 17:26:48 +00:00
Updated the step value for number fields in the plan_charging service to allow any value instead of a fixed increment. This change enhances flexibility in user input. Impact: Users can now specify any value within the defined range for charging plans. --- refactor(translations): update error message formatting for entity attributes Modified the error messages in multiple translation files to remove curly braces around entity attributes. This improves consistency in message formatting across languages. Impact: Users will see cleaner error messages when attributes are not found.
2518 lines
145 KiB
JSON
2518 lines
145 KiB
JSON
{
|
||
"config": {
|
||
"step": {
|
||
"account_choice": {
|
||
"title": "Konto wählen",
|
||
"description": "Du kannst ein weiteres Zuhause aus einem bestehenden Tibber-Konto hinzufügen oder einen neuen API-Token für ein anderes Konto eingeben.",
|
||
"data": {
|
||
"account_choice": "Konto"
|
||
},
|
||
"submit": "Weiter →"
|
||
},
|
||
"new_token": {
|
||
"title": "API-Token eingeben",
|
||
"description": "Richte Tibber Preisinformationen & Bewertungen ein.\n\nUm einen API-Zugriffstoken zu generieren, besuche [{tibber_url}]({tibber_url}).",
|
||
"data": {
|
||
"access_token": "API-Zugriffstoken"
|
||
},
|
||
"submit": "Token validieren"
|
||
},
|
||
"user": {
|
||
"description": "Richte Tibber Preisinformationen & Bewertungen ein.\n\nUm einen API-Zugriffstoken zu generieren, besuche [{tibber_url}]({tibber_url}).",
|
||
"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": "Zuhause-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 [{tibber_url}]({tibber_url}).",
|
||
"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.",
|
||
"home_already_configured": "Dieses Zuhause ist bereits in einem anderen Eintrag konfiguriert. Jedes Zuhause kann nur einmal konfiguriert werden.",
|
||
"no_active_subscription": "Dieses Zuhause hat keinen aktiven Tibber-Vertrag. Nur Häuser mit aktivem Stromvertrag können zu Home Assistant hinzugefügt werden.",
|
||
"subscription_expired": "Der Tibber-Vertrag für dieses Zuhause ist abgelaufen. Nur Häuser mit aktivem oder zukünftigem Stromvertrag können zu Home Assistant hinzugefügt werden.",
|
||
"future_subscription_warning": "Hinweis: Der Tibber-Vertrag für dieses Zuhause hat noch nicht begonnen. Die Funktionalität ist möglicherweise eingeschränkt, bis der Vertrag aktiv wird."
|
||
},
|
||
"abort": {
|
||
"already_configured": "Alle verfügbaren Tibber-Zuhause sind bereits konfiguriert. Jedes Zuhause kann nur einmal konfiguriert werden.",
|
||
"entry_not_found": "Tibber-Konfigurationseintrag nicht gefunden.",
|
||
"setup_complete": "Einrichtung abgeschlossen! Du kannst zusätzliche Optionen für Tibber Prices in den Integrationsoptionen nach Schließen dieses Dialogs ändern.",
|
||
"reauth_successful": "Neuauthentifizierung erfolgreich. Die Integration wurde mit dem neuen Zugriffstoken aktualisiert."
|
||
}
|
||
},
|
||
"common": {
|
||
"step_progress": "{step_num} / {total_steps}",
|
||
"override_warning_template": "⚠️ {fields} wird durch Konfigurations-Entität gesteuert",
|
||
"override_warning_and": "und",
|
||
"override_field_label_best_price_min_period_length": "Mindestperiodenlänge",
|
||
"override_field_label_best_price_max_level_gap_count": "Lückentoleranz",
|
||
"override_field_label_best_price_flex": "Flexibilität",
|
||
"override_field_label_best_price_min_distance_from_avg": "Mindestabstand",
|
||
"override_field_label_enable_min_periods_best": "Mindestzahl erreichen",
|
||
"override_field_label_min_periods_best": "Mindestperioden",
|
||
"override_field_label_relaxation_attempts_best": "Lockerungsversuche",
|
||
"override_field_label_peak_price_min_period_length": "Mindestperiodenlänge",
|
||
"override_field_label_peak_price_max_level_gap_count": "Lückentoleranz",
|
||
"override_field_label_peak_price_flex": "Flexibilität",
|
||
"override_field_label_peak_price_min_distance_from_avg": "Mindestabstand",
|
||
"override_field_label_enable_min_periods_peak": "Mindestzahl erreichen",
|
||
"override_field_label_min_periods_peak": "Mindestperioden",
|
||
"override_field_label_relaxation_attempts_peak": "Lockerungsversuche"
|
||
},
|
||
"config_subentries": {
|
||
"home": {
|
||
"entry_type": "Zeitreise-Ansicht",
|
||
"initiate_flow": {
|
||
"user": "Zeitreise-Ansicht erstellen"
|
||
},
|
||
"title": "Zeitreise-Ansicht erstellen",
|
||
"step": {
|
||
"user": {
|
||
"title": "Konfigurationseintrag auswählen",
|
||
"description": "Wähle den Konfigurationseintrag aus, für den du eine Zeitreise-Ansicht erstellen möchtest.\n\n**Zeitreise-Ansichten** ermöglichen es dir, historische Preisdaten so anzuzeigen, als wären sie die aktuellen Daten. Dies ist nützlich zum Testen von Automatisierungen oder zur Analyse vergangener Preismuster.",
|
||
"data": {
|
||
"parent_entry_id": "Konfigurationseintrag"
|
||
}
|
||
},
|
||
"time_offset": {
|
||
"title": "Zeitversatz konfigurieren",
|
||
"description": "Konfiguriere, wie weit zurück in der Zeit diese Ansicht reisen soll.\n\n**Empfohlen:** Verwende **≥2 Tage** Versatz, um Konflikte mit \"yesterday\"-Entitäten zu vermeiden, die ebenfalls historische Daten bereitstellen.\n\n**Beispiele:**\n• **-7 Tage**: Zeigt Preise von vor 7 Tagen\n• **-2 Tage, 3 Stunden**: Zeigt Preise von vor 2 Tagen und 3 Stunden\n• **-14 Tage**: Zeigt Preise von vor 2 Wochen",
|
||
"data": {
|
||
"virtual_time_offset_days": "Tage zurück",
|
||
"time_offset": "Zusätzlicher Zeitversatz"
|
||
},
|
||
"data_description": {
|
||
"virtual_time_offset_days": "Wie viele Tage in die Vergangenheit reisen. Slider-Bereich: 0 bis 374 Tage (≈1 Jahr). Empfohlen: ≥2 Tage, um Konflikte mit \"yesterday\"-Entitäten zu vermeiden.",
|
||
"time_offset": "Optionale Feinabstimmung: Füge Stunden und/oder Minuten zum Tagesversatz hinzu. Die Zeit wird automatisch subtrahiert (weiter zurück reisen). Hinweis: Sekunden werden ignoriert - nur minutengenaue Präzision wird unterstützt."
|
||
}
|
||
},
|
||
"init": {
|
||
"title": "Zeitversatz neu konfigurieren",
|
||
"description": "Aktualisiere den Zeitversatz für diese Zeitreise-Ansicht.",
|
||
"data": {
|
||
"virtual_time_offset_days": "Tage zurück",
|
||
"time_offset": "Zusätzlicher Zeitversatz"
|
||
},
|
||
"data_description": {
|
||
"virtual_time_offset_days": "Wie viele Tage in die Vergangenheit reisen. Slider-Bereich: 0 bis 374 Tage (≈1 Jahr). Empfohlen: ≥2 Tage, um Konflikte mit \"yesterday\"-Entitäten zu vermeiden.",
|
||
"time_offset": "Optionale Feinabstimmung: Füge Stunden und/oder Minuten zum Tagesversatz hinzu. Die Zeit wird automatisch subtrahiert (weiter zurück reisen). Hinweis: Sekunden werden ignoriert - nur minutengenaue Präzision wird unterstützt."
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"no_time_offset": "Mindestens ein Zeitversatzwert muss negativ sein (nur historische Daten)."
|
||
},
|
||
"abort": {
|
||
"already_configured": "**Eine Zeitreise-Ansicht mit diesem exakten Zeitversatz existiert bereits.**\n\nBitte wähle einen anderen Versatz.",
|
||
"no_main_entries": "Keine Hauptkonfigurationseinträge gefunden. Füge zuerst ein Tibber-Zuhause hinzu.",
|
||
"parent_entry_not_found": "Ausgewählter Konfigurationseintrag nicht gefunden."
|
||
}
|
||
}
|
||
},
|
||
"options": {
|
||
"step": {
|
||
"init": {
|
||
"menu_options": {
|
||
"general_settings": "⚙️ Allgemeine Einstellungen",
|
||
"display_settings": "💱 Währungsanzeige",
|
||
"current_interval_price_rating": "📊 Preisbewertung",
|
||
"price_level": "🏷️ Preisniveau",
|
||
"volatility": "💨 Preis-Volatilität",
|
||
"best_price": "💚 Bestpreis",
|
||
"peak_price": "🔴 Spitzenpreis",
|
||
"price_trend": "📈 Preistrend",
|
||
"chart_data_export": "📊 Diagrammdaten-Export",
|
||
"reset_to_defaults": "🔄 Auf Werkseinstellungen zurücksetzen",
|
||
"finish": "⬅️ Zurück"
|
||
}
|
||
},
|
||
"general_settings": {
|
||
"title": "⚙️ Allgemeine Einstellungen",
|
||
"description": "**Konfiguriere allgemeine Einstellungen für Tibber-Preisinformationen und -bewertungen.**\n\n---\n\n**Benutzer:** {user_login}",
|
||
"data": {
|
||
"extended_descriptions": "Erweiterte Beschreibungen",
|
||
"average_sensor_display": "Durchschnittsensor-Anzeige"
|
||
},
|
||
"data_description": {
|
||
"extended_descriptions": "Steuert, ob Entitätsattribute ausführliche Erklärungen und Nutzungstipps enthalten.\n\n• Deaktiviert (Standard): Nur kurze Beschreibung\n• Aktiviert: Ausführliche Erklärung + praktische Nutzungsbeispiele\n\nBeispiel:\nDeaktiviert = 1 Attribut\nAktiviert = 2 zusätzliche Attribute",
|
||
"average_sensor_display": "Wähle aus, welcher statistische Wert im Sensorstatus für Durchschnitts-Preissensoren angezeigt wird. Der andere Wert wird als Attribut angezeigt.\n\n• **Median (Standard)**: Zeigt den 'typischen' Preis, resistent gegen Extremwerte - ideal für Anzeige und menschliche Interpretation\n• **Arithmetisches Mittel**: Zeigt den echten mathematischen Durchschnitt inkl. aller Preise - ideal für exakte Kostenberechnungen\n\nFür Automatisierungen nutze das Attribut `price_mean` oder `price_median`, um unabhängig von dieser Einstellung auf beide Werte zuzugreifen."
|
||
},
|
||
"submit": "↩ Speichern & Zurück"
|
||
},
|
||
"display_settings": {
|
||
"title": "💱 Währungsanzeige-Einstellungen",
|
||
"description": "**Konfiguriere, wie Strompreise angezeigt werden - in Basiswährung (€, kr) oder Unterwährungseinheit (ct, øre).**\n\n---",
|
||
"data": {
|
||
"currency_display_mode": "Anzeigemodus"
|
||
},
|
||
"data_description": {
|
||
"currency_display_mode": "Wähle, wie Preise angezeigt werden:\n\n• **Basiswährung** (€/kWh, kr/kWh): Dezimalwerte (z.B. 0,25 €/kWh) - Unterschiede sichtbar ab 3.-4. Nachkommastelle\n• **Unterwährungseinheit** (ct/kWh, øre/kWh): Größere Werte (z.B. 25,00 ct/kWh) - Unterschiede bereits ab 1. Nachkommastelle sichtbar\n\nStandard abhängig von deiner Währung:\n• EUR → Unterwährungseinheit (Cent) - deutsche/niederländische Präferenz\n• NOK/SEK/DKK → Basiswährung (Kronen) - skandinavische Präferenz\n• USD/GBP → Basiswährung\n\n**💡 Tipp:** Bei Auswahl von Unterwährungseinheit kannst du den zusätzlichen Sensor \"Aktueller Strompreis (Energie-Dashboard)\" aktivieren (standardmäßig deaktiviert)."
|
||
},
|
||
"submit": "↩ Speichern & Zurück"
|
||
},
|
||
"current_interval_price_rating": {
|
||
"title": "📊 Preisbewertungs-Einstellungen",
|
||
"description": "**Konfiguriere Schwellenwerte und Stabilisierung für Preisbewertungsstufen (niedrig/normal/hoch) basierend auf dem Vergleich mit dem nachlaufenden 24-Stunden-Durchschnitt.**{entity_warning}",
|
||
"data": {
|
||
"price_rating_threshold_low": "Niedrig-Schwelle",
|
||
"price_rating_threshold_high": "Hoch-Schwelle",
|
||
"price_rating_hysteresis": "Hysterese",
|
||
"price_rating_gap_tolerance": "Lücken-Toleranz"
|
||
},
|
||
"data_description": {
|
||
"price_rating_threshold_low": "Prozentwert, um wie viel der aktuelle Preis unter dem nachlaufenden 24-Stunden-Durchschnitt liegen muss, damit er als 'niedrig' bewertet wird. Beispiel: -10 bedeutet mindestens 10% unter Durchschnitt. Sensoren mit dieser Bewertung zeigen günstige Zeitfenster an. Standard: -10%",
|
||
"price_rating_threshold_high": "Prozentwert, um wie viel der aktuelle Preis über dem nachlaufenden 24-Stunden-Durchschnitt liegen muss, damit er als 'hoch' bewertet wird. Beispiel: 10 bedeutet mindestens 10% über Durchschnitt. Sensoren mit dieser Bewertung warnen vor teuren Zeitfenstern. Standard: 10%",
|
||
"price_rating_hysteresis": "Prozentband um die Schwellenwerte zur Vermeidung schneller Zustandswechsel. Wenn die Bewertung bereits NIEDRIG ist, muss der Preis über (Schwelle + Hysterese) steigen, um zu NORMAL zu wechseln. Ebenso muss bei HOCH der Preis unter (Schwelle - Hysterese) fallen, um den Zustand zu verlassen. Dies sorgt für Stabilität bei Automationen, die auf Bewertungsänderungen reagieren. Auf 0 setzen zum Deaktivieren. Standard: 2%",
|
||
"price_rating_gap_tolerance": "Maximale Anzahl aufeinanderfolgender Intervalle, die 'geglättet' werden können, wenn sie sich von den umgebenden Bewertungen unterscheiden. Kleine isolierte Bewertungsänderungen werden in den dominanten Nachbarblock integriert. Dies sorgt für Stabilität bei Automationen, indem kurze Bewertungsspitzen keine unnötigen Aktionen auslösen. Beispiel: 1 bedeutet, dass ein einzelnes 'normal'-Intervall umgeben von 'hoch'-Intervallen zu 'hoch' korrigiert wird. Auf 0 setzen zum Deaktivieren. Standard: 1"
|
||
},
|
||
"submit": "↩ Speichern & Zurück"
|
||
},
|
||
"price_level": {
|
||
"title": "🏷️ Preisniveau-Einstellungen (von Tibber API)",
|
||
"description": "**Konfiguriere die Stabilisierung für Tibbers Preisniveau-Klassifizierung (sehr günstig/günstig/normal/teuer/sehr teuer).**\n\nTibbers API liefert ein Preisniveau-Feld für jedes Intervall. Diese Einstellung glättet kurze Schwankungen, um Instabilität in Automatisierungen zu verhindern.{entity_warning}",
|
||
"data": {
|
||
"price_level_gap_tolerance": "Gap-Toleranz"
|
||
},
|
||
"data_description": {
|
||
"price_level_gap_tolerance": "Maximale Anzahl aufeinanderfolgender Intervalle, die 'geglättet' werden können, wenn sie von umgebenden Preisniveaus abweichen. Kleine isolierte Niveauänderungen werden mit dem dominanten Nachbarblock zusammengeführt. Beispiel: 1 bedeutet, dass ein einzelnes 'normal'-Intervall, umgeben von 'günstig'-Intervallen, zu 'günstig' korrigiert wird. Auf 0 setzen zum Deaktivieren. Standard: 1"
|
||
},
|
||
"submit": "↩ Speichern & Zurück"
|
||
},
|
||
"best_price": {
|
||
"title": "💚 Bestpreis-Zeitraum Einstellungen",
|
||
"description": "**Konfiguration für den Bestpreis-Zeitraum mit den niedrigsten Strompreisen.**{entity_warning}{override_warning}\n\n---",
|
||
"sections": {
|
||
"period_settings": {
|
||
"name": "Zeitraumdauer & Preisniveaus",
|
||
"description": "Lege fest, wie lange Zeiträume sein sollen und welche Preisniveaus einbezogen werden.",
|
||
"data": {
|
||
"best_price_min_period_length": "Minimale Zeitraumlänge",
|
||
"best_price_max_level": "Preisniveau-Filter",
|
||
"best_price_max_level_gap_count": "Lückentoleranz"
|
||
},
|
||
"data_description": {
|
||
"best_price_min_period_length": "Mindestdauer für einen Zeitraum um als 'Bestpreis' zu gelten. Längere Zeiträume sind praktischer für Geräte wie Geschirrspüler oder Wärmepumpen. Bestpreis-Zeiträume benötigen mindestens 60 Minuten (vs. 30 Minuten für Spitzenlast-Warnungen), da sie aussagekräftige Zeitfenster für die Verbrauchsplanung bieten sollten.",
|
||
"best_price_max_level": "Nur Bestpreis-Zeiträume anzeigen, wenn sie Intervalle mit Preisniveaus ≤ dem ausgewählten Wert enthalten. Beispiel: Auswahl '**Günstig**' bedeutet, der Zeitraum muss mindestens ein '**Sehr günstig**' oder '**Günstig**' Intervall enthalten. Dies stellt sicher, dass 'Bestpreis'-Zeiträume nicht nur relativ billig für den Tag sind, sondern auch absolut günstig. Wähle '**Alle**' um Bestpreise unabhängig vom absoluten Preisniveau anzuzeigen.",
|
||
"best_price_max_level_gap_count": "Maximale Anzahl aufeinanderfolgender Intervalle, die um genau eine Preisstufe vom erforderlichen Niveau abweichen dürfen. Beispiel: Mit '**Günstig**'-Filter und Lückenzähler 1 wird eine Sequenz '**Günstig**, **Günstig**, **Normal**, **Günstig**' akzeptiert (**Normal** ist eine Stufe über **Günstig**). Dies verhindert, dass Zeiträume durch gelegentliche Niveauabweichungen aufgeteilt werden. **Hinweis:** Lückentoleranz erfordert Zeiträume ≥90 Minuten (6 Intervalle), um Ausreißer effektiv zu erkennen. Standard: 0 (strikte Filterung, keine Toleranz)."
|
||
}
|
||
},
|
||
"flexibility_settings": {
|
||
"name": "Flexibilität & Schwellenwerte",
|
||
"description": "Kontrolliere, wie sehr Preise abweichen dürfen und dennoch als 'Bestpreis' gelten.",
|
||
"data": {
|
||
"best_price_flex": "Flexibilität",
|
||
"best_price_min_distance_from_avg": "Mindestabstand"
|
||
},
|
||
"data_description": {
|
||
"best_price_flex": "Maximale Menge über dem Tagesminimumpreis, um noch als 'Bestpreis' zu gelten. Empfohlen: 15-20% mit Lockerung aktiviert (Standard), oder 25-35% ohne Lockerung. Maximum: 50% (Hartgrenze für zuverlässige Zeitraumerkennung).",
|
||
"best_price_min_distance_from_avg": "Stellt sicher, dass Zeiträume erheblich günstiger als der Tagesdurchschnitt sind, nicht nur marginal darunter. Dies filtert Rauschen heraus und verhindert, dass leicht unterdurchschnittliche Zeiträume an flachen Preistagen als 'Bestpreis' markiert werden. Höhere Werte = strengere Filterung (nur wirklich billige Zeiträume gelten). Standard: 5 bedeutet Zeiträume müssen mindestens 5% unter dem Tagesdurchschnitt liegen."
|
||
}
|
||
},
|
||
"relaxation_and_target_periods": {
|
||
"name": "Lockerung & Zielanzahl Zeiträume",
|
||
"description": "Konfiguriere automatische Filterlockerung und Zielanzahl von Zeiträumen. Aktiviere 'Mindestanzahl anstreben' um die Lockerung zu aktivieren.",
|
||
"data": {
|
||
"enable_min_periods_best": "Mindestanzahl anstreben",
|
||
"min_periods_best": "Mindestanzahl Zeiträume",
|
||
"relaxation_attempts_best": "Lockerungsversuche"
|
||
},
|
||
"data_description": {
|
||
"enable_min_periods_best": "Bei Aktivierung werden Filter schrittweise gelockert, wenn nicht genug Zeiträume gefunden werden. Dies versucht, die gewünschte Mindestanzahl von Zeiträumen zu erreichen, was weniger optimale Zeitfenster als Bestpreis-Zeiträume einschließen kann.",
|
||
"min_periods_best": "Mindestanzahl von Bestpreis-Zeiträumen pro Tag, die angestrebt werden sollen. Filter werden schrittweise gelockert, um diese Anzahl zu erreichen. Nur aktiv wenn 'Mindestanzahl anstreben' aktiviert ist. Standard: 1",
|
||
"relaxation_attempts_best": "Wie viele Flexibilitätsstufen (Versuche) zu versuchen sind, bevor aufgegeben wird. Jeder Versuch führt alle Filterkombinationen auf der neuen Flexibilitätsstufe aus. Mehr Versuche erhöhen die Chance, zusätzliche Zeiträume zu finden, kosten aber mehr Verarbeitungszeit."
|
||
}
|
||
},
|
||
"extension_settings": {
|
||
"name": "Periodenrand-Erweiterung",
|
||
"description": "Erkannte Bestpreisperioden optional an beiden Rändern erweitern, um angrenzende sehr günstige Intervalle aufzunehmen.",
|
||
"data": {
|
||
"best_price_extend_to_very_cheap": "Auf sehr günstige Intervalle erweitern",
|
||
"best_price_max_extension_intervals": "Maximale Erweiterungsintervalle",
|
||
"best_price_geometric_flex": "Geometrischer Flex-Bonus",
|
||
"best_price_segment_forcing": "W-Form-Segment-Erzwingung",
|
||
"best_price_segment_min_periods": "Perioden pro Segment"
|
||
},
|
||
"data_description": {
|
||
"best_price_extend_to_very_cheap": "Wenn aktiviert, erweitern sich erkannte Bestpreisperioden nach außen, um angrenzende Intervalle mit dem Preisniveau 'Sehr günstig' aufzunehmen. So werden extrem günstige Intervalle an den Rändern erkannter Perioden besser erfasst.",
|
||
"best_price_max_extension_intervals": "Maximale Anzahl zusätzlicher Intervalle pro Seite (linker und rechter Rand). Jedes Intervall dauert 15 Minuten. Beispiel: 4 Intervalle = bis zu 1 Stunde Erweiterung pro Rand. Standard: 4",
|
||
"best_price_geometric_flex": "Zusätzlicher Flex-Prozentsatz für Intervalle, die in ein erkanntes Preistal (V-Form) fallen. Wenn für den Tag ein Tal-Muster erkannt wird, erhalten Intervalle innerhalb der Talzone diese zusätzliche Toleranz, damit der Periodendetektor sie eher einschließt. 0 = deaktiviert. Standard: 0",
|
||
"best_price_segment_forcing": "Wenn aktiviert, werden Tage mit W-förmigem Preiskurve (zwei Täler, getrennt durch einen zentralen Gipfel) an diesem Gipfel geteilt. Die Periodenerkennung läuft unabhängig für jede Talseite, um sicherzustellen, dass jedes Tal die erforderliche Anzahl von Perioden erhält.",
|
||
"best_price_segment_min_periods": "Mindestanzahl erforderlicher Bestpreisperioden pro Talseite bei aktivierter W-Form-Segment-Erzwingung. Jede Seite muss unabhängig mindestens diese Anzahl Perioden liefern. Standard: 1"
|
||
}
|
||
}
|
||
},
|
||
"submit": "↩ Speichern & Zurück"
|
||
},
|
||
"peak_price": {
|
||
"title": "🔴 Spitzenpreis-Zeitraum Einstellungen",
|
||
"description": "**Konfiguration für den Spitzenpreis-Zeitraum mit den höchsten Strompreisen.**{entity_warning}{override_warning}\n\n---",
|
||
"sections": {
|
||
"period_settings": {
|
||
"name": "Zeitraum-Einstellungen",
|
||
"description": "Konfiguriere Zeitraumlänge und Preisniveau-Einschränkungen.",
|
||
"data": {
|
||
"peak_price_min_period_length": "Minimale Zeitraumlänge",
|
||
"peak_price_min_level": "Preisniveau-Filter",
|
||
"peak_price_max_level_gap_count": "Lückentoleranz"
|
||
},
|
||
"data_description": {
|
||
"peak_price_min_period_length": "Minimale Dauer, damit ein Zeitraum als 'Spitzenpreis' gilt. Spitzenpreis-Warnungen sind für kürzere Zeiträume zulässig (mindestens 30 Minuten im Vergleich zu 60 Minuten für Bestpreis), da kurze teure Spitzen eine Warnung wert sind, auch wenn sie für die Verbrauchsplanung zu kurz sind.",
|
||
"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. **Hinweis:** Lückentoleranz erfordert Zeiträume ≥90 Minuten (6 Intervalle), um Ausreißer effektiv zu erkennen. Standard: 0 (strenge Filterung, keine Toleranz)."
|
||
}
|
||
},
|
||
"flexibility_settings": {
|
||
"name": "Flexibilitäts-Einstellungen",
|
||
"description": "Konfiguriere Preisvergleich-Schwellenwerte und Filterung.",
|
||
"data": {
|
||
"peak_price_flex": "Flexibilität",
|
||
"peak_price_min_distance_from_avg": "Mindestabstand"
|
||
},
|
||
"data_description": {
|
||
"peak_price_flex": "Maximal unter dem täglichen Höchstpreis, bei dem Intervalle noch als 'Spitzenpreis' qualifizieren. Empfehlung: -15 bis -20 mit aktivierter Lockerung (Standard), oder -25 bis -35 ohne Lockerung. Maximum: -50 (harte Grenze für zuverlässige Zeitraumerkennung). Hinweis: Negative Werte zeigen den Abstand unter dem Maximum an.",
|
||
"peak_price_min_distance_from_avg": "Stellt sicher, dass Zeiträume signifikant teurer als der Tagesdurchschnitt sind, nicht nur geringfügig darüber. Dies filtert Rauschen und verhindert, dass leicht überdurchschnittliche Zeiträume an Tagen mit flachen Preisen als 'Spitzenpreis' markiert werden. Höhere Werte = strengere Filterung (nur wirklich teure Zeiträume qualifizieren). Standard: 5 bedeutet, Zeiträume müssen mindestens 5% über dem Tagesdurchschnitt liegen."
|
||
}
|
||
},
|
||
"relaxation_and_target_periods": {
|
||
"name": "Lockerung & Zielzeiträume",
|
||
"description": "Konfiguriere automatische Filter-Lockerung und Zielzeiträume. Aktiviere 'Mindestanzahl anstreben' um Lockerung zu aktivieren.",
|
||
"data": {
|
||
"enable_min_periods_peak": "Mindestanzahl anstreben",
|
||
"min_periods_peak": "Mindestanzahl Zeiträume",
|
||
"relaxation_attempts_peak": "Lockerungsversuche"
|
||
},
|
||
"data_description": {
|
||
"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_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."
|
||
}
|
||
},
|
||
"extension_settings": {
|
||
"name": "Periodenrand-Erweiterung",
|
||
"description": "Erkannte Spitzenpreisperioden optional an beiden Rändern erweitern, um angrenzende sehr teure Intervalle aufzunehmen.",
|
||
"data": {
|
||
"peak_price_extend_to_very_expensive": "Auf sehr teure Intervalle erweitern",
|
||
"peak_price_max_extension_intervals": "Maximale Erweiterungsintervalle",
|
||
"peak_price_geometric_flex": "Geometrischer Flex-Bonus",
|
||
"peak_price_segment_forcing": "M-Form-Segment-Erzwingung",
|
||
"peak_price_segment_min_periods": "Perioden pro Segment"
|
||
},
|
||
"data_description": {
|
||
"peak_price_extend_to_very_expensive": "Wenn aktiviert, erweitern sich erkannte Spitzenpreisperioden nach außen, um angrenzende Intervalle mit dem Preisniveau 'Sehr teuer' aufzunehmen. So werden extrem teure Intervalle an den Rändern erkannter Perioden besser erfasst.",
|
||
"peak_price_max_extension_intervals": "Maximale Anzahl zusätzlicher Intervalle pro Seite (linker und rechter Rand). Jedes Intervall dauert 15 Minuten. Beispiel: 4 Intervalle = bis zu 1 Stunde Erweiterung pro Rand. Standard: 4",
|
||
"peak_price_geometric_flex": "Zusätzlicher Flex-Prozentsatz für Intervalle, die in einen erkannten Preisplateau (Λ-Form) fallen. Wenn für den Tag ein Gipfel-Muster erkannt wird, erhalten Intervalle innerhalb der Gipfelzone diese zusätzliche Toleranz, damit der Periodendetektor sie eher einschließt. 0 = deaktiviert. Standard: 0",
|
||
"peak_price_segment_forcing": "Wenn aktiviert, werden Tage mit M-förmigem Preiskurve (zwei Gipfel, getrennt durch ein zentrales Tal) an diesem Tal geteilt. Die Periodenerkennung läuft unabhängig für jede Gipfelseite, um sicherzustellen, dass jeder Gipfel die erforderliche Anzahl von Perioden erhält.",
|
||
"peak_price_segment_min_periods": "Mindestanzahl erforderlicher Spitzenpreisperioden pro Gipfelseite bei aktivierter M-Form-Segment-Erzwingung. Jede Seite muss unabhängig mindestens diese Anzahl Perioden liefern. Standard: 1"
|
||
}
|
||
}
|
||
},
|
||
"submit": "↩ Speichern & Zurück"
|
||
},
|
||
"price_trend": {
|
||
"title": "📈 Preistrend-Schwellenwerte",
|
||
"description": "**Konfiguriere 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.\n\n**5-Stufen-Skala:** Nutzt stark_fallend (-2), fallend (-1), stabil (0), steigend (+1), stark_steigend (+2) für Automations-Vergleiche über das trend_value Attribut.{entity_warning}",
|
||
"data": {
|
||
"price_trend_threshold_rising": "Steigend-Schwelle",
|
||
"price_trend_threshold_strongly_rising": "Stark steigend-Schwelle",
|
||
"price_trend_threshold_falling": "Fallend-Schwelle",
|
||
"price_trend_threshold_strongly_falling": "Stark fallend-Schwelle",
|
||
"price_trend_change_confirmation": "Trendwechsel-Bestätigung",
|
||
"price_trend_min_price_change": "Mind. Preisänderung (Trend)",
|
||
"price_trend_min_price_change_strongly": "Mind. Preisänderung (Starker Trend)"
|
||
},
|
||
"data_description": {
|
||
"price_trend_threshold_rising": "Prozentwert, um wie viel der Durchschnitt der nächsten N Stunden über dem aktuellen Preis liegen muss, damit der Trend als 'steigend' gilt. Beispiel: 3 bedeutet Durchschnitt ist mindestens 3% höher → Preise werden steigen. Typische Werte: 3-10%. Standard: 3%",
|
||
"price_trend_threshold_strongly_rising": "Prozentwert für 'stark steigend'-Trend. Muss höher sein als die steigend-Schwelle. Beispiel: 9 bedeutet Durchschnitt ist mindestens 9% höher → Preise werden deutlich steigen. Typische Werte: 6-20%. Standard: 9%",
|
||
"price_trend_threshold_falling": "Prozentwert (negativ), um wie viel der Durchschnitt der nächsten N Stunden unter dem aktuellen Preis liegen muss, damit der Trend als 'fallend' gilt. Beispiel: -3 bedeutet Durchschnitt ist mindestens 3% niedriger → Preise werden fallen. Typische Werte: -3 bis -10%. Standard: -3%",
|
||
"price_trend_threshold_strongly_falling": "Prozentwert (negativ) für 'stark fallend'-Trend. Muss niedriger (negativer) sein als die fallend-Schwelle. Beispiel: -9 bedeutet Durchschnitt ist mindestens 9% niedriger → Preise werden deutlich fallen. Typische Werte: -6 bis -20%. Standard: -9%",
|
||
"price_trend_change_confirmation": "Anzahl aufeinanderfolgender 15-Minuten-Intervalle, die eine neue Trendrichtung bestätigen müssen, bevor ein Trendwechsel gemeldet wird. Höhere Werte bedeuten mehr Stabilität und weniger Fehlsignale, niedrigere Werte bedeuten schnellere Erkennung. Bereich: 2 (30 min) bis 6 (90 min). Standard: 3 (45 min)",
|
||
"price_trend_min_price_change": "Mindest-Preisdifferenz (in ct/øre), die für einen 'steigend'- oder 'fallend'-Trend erforderlich ist. Verhindert, dass minimale Preisänderungen bei niedrigem Preisniveau Trends auslösen. Auf 0 setzen zum Deaktivieren (reiner Prozentmodus). Standard: 0,5",
|
||
"price_trend_min_price_change_strongly": "Mindest-Preisdifferenz (in ct/øre), die für einen 'stark steigend'- oder 'stark fallend'-Trend erforderlich ist. Sollte höher als das reguläre Trend-Minimum sein. Auf 0 setzen zum Deaktivieren. Standard: 1,5"
|
||
},
|
||
"submit": "↩ Speichern & Zurück"
|
||
},
|
||
"volatility": {
|
||
"title": "💨 Volatilität Schwellenwerte",
|
||
"description": "**Konfiguriere 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){entity_warning}",
|
||
"data": {
|
||
"volatility_threshold_moderate": "Moderat-Schwelle",
|
||
"volatility_threshold_high": "Hoch-Schwelle",
|
||
"volatility_threshold_very_high": "Sehr hoch-Schwelle"
|
||
},
|
||
"data_description": {
|
||
"volatility_threshold_moderate": "Variationskoeffizient (VK) ab dem Preise als 'moderat volatil' gelten. VK = (Standardabweichung / Durchschnitt) × 100%. Beispiel: 15 bedeutet Preisschwankungen von ±15% um den Durchschnitt. Sensoren zeigen diese Klassifizierung an, Trend-Sensoren werden empfindlicher. Standard: 15%",
|
||
"volatility_threshold_high": "Variationskoeffizient (VK) ab dem Preise als 'hoch volatil' gelten. Beispiel: 30 bedeutet Preisschwankungen von ±30% um den Durchschnitt. Größere Preissprünge erwartet, Trend-Sensoren werden weniger empfindlich. Standard: 30%",
|
||
"volatility_threshold_very_high": "Variationskoeffizient (VK) ab dem Preise als 'sehr hoch volatil' gelten. Beispiel: 50 bedeutet extreme Preisschwankungen von ±50% um den Durchschnitt. An solchen Tagen sind starke Preisspitzen wahrscheinlich. Standard: 50%"
|
||
},
|
||
"submit": "↩ Speichern & Zurück"
|
||
},
|
||
"chart_data_export": {
|
||
"title": "📊 Chart-Daten-Export-Sensor",
|
||
"description": "Der Chart Data Export Sensor stellt Preisdaten als Sensor-Attribute zur Verfügung.\n\n⚠️ **Hinweis:** Dieser Sensor ist ein Legacy-Feature für Kompatibilität mit älteren Tools.\n\n**Für neue Setups empfohlen:** Nutze den `tibber_prices.get_chartdata` **Service direkt** - er ist flexibler, effizienter und der moderne Home Assistant-Ansatz.\n\n**Wann dieser Sensor sinnvoll ist:**\n\n✅ Dein Dashboard-Tool kann **nur** Attribute lesen (keine Service-Aufrufe)\n✅ Du brauchst statische Daten, die automatisch aktualisiert werden\n❌ **Nicht für Automationen:** Nutze dort direkt `tibber_prices.get_chartdata` - flexibler und effizienter!\n\n---\n\n{sensor_status_info}",
|
||
"submit": "↩ Ok & Zurück"
|
||
},
|
||
"reset_to_defaults": {
|
||
"title": "🔄 Auf Werkseinstellungen zurücksetzen",
|
||
"description": "⚠️ **Warnung:** Dies setzt **ALLE** Einstellungen auf Werkseinstellungen zurück.\n\n**Was wird zurückgesetzt:**\n• Alle Preisbewertungs-Schwellwerte\n• Alle Volatilitäts-Schwellwerte\n• Alle Preistrend-Schwellwerte\n• Alle Einstellungen für Best-Price-Perioden\n• Alle Einstellungen für Peak-Price-Perioden\n• Anzeigeeinstellungen\n• Allgemeine Einstellungen\n\n**Was wird NICHT zurückgesetzt:**\n• Dein Tibber API-Token\n• Ausgewähltes Zuhause\n• Währung\n\n**💡 Tipp:** Nützlich, wenn du nach dem Experimentieren mit Einstellungen neu beginnen möchtest.",
|
||
"data": {
|
||
"confirm_reset": "Ja, alles auf Werkseinstellungen zurücksetzen"
|
||
},
|
||
"submit": "Jetzt zurücksetzen"
|
||
}
|
||
},
|
||
"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.",
|
||
"invalid_period_length": "Die Periodenlänge muss mindestens 15 Minuten betragen (Vielfache von 15).",
|
||
"invalid_flex": "Flexibilitätsprozentsatz muss zwischen -50% und +50% liegen",
|
||
"invalid_best_price_distance": "Distanzprozentsatz muss zwischen -50% und 0% liegen (negativ = unter Durchschnitt)",
|
||
"invalid_peak_price_distance": "Distanzprozentsatz muss zwischen 0% und 50% liegen (positiv = über Durchschnitt)",
|
||
"invalid_min_periods": "Mindestanzahl der Zeiträume muss zwischen 1 und 10 liegen",
|
||
"invalid_gap_count": "Lückentoleranz muss zwischen 0 und 8 liegen",
|
||
"invalid_relaxation_attempts": "Lockerungsversuche müssen zwischen 1 und 12 liegen",
|
||
"invalid_price_rating_low": "Untere Preis-Bewertungsschwelle muss zwischen -50% und -5% liegen",
|
||
"invalid_price_rating_high": "Obere Preis-Bewertungsschwelle muss zwischen 5% und 50% liegen",
|
||
"invalid_price_rating_thresholds": "Untere Schwelle muss kleiner als obere Schwelle sein",
|
||
"invalid_volatility_threshold_moderate": "Moderate Volatilitätsschwelle muss zwischen 5% und 25% liegen",
|
||
"invalid_volatility_threshold_high": "Hohe Volatilitätsschwelle muss zwischen 20% und 40% liegen",
|
||
"invalid_volatility_threshold_very_high": "Sehr hohe Volatilitätsschwelle muss zwischen 35% und 80% liegen",
|
||
"invalid_volatility_thresholds": "Schwellenwerte müssen aufsteigend sein: moderat < hoch < sehr hoch",
|
||
"invalid_price_trend_rising": "Steigender Trendschwellenwert muss zwischen 1% und 50% liegen",
|
||
"invalid_price_trend_falling": "Fallender Trendschwellenwert muss zwischen -50% und -1% liegen",
|
||
"invalid_price_trend_strongly_rising": "Stark steigender Trendschwellenwert muss zwischen 2% und 100% liegen",
|
||
"invalid_price_trend_strongly_falling": "Stark fallender Trendschwellenwert muss zwischen -100% und -2% liegen",
|
||
"invalid_trend_strongly_rising_less_than_rising": "Stark steigend-Schwelle muss größer als steigend-Schwelle sein",
|
||
"invalid_trend_strongly_falling_greater_than_falling": "Stark fallend-Schwelle muss kleiner (negativer) als fallend-Schwelle sein"
|
||
},
|
||
"abort": {
|
||
"entry_not_found": "Tibber Konfigurationseintrag nicht gefunden.",
|
||
"reset_cancelled": "Zurücksetzen abgebrochen. Es wurden keine Änderungen an deiner Konfiguration vorgenommen.",
|
||
"reset_successful": "✅ Alle Einstellungen wurden auf Werkseinstellungen zurückgesetzt. Deine Konfiguration ist jetzt wie bei einer frischen Installation.",
|
||
"finished": "Konfiguration abgeschlossen."
|
||
}
|
||
},
|
||
"entity": {
|
||
"sensor": {
|
||
"current_interval_price": {
|
||
"name": "Aktueller Strompreis"
|
||
},
|
||
"current_interval_price_base": {
|
||
"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_outlook_1h": {
|
||
"name": "Preisausblick (1h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_outlook_2h": {
|
||
"name": "Preisausblick (2h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_outlook_3h": {
|
||
"name": "Preisausblick (3h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_outlook_4h": {
|
||
"name": "Preisausblick (4h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_outlook_5h": {
|
||
"name": "Preisausblick (5h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_outlook_6h": {
|
||
"name": "Preisausblick (6h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_outlook_8h": {
|
||
"name": "Preisausblick (8h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_outlook_12h": {
|
||
"name": "Preisausblick (12h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_trajectory_2h": {
|
||
"name": "Preisverlauf (2h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_trajectory_3h": {
|
||
"name": "Preisverlauf (3h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_trajectory_4h": {
|
||
"name": "Preisverlauf (4h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_trajectory_5h": {
|
||
"name": "Preisverlauf (5h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_trajectory_6h": {
|
||
"name": "Preisverlauf (6h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_trajectory_8h": {
|
||
"name": "Preisverlauf (8h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"price_trajectory_12h": {
|
||
"name": "Preisverlauf (12h)",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"current_price_trend": {
|
||
"name": "Aktueller Preistrend",
|
||
"state": {
|
||
"strongly_rising": "Stark steigend",
|
||
"rising": "Steigend",
|
||
"stable": "Stabil",
|
||
"falling": "Fallend",
|
||
"strongly_falling": "Stark fallend"
|
||
}
|
||
},
|
||
"next_price_trend_change": {
|
||
"name": "Nächste Trendänderung"
|
||
},
|
||
"next_price_trend_change_in": {
|
||
"name": "Nächste Trendänderung in"
|
||
},
|
||
"daily_rating": {
|
||
"name": "Tägliche Preisbewertung"
|
||
},
|
||
"monthly_rating": {
|
||
"name": "Monatliche Preisbewertung"
|
||
},
|
||
"data_lifecycle_status": {
|
||
"name": "Datenlebenszyklus-Status",
|
||
"state": {
|
||
"cached": "Zwischengespeichert",
|
||
"fresh": "Frisch",
|
||
"refreshing": "Aktualisiere",
|
||
"searching_tomorrow": "Suche Morgendaten",
|
||
"turnover_pending": "Mitternachtswechsel steht bevor",
|
||
"error": "Fehler"
|
||
}
|
||
},
|
||
"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"
|
||
},
|
||
"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"
|
||
}
|
||
},
|
||
"day_pattern_yesterday": {
|
||
"name": "Preismuster Gestern",
|
||
"state": {
|
||
"valley": "Tal",
|
||
"peak": "Gipfel",
|
||
"double_dip": "Doppelmulde",
|
||
"duck_curve": "Entenkurve",
|
||
"flat": "Flach",
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"mixed": "Gemischt"
|
||
}
|
||
},
|
||
"day_pattern_today": {
|
||
"name": "Preismuster Heute",
|
||
"state": {
|
||
"valley": "Tal",
|
||
"peak": "Gipfel",
|
||
"double_dip": "Doppelmulde",
|
||
"duck_curve": "Entenkurve",
|
||
"flat": "Flach",
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"mixed": "Gemischt"
|
||
}
|
||
},
|
||
"day_pattern_tomorrow": {
|
||
"name": "Preismuster Morgen",
|
||
"state": {
|
||
"valley": "Tal",
|
||
"peak": "Gipfel",
|
||
"double_dip": "Doppelmulde",
|
||
"duck_curve": "Entenkurve",
|
||
"flat": "Flach",
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"mixed": "Gemischt"
|
||
}
|
||
},
|
||
"current_price_phase": {
|
||
"name": "Aktuelle Preisphase",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"flat": "Flach"
|
||
}
|
||
},
|
||
"next_price_phase": {
|
||
"name": "Nächste Preisphase",
|
||
"state": {
|
||
"rising": "Steigend",
|
||
"falling": "Fallend",
|
||
"flat": "Flach"
|
||
}
|
||
},
|
||
"current_price_phase_end_time": {
|
||
"name": "Aktuelle Phase Endzeit"
|
||
},
|
||
"current_price_phase_remaining_minutes": {
|
||
"name": "Aktuelle Phase verbleibend"
|
||
},
|
||
"current_price_phase_duration": {
|
||
"name": "Aktuelle Phase Dauer"
|
||
},
|
||
"current_price_phase_progress": {
|
||
"name": "Aktuelle Phase Fortschritt"
|
||
},
|
||
"next_rising_phase_start_time": {
|
||
"name": "Nächste steigende Phase Start"
|
||
},
|
||
"next_falling_phase_start_time": {
|
||
"name": "Nächste fallende Phase Start"
|
||
},
|
||
"next_flat_phase_start_time": {
|
||
"name": "Nächste flache Phase Start"
|
||
},
|
||
"next_rising_phase_in_minutes": {
|
||
"name": "Zeit bis nächste steigende Phase"
|
||
},
|
||
"next_falling_phase_in_minutes": {
|
||
"name": "Zeit bis nächste fallende Phase"
|
||
},
|
||
"next_flat_phase_in_minutes": {
|
||
"name": "Zeit bis nächste flache Phase"
|
||
},
|
||
"chart_data_export": {
|
||
"name": "Diagramm-Datenexport",
|
||
"state": {
|
||
"pending": "Ausstehend",
|
||
"ready": "Bereit",
|
||
"error": "Fehler"
|
||
}
|
||
},
|
||
"chart_metadata": {
|
||
"name": "Diagramm-Metadaten",
|
||
"state": {
|
||
"pending": "Ausstehend",
|
||
"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": "Vorheriger Preisrang (heute)"
|
||
},
|
||
"previous_interval_price_rank_today_tomorrow": {
|
||
"name": "Vorheriger 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": {
|
||
"peak_price_period": {
|
||
"name": "Spitzenpreis-Zeitraum"
|
||
},
|
||
"best_price_period": {
|
||
"name": "Bestpreis-Zeitraum"
|
||
},
|
||
"in_rising_price_phase": {
|
||
"name": "In steigender Preisphase"
|
||
},
|
||
"in_falling_price_phase": {
|
||
"name": "In fallender Preisphase"
|
||
},
|
||
"in_flat_price_phase": {
|
||
"name": "In flacher Preisphase"
|
||
},
|
||
"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"
|
||
}
|
||
},
|
||
"number": {
|
||
"best_price_flex_override": {
|
||
"name": "Bestpreis: Flexibilität"
|
||
},
|
||
"best_price_min_distance_override": {
|
||
"name": "Bestpreis: Mindestabstand"
|
||
},
|
||
"best_price_min_period_length_override": {
|
||
"name": "Bestpreis: Mindestperiodenlänge"
|
||
},
|
||
"best_price_min_periods_override": {
|
||
"name": "Bestpreis: Mindestperioden"
|
||
},
|
||
"best_price_relaxation_attempts_override": {
|
||
"name": "Bestpreis: Lockerungsversuche"
|
||
},
|
||
"best_price_gap_count_override": {
|
||
"name": "Bestpreis: Lückentoleranz"
|
||
},
|
||
"peak_price_flex_override": {
|
||
"name": "Spitzenpreis: Flexibilität"
|
||
},
|
||
"peak_price_min_distance_override": {
|
||
"name": "Spitzenpreis: Mindestabstand"
|
||
},
|
||
"peak_price_min_period_length_override": {
|
||
"name": "Spitzenpreis: Mindestperiodenlänge"
|
||
},
|
||
"peak_price_min_periods_override": {
|
||
"name": "Spitzenpreis: Mindestperioden"
|
||
},
|
||
"peak_price_relaxation_attempts_override": {
|
||
"name": "Spitzenpreis: Lockerungsversuche"
|
||
},
|
||
"peak_price_gap_count_override": {
|
||
"name": "Spitzenpreis: Lückentoleranz"
|
||
}
|
||
},
|
||
"switch": {
|
||
"best_price_enable_relaxation_override": {
|
||
"name": "Bestpreis: Mindestanzahl erreichen"
|
||
},
|
||
"peak_price_enable_relaxation_override": {
|
||
"name": "Spitzenpreis: Mindestanzahl erreichen"
|
||
}
|
||
}
|
||
},
|
||
"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."
|
||
},
|
||
"tomorrow_data_missing": {
|
||
"title": "Preisdaten für morgen fehlen für {home_name}",
|
||
"description": "Die Strompreisdaten für morgen sind nach {warning_hour}:00 Uhr immer noch nicht verfügbar. Das ist ungewöhnlich, da Tibber normalerweise die Preise für morgen am Nachmittag veröffentlicht (ca. 13:00-14:00 Uhr MEZ).\n\nMögliche Ursachen:\n- Tibber hat die Preise für morgen noch nicht veröffentlicht\n- Temporäre API-Probleme\n- Dein Stromanbieter hat die Preise noch nicht an Tibber übermittelt\n\nDieses Problem löst sich automatisch, sobald die Daten für morgen verfügbar sind. Falls dies nach 20:00 Uhr weiterhin besteht, prüfe bitte die Tibber-App oder kontaktiere den Tibber-Support."
|
||
},
|
||
"rate_limit_exceeded": {
|
||
"title": "API-Ratenlimit erreicht für {home_name}",
|
||
"description": "Die Tibber-API hat diese Integration nach {error_count} aufeinanderfolgenden Fehlern ratenlimitiert. Das bedeutet, dass Anfragen zu häufig gestellt werden.\n\nDie Integration wird automatisch mit zunehmenden Verzögerungen erneut versuchen. Dieses Problem löst sich, sobald das Ratenlimit abläuft.\n\nFalls dies mehrere Stunden anhält, überprüfe:\n- Ob mehrere Home Assistant Instanzen denselben API-Token verwenden\n- Ob andere Anwendungen deinen Tibber-API-Token stark nutzen\n- Die Update-Frequenz reduzieren, falls du sie angepasst hast"
|
||
},
|
||
"api_outage": {
|
||
"title": "Tibber-API nicht erreichbar für {home_name}",
|
||
"description": "Seit {since} wurden keine aktuellen Preisdaten mehr von Tibber empfangen. Die Integration verwendet weiterhin lokal zwischengespeicherte Preise, sofern verfügbar, sodass deine Sensoren möglicherweise weiterarbeiten - sie können aber unverfügbar werden, wenn der Ausfall andauert (z. B. könnten die Preise für morgen fehlen).\n\nUrsache ist meist ein vorübergehender Tibber-Ausfall oder ein Netzwerkproblem. Die Integration versucht es bei jedem Update-Zyklus automatisch erneut und löst dieses Problem, sobald wieder frische Daten eintreffen.\n\nFalls dies anhält, überprüfe den Tibber-Dienststatus, deine Internetverbindung und ob dein API-Token noch gültig ist (ggf. neu anmelden)."
|
||
},
|
||
"home_not_found": {
|
||
"title": "Zuhause {home_name} nicht im Tibber-Konto gefunden",
|
||
"description": "Das in dieser Integration konfigurierte Zuhause (Eintrag-ID: {entry_id}) ist nicht mehr in deinem Tibber-Konto verfügbar. Dies passiert normalerweise, wenn:\n- Das Zuhause aus deinem Tibber-Konto gelöscht wurde\n- Das Zuhause zu einem anderen Tibber-Konto verschoben wurde\n- Der Zugriff auf dieses Zuhause widerrufen wurde\n\nBitte entferne diesen Integrationseintrag und füge ihn erneut hinzu, falls das Zuhause weiterhin überwacht werden soll. Um diesen Eintrag zu entfernen, gehe zu Einstellungen → Geräte & Dienste → Tibber Prices und lösche die Konfiguration {home_name}."
|
||
},
|
||
"entity_migration": {
|
||
"title": "Tibber Prices: Aktion nach Update erforderlich ({home_name})",
|
||
"description": "Dieses Update enthält Breaking Changes, die automatisch angewendet wurden.\n\n**Umbenannte Entitäten ({count})**\n\nDie folgenden Entity-Keys wurden umbenannt. Deine bestehenden Entity-IDs und Automationen bleiben erhalten:\n\n{entity_list}\n\n**Geänderte Dauer-Sensorwerte**\n\nAlle Dauer-Sensoren (verbleibende Zeit, startet in, Periodendauer, Trendänderungs-Countdown) geben ihren Zustandswert jetzt in **Minuten** statt Stunden an. Die Anzeigeeinheit in Dashboards bleibt standardmäßig Stunden.\n\nWenn du Automationen mit numerischen Vergleichen auf diesen Sensoren hast, aktualisiere deine Schwellwerte:\n- Alt: `state < 0.25` (15 Minuten als Stunden)\n- Neu: `state < 15` (15 Minuten)\n\nSchließe diesen Hinweis, nachdem du deine Automationen überprüft hast."
|
||
},
|
||
"currency_display_mode_changed": {
|
||
"title": "Währungsanzeigeeinheit für {home_name} geändert",
|
||
"description": "Du hast den Währungsanzeigemodus für **{home_name}** geändert. Alle Preissensor-Werte und -Attribute verwenden jetzt die neue Einheit (z.B. 25,34 ct → 0,2534 € oder umgekehrt).\n\nDer Recorder von Home Assistant zeigt separat einen Dialog **„Die Einheit hat sich geändert“** für betroffene Sensoren — das kann einige Minuten dauern oder bis zum nächsten Statistik-Durchlauf (Warnungen im Log erscheinen früher). Wähle dann **Alle alten Statistikdaten löschen** für einen sauberen Neustart. Wähle nicht „Einheit aktualisieren ohne Konvertierung“: das benennt die alten Zahlen nur um, ohne die Werte anzupassen, und macht die historischen Daten inhaltlich falsch.\n\n**Manuell prüfen:**\n\n1. **Automationen & Templates:** Aktualisiere alle Automationen und Template-Sensoren mit numerischen Preis-Schwellwerten.\n2. **Dashboard-Karten:** Aktualisiere alle Karten mit fest codierten Schwellwerten oder Einheitenbezeichnungen.\n\nSchließe diese Meldung, sobald du deine Automationen, Dashboards und Statistiken überprüft hast."
|
||
}
|
||
},
|
||
"exceptions": {
|
||
"no_entries_found": {
|
||
"message": "Keine Tibber Prices Integrationseinträge gefunden. Bitte richte die Integration zuerst ein."
|
||
},
|
||
"multiple_entries_no_entry_id": {
|
||
"message": "Mehrere Tibber Prices Einträge gefunden. Bitte gib 'entry_id' an, um den gewünschten Eintrag auszuwählen."
|
||
},
|
||
"invalid_entry_id": {
|
||
"message": "Ungültige oder nicht verfügbare Konfigurations-Entry. Bitte überprüfe die Entry-ID und stelle sicher, dass die Integration geladen ist."
|
||
},
|
||
"missing_home_id": {
|
||
"message": "Home-ID nicht im Konfigurationseintrag gefunden. Bitte konfiguriere die Integration neu."
|
||
},
|
||
"user_data_not_available": {
|
||
"message": "Benutzerdaten sind noch nicht verfügbar. Bitte warte, bis das erste Datenupdate abgeschlossen ist."
|
||
},
|
||
"timezone_not_found": {
|
||
"message": "Zeitzone des Zuhauses konnte nicht ermittelt werden. Bitte überprüfe die Konfiguration in deinem Tibber-Konto."
|
||
},
|
||
"end_before_start": {
|
||
"message": "Der Endzeitpunkt ({search_end}) muss nach dem Startzeitpunkt ({search_start}) liegen. Überprüfe die Zeit-Parameter und eventuelle Day-Offsets."
|
||
},
|
||
"price_fetch_failed": {
|
||
"message": "Preisdaten für den angeforderten Suchbereich konnten nicht abgerufen werden."
|
||
},
|
||
"invalid_search_scope": {
|
||
"message": "Ungültiger Suchbereich. Gültige Werte sind: today, tomorrow, remaining_today, next_24h, next_48h."
|
||
},
|
||
"scope_conflicts_with_range": {
|
||
"message": "search_scope kann nicht mit expliziten Bereichsparametern kombiniert werden: {params}. Verwende entweder search_scope ODER explizite Start-/Endparameter."
|
||
},
|
||
"day_offset_requires_time": {
|
||
"message": "{offset_param} erfordert, dass {time_param} gesetzt ist. Der Tagesoffset ändert nur das Datum eines expliziten Zeitparameters."
|
||
},
|
||
"min_level_exceeds_max": {
|
||
"message": "min_price_level {min_level} ist höher als max_price_level {max_level}. Das Mindestlevel muss gleich oder niedriger als das Maximallevel sein."
|
||
},
|
||
"power_profile_length_mismatch": {
|
||
"message": "power_profile hat {profile_length} Einträge, aber die Dauer erfordert {interval_count} Intervalle ({duration_minutes} Minuten). Das power_profile muss genau einen Eintrag pro 15-Minuten-Intervall haben."
|
||
},
|
||
"level_and_rating_filter_conflict": {
|
||
"message": "level_filter und rating_level_filter können nicht gleichzeitig verwendet werden. Verwende nur einen Filtertyp pro Anfrage."
|
||
},
|
||
"insert_nulls_requires_filter": {
|
||
"message": "insert_nulls-Modus {mode} erfordert einen level_filter, rating_level_filter oder period_filter zur Segmentdefinition. Ohne Filter verwende insert_nulls: none."
|
||
},
|
||
"connect_segments_requires_segments_mode": {
|
||
"message": "connect_segments erfordert, dass insert_nulls auf 'segments' gesetzt ist. Setze insert_nulls: segments, um Segmentverbindung zu nutzen."
|
||
},
|
||
"array_fields_requires_array_format": {
|
||
"message": "array_fields kann nur mit output_format: array_of_arrays verwendet werden. Ändere das Ausgabeformat oder entferne array_fields."
|
||
},
|
||
"invalid_array_fields": {
|
||
"message": "Der Wert {template} für array_fields ist ungültig. Feldnamen müssen in geschweifte Klammern eingeschlossen sein, z.B. '{start_time}, {price_per_kwh}, {level}'."
|
||
},
|
||
"min_segment_exceeds_duration": {
|
||
"message": "min_segment_duration ({min_segment_minutes} Min.) darf die Gesamtdauer ({duration_minutes} Min.) nicht überschreiten. Reduziere min_segment_duration oder erhöhe duration."
|
||
},
|
||
"start_time_conflict": {
|
||
"message": "search_start und search_start_time definieren beide den Startzeitpunkt — verwende nur einen. Nutze search_start für ein genaues Datum/Uhrzeit oder search_start_time für eine Tageszeit."
|
||
},
|
||
"end_time_conflict": {
|
||
"message": "search_end und search_end_time definieren beide den Endzeitpunkt — verwende nur einen. Nutze search_end für ein genaues Datum/Uhrzeit oder search_end_time für eine Tageszeit."
|
||
},
|
||
"insert_nulls_all_with_period_filter": {
|
||
"message": "insert_nulls: all wird mit period_filter nicht unterstützt. Verwende stattdessen insert_nulls: segments — das fügt Lücken zwischen einzelnen Perioden im Diagramm ein."
|
||
},
|
||
"connect_segments_with_period_filter": {
|
||
"message": "connect_segments kann nicht zusammen mit period_filter verwendet werden. Perioden sind bereits zusammenhängend — connect_segments wirkt nur bei level_filter oder rating_level_filter."
|
||
},
|
||
"duplicate_task_names": {
|
||
"message": "Aufgabennamen müssen eindeutig sein. Doppelt vergeben: {names}. Vergib unterschiedliche Namen, damit die Ergebnisse den richtigen Aufgaben zugeordnet werden können."
|
||
},
|
||
"tasks_exceed_search_window": {
|
||
"message": "Die Gesamtdauer aller Aufgaben inklusive Pausen ({total_minutes} Min.) überschreitet das Suchfenster ({window_minutes} Min.). Reduziere die Aufgabendauern, verringere gap_minutes oder erweitere den Suchzeitraum."
|
||
},
|
||
"must_finish_by_conflicts_with_end": {
|
||
"message": "must_finish_by kann nicht mit Endgrenz-Parametern ({params}) kombiniert werden. Verwende must_finish_by allein — es setzt das Suchende automatisch auf die Deadline."
|
||
},
|
||
"invalid_entity_reference": {
|
||
"message": "'{reference}' ist keine gültige Entity-Referenz. Verwende das Format 'domain.entity_id' oder 'domain.entity_id@attribut'."
|
||
},
|
||
"entity_not_found": {
|
||
"message": "Entity '{entity_id}' nicht gefunden. Überprüfe, ob die Entity existiert und verfügbar ist."
|
||
},
|
||
"entity_attribute_not_found": {
|
||
"message": "Entity {entity_id} hat kein Attribut {attribute}."
|
||
},
|
||
"entity_state_unavailable": {
|
||
"message": "Entity '{entity_id}' hat den Status '{state}'. Die Entity muss einen gültigen Statuswert haben."
|
||
},
|
||
"entity_value_conversion_failed": {
|
||
"message": "Wert '{raw_value}' von '{entity_id}' ({attribute}) kann nicht in {expected_type} konvertiert werden. Überprüfe, ob die Entity einen kompatiblen Wert liefert."
|
||
},
|
||
"capacity_required_for_percent": {
|
||
"message": "battery_capacity_kwh ist erforderlich, wenn der aktuelle oder Ziel-SoC in Prozent angegeben wird."
|
||
},
|
||
"ambiguous_soc_input": {
|
||
"message": "Das Feld {field} wurde sowohl in Prozent als auch in kWh angegeben. Verwende nur eine Darstellung."
|
||
},
|
||
"already_at_target": {
|
||
"message": "Der aktuelle Ladezustand liegt bereits auf oder über dem Ziel. Es ist kein Ladeplan erforderlich."
|
||
},
|
||
"target_exceeds_capacity": {
|
||
"message": "Der Ziel-SoC ({target_soc_kwh} kWh) übersteigt die Batteriekapazität ({capacity_kwh} kWh)."
|
||
},
|
||
"energy_unreachable": {
|
||
"message": "Das angeforderte Ladeziel kann innerhalb des verfügbaren Suchfensters und der Ladebeschränkungen nicht erreicht werden."
|
||
},
|
||
"missing_current_soc": {
|
||
"message": "Gib entweder current_soc_percent oder current_soc_kwh an."
|
||
},
|
||
"missing_target_soc": {
|
||
"message": "Gib entweder target_soc_percent oder target_soc_kwh an."
|
||
},
|
||
"missing_deadline_for_must_reach": {
|
||
"message": "Gib must_reach_by oder must_reach_by_event an, wenn du must_reach_soc_percent oder must_reach_soc_kwh verwendest."
|
||
},
|
||
"missing_must_reach_soc": {
|
||
"message": "Gib must_reach_soc_percent oder must_reach_soc_kwh an, wenn du einen must_reach-Stichtag verwendest."
|
||
},
|
||
"invalid_must_reach_soc": {
|
||
"message": "Der Mindestladezustand bis zum Stichtag muss zwischen dem aktuellen und dem Ziel-Ladezustand liegen."
|
||
},
|
||
"power_strategy_conflict": {
|
||
"message": "Verwende entweder min_charge_power_w oder charge_power_steps_w, nicht beide gleichzeitig."
|
||
},
|
||
"grid_limit_too_low": {
|
||
"message": "grid_import_limit_w ist niedriger als die minimal erforderliche Ladeleistung."
|
||
},
|
||
"deadline_conflict": {
|
||
"message": "Verwende entweder must_reach_by oder must_reach_by_event, nicht beide gleichzeitig."
|
||
},
|
||
"deadline_event_not_available": {
|
||
"message": "Das ausgewählte Stichtagsereignis ist in den aktuellen Koordinatordaten nicht verfügbar."
|
||
},
|
||
"deadline_outside_search_range": {
|
||
"message": "Der aufgelöste Stichtag muss innerhalb des ausgewählten Suchbereichs liegen."
|
||
}
|
||
},
|
||
"services": {
|
||
"get_price": {
|
||
"name": "Preisdaten abrufen",
|
||
"description": "Preisdaten für einen bestimmten Zeitraum mit automatischem Routing abrufen. Entwicklungs- und Test-Service für die price_info_for_range API-Funktion. Verwendet automatisch PRICE_INFO, PRICE_INFO_RANGE oder beide basierend auf der Zeitraumgrenze.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Die Konfigurations-Eintrag-ID für die Tibber-Integration."
|
||
},
|
||
"start_time": {
|
||
"name": "Startzeit",
|
||
"description": "Start des Zeitraums (inklusive, zeitzonenbewusst)."
|
||
},
|
||
"end_time": {
|
||
"name": "Endzeit",
|
||
"description": "Ende des Zeitraums (exklusive, zeitzonenbewusst)."
|
||
}
|
||
}
|
||
},
|
||
"get_apexcharts_yaml": {
|
||
"name": "ApexCharts-Karten-YAML abrufen",
|
||
"description": "⚠️ WICHTIG: Dieser Service generiert eine GRUNDLEGENDE BEISPIEL-Konfiguration für die ApexCharts-Karte als Startpunkt. Es ist KEINE vollständige Lösung für alle ApexCharts-Funktionen. Diese Integration ist primär ein DATENLIEFERANT. Das generierte YAML zeigt, wie du den `get_chartdata`-Service zum Abrufen von Preisdaten nutzt. Aufgrund der segmentierten Natur unserer Daten (verschiedene Zeitabschnitte pro Serie) und der Nutzung von Home Assistants Service-API statt Entity-Attributen sind viele erweiterte ApexCharts-Funktionen (wie in_header, bestimmte Transformationen) nicht kompatibel oder erfordern manuelle Anpassung. Du darfst das generierte YAML gerne für deine spezifischen Bedürfnisse anpassen, aber bitte verstehe, dass umfassender ApexCharts-Konfigurations-Support außerhalb des Umfangs dieser Integration liegt. Community-Beiträge mit verbesserten Konfigurationen sind immer willkommen - wenn du ein besseres Setup findest, das funktioniert, teile es bitte, damit alle davon profitieren können! Für direkten Datenzugriff zum Erstellen eigener Diagramme nutze stattdessen den `get_chartdata`-Service.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrags-ID",
|
||
"description": "Die Konfigurationseintrags-ID für die Tibber-Integration."
|
||
},
|
||
"day": {
|
||
"name": "Tag",
|
||
"description": "Welcher Tag visualisiert werden soll (Standard: Rollierendes Fenster). Feste Tag-Optionen (Gestern/Heute/Morgen) zeigen 24h-Fenster ohne zusätzliche Abhängigkeiten. Dynamische Optionen benötigen config-template-card: Rollierendes Fenster zeigt ein festes 48h-Fenster, das automatisch zwischen gestern+heute und heute+morgen wechselt basierend auf Datenverfügbarkeit. Rollierendes Fenster (Auto-Zoom) verhält sich gleich, zoomt aber zusätzlich automatisch rein (2h Rückblick + verbleibende Zeit bis Mitternacht, graph_span verringert sich alle 15 Minuten)."
|
||
},
|
||
"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)."
|
||
},
|
||
"resolution": {
|
||
"name": "Auflösung",
|
||
"description": "Zeitauflösung für die Diagrammdaten. 'interval' (Standard): Originale 15-Minuten-Intervalle (96 Punkte pro Tag). 'hourly': Aggregierte Stundenwerte mit einem rollierenden 60-Minuten-Fenster (24 Punkte pro Tag) für ein übersichtlicheres Diagramm."
|
||
},
|
||
"price_source": {
|
||
"name": "Preisquelle",
|
||
"description": "Welche Preiskomponente als Hauptpreis verwendet werden soll. 'total' (Standard): Gesamtpreis inkl. Energie, Steuern und Gebühren. 'energy': Nur der reine Spot-/Energiepreis (ohne Steuern und Gebühren). 'tax': Nur Steuer- und Gebührenanteil."
|
||
},
|
||
"highlight_best_price": {
|
||
"name": "Bestpreis-Zeiträume hervorheben",
|
||
"description": "Füge eine halbtransparente grüne Überlagerung hinzu, um die Bestpreis-Zeiträume im Diagramm hervorzuheben. Dies erleichtert die visuelle Identifizierung der optimalen Zeiten für den Energieverbrauch."
|
||
},
|
||
"highlight_peak_price": {
|
||
"name": "Spitzenpreis-Zeiträume hervorheben",
|
||
"description": "Füge eine halbtransparente rote Überlagerung hinzu, um die Spitzenpreis-Zeiträume im Diagramm hervorzuheben. Dies erleichtert die visuelle Identifizierung der Zeiten, in denen Energie am teuersten ist."
|
||
}
|
||
}
|
||
},
|
||
"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.",
|
||
"sections": {
|
||
"general": {
|
||
"name": "Allgemein",
|
||
"description": "Basisoptionen für das Abrufen von Diagrammdaten."
|
||
},
|
||
"selection": {
|
||
"name": "Auswahl",
|
||
"description": "Wähle aus, welche Daten in die Ausgabe aufgenommen werden sollen."
|
||
},
|
||
"filters": {
|
||
"name": "Filter",
|
||
"description": "Filtere Daten basierend auf Preisniveaus, Preisbewertungen oder speziellen Zeiträumen."
|
||
},
|
||
"transformation": {
|
||
"name": "Daten transformieren",
|
||
"description": "Transformiere die Datenausgabe für bessere Diagrammkompatibilität."
|
||
},
|
||
"format": {
|
||
"name": "Format",
|
||
"description": "Passe das Ausgabeformat an."
|
||
},
|
||
"arrays_of_arrays": {
|
||
"name": "Erweiterte Ausgabeeinstellungen: Array von Arrays",
|
||
"description": "Einstellungen für das Ausgabeformat bei Verwendung eines Arrays von Arrays."
|
||
},
|
||
"arrays_of_objects": {
|
||
"name": "Erweiterte Ausgabeeinstellungen: Array von Objekten",
|
||
"description": "Einstellungen für das Ausgabeformat bei Verwendung eines Arrays von Objekten."
|
||
}
|
||
},
|
||
"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, wird ein rollierendes 2-Tages-Fenster zurückgegeben: heute+morgen (wenn Morgendaten verfügbar) oder gestern+heute (wenn Morgendaten noch nicht verfügbar). Dies ermöglicht eine kontinuierliche Diagrammanzeige ohne Lücken."
|
||
},
|
||
"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)."
|
||
},
|
||
"price_source": {
|
||
"name": "Preisquelle",
|
||
"description": "Welche Preiskomponente als Hauptpreis verwendet werden soll. 'total' (Standard): Gesamtpreis inkl. Energie, Steuern und Gebühren. 'energy': Nur der reine Spot-/Energiepreis (ohne Steuern und Gebühren). 'tax': Nur Steuer- und Gebührenanteil."
|
||
},
|
||
"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",
|
||
"description": "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)."
|
||
},
|
||
"subunit_currency": {
|
||
"name": "Unterwährungseinheit",
|
||
"description": "Gibt Preise in Unterwährungseinheiten zurück (Cent für EUR, Øre für NOK/SEK) statt in Basiswä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 Basiswährung, 2 für Unterwährungseinheit)."
|
||
},
|
||
"data_key": {
|
||
"name": "Daten-Schlüssel",
|
||
"description": "Benutzerdefinierter Name für den obersten Datenschlüssel in der Antwort. Standard ist 'data', falls nicht angegeben."
|
||
},
|
||
"include_level": {
|
||
"name": "Preisniveau einschließen",
|
||
"description": "Fügt das Tibber-Preisniveau (sehr günstig/günstig/normal/teuer/sehr teuer) zu jedem Datenpunkt hinzu."
|
||
},
|
||
"include_rating_level": {
|
||
"name": "Preisbewertung einschließen",
|
||
"description": "Fügt die berechnete Preisbewertung (niedrig/normal/hoch) basierend auf deinen konfigurierten Schwellwerten zu jedem Datenpunkt hinzu."
|
||
},
|
||
"include_average": {
|
||
"name": "Durchschnitt einschließen",
|
||
"description": "Den Tagesdurchschnittspreis in jedem Datenpunkt zum Vergleich einschließen."
|
||
},
|
||
"include_energy": {
|
||
"name": "Energiepreis einschließen",
|
||
"description": "Den reinen Energie-/Spotpreis (ohne Steuern und Gebühren) in jedem Datenpunkt einschließen. Dies ist das 'energy'-Feld aus der Tibber-API, nützlich für Einspeisungs-/Salderungsberechnungen."
|
||
},
|
||
"include_tax": {
|
||
"name": "Steueranteil einschließen",
|
||
"description": "Den Steueranteil des Preises in jedem Datenpunkt einschließen. Dies ist das 'tax'-Feld aus der Tibber-API, das Gebühren, Steuern und Netzentgelte darstellt."
|
||
},
|
||
"level_filter": {
|
||
"name": "Preisniveau-Filter",
|
||
"description": "Intervalle filtern, um nur bestimmte Tibber-Preisniveaus einzuschließen (sehr günstig/günstig/normal/teuer/sehr teuer). Falls nicht angegeben, werden alle Niveaus eingeschlossen."
|
||
},
|
||
"rating_level_filter": {
|
||
"name": "Preisbewertungs-Filter",
|
||
"description": "Intervalle filtern, um nur bestimmte Preisbewertungen einzuschließen (niedrig/normal/hoch). 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)."
|
||
},
|
||
"connect_segments": {
|
||
"name": "Segmente verbinden",
|
||
"description": "[NUR BEI 'NULL-Werte einfügen'] Wenn aktiviert, werden an Segmentgrenzen Verbindungspunkte hinzugefügt, um verschiedene Preisstufen-Segmente in Stufenliniendiagrammen visuell zu verbinden. Bei fallendem Preis wird ein Punkt mit dem niedrigeren Preis am Ende des aktuellen Segments hinzugefügt. Bei steigendem Preis wird ein Haltepunkt vor der Lücke hinzugefügt. Dies erzeugt sanfte visuelle Übergänge zwischen Segmenten anstelle von abrupten Lücken."
|
||
},
|
||
"add_trailing_null": {
|
||
"name": "Abschließenden Null-Punkt hinzufügen",
|
||
"description": "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",
|
||
"description": "Benutzerdefinierter Name für das Startzeit-Feld in der Ausgabe. Standardmäßig 'start_time', wenn nicht angegeben."
|
||
},
|
||
"end_time_field": {
|
||
"name": "Endzeit-Feldname",
|
||
"description": "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",
|
||
"description": "Benutzerdefinierter Name für das Preis-Feld in der Ausgabe. Standard ist 'price_per_kwh', falls nicht angegeben."
|
||
},
|
||
"level_field": {
|
||
"name": "Preisniveau-Feldname",
|
||
"description": "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",
|
||
"description": "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",
|
||
"description": "Benutzerdefinierter Name für das Durchschnitts-Feld in der Ausgabe. Standard ist 'average', falls nicht angegeben. Wird nur verwendet, wenn include_average aktiviert ist."
|
||
},
|
||
"energy_field": {
|
||
"name": "Energiepreis-Feldname",
|
||
"description": "Benutzerdefinierter Name für das Energiepreis-Feld in der Ausgabe. Standard ist 'energy_price', falls nicht angegeben. Wird nur verwendet, wenn include_energy aktiviert ist."
|
||
},
|
||
"tax_field": {
|
||
"name": "Steuer-Feldname",
|
||
"description": "Benutzerdefinierter Name für das Steuer-Feld in der Ausgabe. Standard ist 'tax', falls nicht angegeben. Wird nur verwendet, wenn include_tax aktiviert ist."
|
||
},
|
||
"metadata": {
|
||
"name": "Metadaten",
|
||
"description": "Steuerung der Metadaten-Einbindung in der Antwort. 'include' (Standard): Gibt Chart-Daten und Metadaten mit Preisstatistiken, Währungsinformationen, Y-Achsen-Vorschlägen und Zeitbereich zurück. 'only': Gibt nur Metadaten zurück ohne Chart-Daten zu verarbeiten (schnell, nützlich für dynamische Y-Achsen-Konfiguration). 'none': Gibt nur Chart-Daten ohne Metadaten zurück."
|
||
}
|
||
}
|
||
},
|
||
"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."
|
||
}
|
||
}
|
||
},
|
||
"find_cheapest_block": {
|
||
"name": "Günstigsten Block finden (Experimentell)",
|
||
"description": "Findet das günstigste zusammenhängende Zeitfenster einer bestimmten Dauer. Gedacht für Geräteplanung: Spülmaschine, Waschmaschine, Trockner usw. Gibt das günstigste Fenster mit Start-/Endzeiten und Preisstatistiken zurück.",
|
||
"sections": {
|
||
"search_range": {
|
||
"name": "Benutzerdefinierter Suchbereich",
|
||
"description": "Exakte Start- und Endzeiten für die Suche festlegen. Überschreibt den Suchbereich (Shortcut), wenn gesetzt."
|
||
},
|
||
"time_alternatives": {
|
||
"name": "Erweiterte Zeitoptionen",
|
||
"description": "Alternative Möglichkeiten zum Festlegen des Suchbereichs über Tageszeit und Minuten-Offsets."
|
||
},
|
||
"price_filter": {
|
||
"name": "Preisstufen-Filter",
|
||
"description": "Suche auf Intervalle innerhalb des angegebenen Tibber-Preisstufen-Bereichs einschränken."
|
||
},
|
||
"search_tuning": {
|
||
"name": "Suchalgorithmus-Feinabstimmung",
|
||
"description": "Feinabstimmung wie die Suche Ausreißer, Mindestqualitätsschwellen und Fallback-Verhalten behandelt."
|
||
},
|
||
"cost_estimation": {
|
||
"name": "Kostenabschätzung",
|
||
"description": "Leistungsprofil angeben, um genaue Energiekostenschätzungen basierend auf dem tatsächlichen Verbrauch zu erhalten."
|
||
},
|
||
"output": {
|
||
"name": "Ausgabeoptionen",
|
||
"description": "Ausgabeformat steuern: Vergleichsdetails und Währungseinheit."
|
||
}
|
||
},
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Die Konfigurationseintrag-ID für die Tibber-Integration."
|
||
},
|
||
"duration": {
|
||
"name": "Dauer",
|
||
"description": "Länge des gewünschten zusammenhängenden Fensters. Wird automatisch auf die nächste Viertelstunde aufgerundet. Maximum: 12 Stunden."
|
||
},
|
||
"search_start": {
|
||
"name": "Suchbeginn",
|
||
"description": "Beginn des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Startoptionen. Standardmäßig jetzt, wenn nicht angegeben."
|
||
},
|
||
"search_end": {
|
||
"name": "Suchende",
|
||
"description": "Ende des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Endoptionen. Standardmäßig Ende von morgen, wenn nicht angegeben."
|
||
},
|
||
"must_finish_by": {
|
||
"name": "Muss fertig sein bis",
|
||
"description": "Deadline: das Gerät muss bis zu diesem Zeitpunkt fertig sein. Der Suchbereich endet an dieser Deadline — der Service findet das günstigste Zeitfenster, das vorher endet. Kann nicht mit Suchende, Suchende-Uhrzeit oder Suchende-Offset kombiniert werden."
|
||
},
|
||
"search_start_time": {
|
||
"name": "Suchbeginn-Uhrzeit",
|
||
"description": "Alternative: Suche ab dieser Uhrzeit starten. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchbeginn (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_start_day_offset": {
|
||
"name": "Suchbeginn Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchbeginn-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchbeginn-Uhrzeit verwendet."
|
||
},
|
||
"search_end_time": {
|
||
"name": "Suchende-Uhrzeit",
|
||
"description": "Alternative: Suche bis zu dieser Uhrzeit. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchende (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_end_day_offset": {
|
||
"name": "Suchende Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchende-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchende-Uhrzeit verwendet."
|
||
},
|
||
"search_start_offset_minutes": {
|
||
"name": "Suchbeginn-Versatz (Minuten)",
|
||
"description": "Alternative: Suche startet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (60 = in 1 Stunde), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchbeginn oder Suchbeginn-Uhrzeit gesetzt ist."
|
||
},
|
||
"search_end_offset_minutes": {
|
||
"name": "Suchende-Versatz (Minuten)",
|
||
"description": "Alternative: Suche endet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (480 = in 8 Stunden), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchende oder Suchende-Uhrzeit gesetzt ist."
|
||
},
|
||
"include_current_interval": {
|
||
"name": "Aktuelles Intervall einbeziehen",
|
||
"description": "Das aktuell laufende 15-Minuten-Intervall in die Suche einbeziehen. Wenn aktiviert (Standard), beginnt die Suche am Anfang des aktuellen Intervalls, sodass es Teil des Ergebnisses sein kann."
|
||
},
|
||
"use_base_unit": {
|
||
"name": "Basiswährung verwenden",
|
||
"description": "Preise in Basiswährung (EUR, NOK) statt der konfigurierten Anzeigeeinheit (ct, øre) erzwingen. Nützlich für Berechnungen."
|
||
},
|
||
"search_scope": {
|
||
"name": "Suchbereich (Shortcut)",
|
||
"description": "Kurzwahl für häufige Suchbereiche. Überschreibt alle anderen Zeitbereich-Optionen. today/tomorrow = ganzer Kalendertag, remaining_today = jetzt bis Mitternacht, next_24h/next_48h = rollierendes Fenster ab jetzt."
|
||
},
|
||
"max_price_level": {
|
||
"name": "Maximale Preisstufe",
|
||
"description": "Nur Intervalle bis zu dieser Tibber-Preisstufe berücksichtigen. very_cheap = restriktivste, very_expensive = keine Einschränkung."
|
||
},
|
||
"min_price_level": {
|
||
"name": "Minimale Preisstufe",
|
||
"description": "Nur Intervalle ab dieser Tibber-Preisstufe berücksichtigen. Nützlich für find_most_expensive, um wirklich teure Intervalle zu fokussieren."
|
||
},
|
||
"include_comparison_details": {
|
||
"name": "Vergleichsdetails einschliessen",
|
||
"description": "Das price_comparison-Ergebnis um zusätzliche Felder ergänzen: comparison_price_min, comparison_price_max und (nur Block) comparison_window_end."
|
||
},
|
||
"power_profile": {
|
||
"name": "Leistungsprofil",
|
||
"description": "Variable Leistungsaufnahme in Watt pro 15-Minuten-Intervall. Beeinflusst die Fensterauswahl (Phasen mit hoher Leistung landen auf den günstigsten bzw. teuersten Intervallen) und die Kostenberechnung (estimated_total_cost nutzt den tatsächlichen Verbrauch statt einer festen 1-kW-Last)."
|
||
},
|
||
"smooth_outliers": {
|
||
"name": "Ausreißer glätten",
|
||
"description": "Preisausreißer vor der Suche glätten. Ausreißer-Intervalle werden vorübergehend durch den Durchschnitt ihrer Nachbarn ersetzt, sodass ein einzelner Ausschlag das Ergebnis nicht dominiert. Die Antwort zeigt immer die Original-Preise (ungeglättet). Standard: aktiviert."
|
||
},
|
||
"min_distance_from_avg": {
|
||
"name": "Min. Abstand vom Durchschnitt",
|
||
"description": "Ergebnis muss mindestens um diesen Prozentsatz vom Suchbereichs-Durchschnitt abweichen. Für günstigste: Ergebnis muss mindestens X% unter dem Durchschnitt liegen. Für teuerste: mindestens X% darüber. Wird die Bedingung nicht erfüllt, wird kein Ergebnis zurückgegeben (reason: selection_above/below_distance_threshold). Leer lassen zum Deaktivieren."
|
||
},
|
||
"allow_relaxation": {
|
||
"name": "Lockerung erlauben",
|
||
"description": "Filter schrittweise lockern, um ein Ergebnis zu garantieren. Phasen: 1) Abstandsschwelle reduzieren/entfernen 2) Preislevel-Filter erweitern 3) Dauer reduzieren. Standard: aktiviert."
|
||
},
|
||
"duration_flexibility_minutes": {
|
||
"name": "Dauer-Flexibilität",
|
||
"description": "Maximale Minuten, um die die Dauer bei der Lockerung verkürzt werden darf (0–120, Schritt 15). Leer lassen für automatische Berechnung (~20% der Dauer, max. 60 Min.)."
|
||
}
|
||
}
|
||
},
|
||
"find_most_expensive_block": {
|
||
"name": "Teuersten Block finden (Experimentell)",
|
||
"description": "Findet das teuerste zusammenhängende Zeitfenster einer bestimmten Dauer. Nützlich zur Erkennung von Spitzenpreiszeiträumen, die vermieden werden sollten. Gibt das teuerste Fenster mit Start-/Endzeiten und Preisstatistiken zurück.",
|
||
"sections": {
|
||
"search_range": {
|
||
"name": "Benutzerdefinierter Suchbereich",
|
||
"description": "Exakte Start- und Endzeiten für die Suche festlegen. Überschreibt den Suchbereich (Shortcut), wenn gesetzt."
|
||
},
|
||
"time_alternatives": {
|
||
"name": "Erweiterte Zeitoptionen",
|
||
"description": "Alternative Möglichkeiten zum Festlegen des Suchbereichs über Tageszeit und Minuten-Offsets."
|
||
},
|
||
"price_filter": {
|
||
"name": "Preisstufen-Filter",
|
||
"description": "Suche auf Intervalle innerhalb des angegebenen Tibber-Preisstufen-Bereichs einschränken."
|
||
},
|
||
"search_tuning": {
|
||
"name": "Suchalgorithmus-Feinabstimmung",
|
||
"description": "Feinabstimmung wie die Suche Ausreißer, Mindestqualitätsschwellen und Fallback-Verhalten behandelt."
|
||
},
|
||
"cost_estimation": {
|
||
"name": "Kostenabschätzung",
|
||
"description": "Leistungsprofil angeben, um genaue Energiekostenschätzungen basierend auf dem tatsächlichen Verbrauch zu erhalten."
|
||
},
|
||
"output": {
|
||
"name": "Ausgabeoptionen",
|
||
"description": "Ausgabeformat steuern: Vergleichsdetails und Währungseinheit."
|
||
}
|
||
},
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Die Konfigurationseintrag-ID für die Tibber-Integration."
|
||
},
|
||
"duration": {
|
||
"name": "Dauer",
|
||
"description": "Länge des gewünschten zusammenhängenden Fensters. Wird automatisch auf die nächste Viertelstunde aufgerundet. Maximum: 12 Stunden."
|
||
},
|
||
"search_start": {
|
||
"name": "Suchbeginn",
|
||
"description": "Beginn des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Startoptionen. Standardmäßig jetzt, wenn nicht angegeben."
|
||
},
|
||
"search_end": {
|
||
"name": "Suchende",
|
||
"description": "Ende des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Endoptionen. Standardmäßig Ende von morgen, wenn nicht angegeben."
|
||
},
|
||
"must_finish_by": {
|
||
"name": "Muss fertig sein bis",
|
||
"description": "Deadline: das Gerät muss bis zu diesem Zeitpunkt fertig sein. Der Suchbereich endet an dieser Deadline — der Service findet das teuerste Zeitfenster, das vorher endet. Kann nicht mit Suchende, Suchende-Uhrzeit, Suchende-Versatz oder Suchbereich (Shortcut) kombiniert werden."
|
||
},
|
||
"search_start_time": {
|
||
"name": "Suchbeginn-Uhrzeit",
|
||
"description": "Alternative: Suche ab dieser Uhrzeit starten. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchbeginn (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_start_day_offset": {
|
||
"name": "Suchbeginn Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchbeginn-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchbeginn-Uhrzeit verwendet."
|
||
},
|
||
"search_end_time": {
|
||
"name": "Suchende-Uhrzeit",
|
||
"description": "Alternative: Suche bis zu dieser Uhrzeit. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchende (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_end_day_offset": {
|
||
"name": "Suchende Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchende-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchende-Uhrzeit verwendet."
|
||
},
|
||
"search_start_offset_minutes": {
|
||
"name": "Suchbeginn-Versatz (Minuten)",
|
||
"description": "Alternative: Suche startet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (60 = in 1 Stunde), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchbeginn oder Suchbeginn-Uhrzeit gesetzt ist."
|
||
},
|
||
"search_end_offset_minutes": {
|
||
"name": "Suchende-Versatz (Minuten)",
|
||
"description": "Alternative: Suche endet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (480 = in 8 Stunden), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchende oder Suchende-Uhrzeit gesetzt ist."
|
||
},
|
||
"include_current_interval": {
|
||
"name": "Aktuelles Intervall einbeziehen",
|
||
"description": "Das aktuell laufende 15-Minuten-Intervall in die Suche einbeziehen. Wenn aktiviert (Standard), beginnt die Suche am Anfang des aktuellen Intervalls, sodass es Teil des Ergebnisses sein kann."
|
||
},
|
||
"use_base_unit": {
|
||
"name": "Basiswährung verwenden",
|
||
"description": "Preise in Basiswährung (EUR, NOK) statt der konfigurierten Anzeigeeinheit (ct, øre) erzwingen. Nützlich für Berechnungen."
|
||
},
|
||
"search_scope": {
|
||
"name": "Suchbereich (Shortcut)",
|
||
"description": "Kurzwahl für häufige Suchbereiche. Überschreibt alle anderen Zeitbereich-Optionen. today/tomorrow = ganzer Kalendertag, remaining_today = jetzt bis Mitternacht, next_24h/next_48h = rollierendes Fenster ab jetzt."
|
||
},
|
||
"max_price_level": {
|
||
"name": "Maximale Preisstufe",
|
||
"description": "Nur Intervalle bis zu dieser Tibber-Preisstufe berücksichtigen. very_cheap = restriktivste, very_expensive = keine Einschränkung."
|
||
},
|
||
"min_price_level": {
|
||
"name": "Minimale Preisstufe",
|
||
"description": "Nur Intervalle ab dieser Tibber-Preisstufe berücksichtigen. Nützlich für find_most_expensive, um wirklich teure Intervalle zu fokussieren."
|
||
},
|
||
"include_comparison_details": {
|
||
"name": "Vergleichsdetails einschliessen",
|
||
"description": "Das price_comparison-Ergebnis um zusätzliche Felder ergänzen: comparison_price_min, comparison_price_max und (nur Block) comparison_window_end."
|
||
},
|
||
"power_profile": {
|
||
"name": "Leistungsprofil",
|
||
"description": "Variable Leistungsaufnahme in Watt pro 15-Minuten-Intervall. Beeinflusst die Fensterauswahl (Phasen mit hoher Leistung landen auf den günstigsten bzw. teuersten Intervallen) und die Kostenberechnung (estimated_total_cost nutzt den tatsächlichen Verbrauch statt einer festen 1-kW-Last)."
|
||
},
|
||
"smooth_outliers": {
|
||
"name": "Ausreißer glätten",
|
||
"description": "Preisausreißer vor der Suche glätten. Ausreißer-Intervalle werden vorübergehend durch den Durchschnitt ihrer Nachbarn ersetzt, sodass ein einzelner Ausschlag das Ergebnis nicht dominiert. Die Antwort zeigt immer die Original-Preise (ungeglättet). Standard: aktiviert."
|
||
},
|
||
"min_distance_from_avg": {
|
||
"name": "Min. Abstand vom Durchschnitt",
|
||
"description": "Ergebnis muss mindestens um diesen Prozentsatz vom Suchbereichs-Durchschnitt abweichen. Für günstigste: Ergebnis muss mindestens X% unter dem Durchschnitt liegen. Für teuerste: mindestens X% darüber. Wird die Bedingung nicht erfüllt, wird kein Ergebnis zurückgegeben (reason: selection_above/below_distance_threshold). Leer lassen zum Deaktivieren."
|
||
},
|
||
"allow_relaxation": {
|
||
"name": "Lockerung erlauben",
|
||
"description": "Filter schrittweise lockern, um ein Ergebnis zu garantieren. Phasen: 1) Abstandsschwelle reduzieren/entfernen 2) Preislevel-Filter erweitern 3) Dauer reduzieren. Standard: aktiviert."
|
||
},
|
||
"duration_flexibility_minutes": {
|
||
"name": "Dauer-Flexibilität",
|
||
"description": "Maximale Minuten, um die die Dauer bei der Lockerung verkürzt werden darf (0–120, Schritt 15). Leer lassen für automatische Berechnung (~20% der Dauer, max. 60 Min.)."
|
||
}
|
||
}
|
||
},
|
||
"find_cheapest_hours": {
|
||
"name": "Günstigste Stunden finden (Experimentell)",
|
||
"description": "Findet die günstigsten Intervalle für eine bestimmte Gesamtdauer, nicht unbedingt zusammenhängend. Gedacht für flexible Lasten: Batterieladung, E-Auto, Warmwasserspeicher. Gibt einen Zeitplan mit Intervallen gruppiert in zusammenhängende Segmente zurück.",
|
||
"sections": {
|
||
"search_range": {
|
||
"name": "Benutzerdefinierter Suchbereich",
|
||
"description": "Exakte Start- und Endzeiten für die Suche festlegen. Überschreibt den Suchbereich (Shortcut), wenn gesetzt."
|
||
},
|
||
"time_alternatives": {
|
||
"name": "Erweiterte Zeitoptionen",
|
||
"description": "Alternative Möglichkeiten zum Festlegen des Suchbereichs über Tageszeit und Minuten-Offsets."
|
||
},
|
||
"price_filter": {
|
||
"name": "Preisstufen-Filter",
|
||
"description": "Suche auf Intervalle innerhalb des angegebenen Tibber-Preisstufen-Bereichs einschränken."
|
||
},
|
||
"search_tuning": {
|
||
"name": "Suchalgorithmus-Feinabstimmung",
|
||
"description": "Feinabstimmung wie die Suche Ausreißer, Mindestqualitätsschwellen und Fallback-Verhalten behandelt."
|
||
},
|
||
"cost_estimation": {
|
||
"name": "Kostenabschätzung",
|
||
"description": "Leistungsprofil angeben, um genaue Energiekostenschätzungen basierend auf dem tatsächlichen Verbrauch zu erhalten."
|
||
},
|
||
"output": {
|
||
"name": "Ausgabeoptionen",
|
||
"description": "Ausgabeformat steuern: Vergleichsdetails und Währungseinheit."
|
||
}
|
||
},
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Die Konfigurationseintrag-ID für die Tibber-Integration."
|
||
},
|
||
"duration": {
|
||
"name": "Dauer",
|
||
"description": "Benötigte günstige Gesamtzeit. Wird automatisch auf die nächste Viertelstunde aufgerundet. Maximum: 24 Stunden."
|
||
},
|
||
"search_start": {
|
||
"name": "Suchbeginn",
|
||
"description": "Beginn des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Startoptionen. Standardmäßig jetzt, wenn nicht angegeben."
|
||
},
|
||
"search_end": {
|
||
"name": "Suchende",
|
||
"description": "Ende des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Endoptionen. Standardmäßig Ende von morgen, wenn nicht angegeben."
|
||
},
|
||
"must_finish_by": {
|
||
"name": "Muss fertig sein bis",
|
||
"description": "Deadline: das Gerät muss bis zu diesem Zeitpunkt fertig sein. Der Suchbereich endet an dieser Deadline — der Service findet das günstigste Zeitfenster, das vorher endet. Kann nicht mit Suchende, Suchende-Uhrzeit oder Suchende-Offset kombiniert werden."
|
||
},
|
||
"search_start_time": {
|
||
"name": "Suchbeginn-Uhrzeit",
|
||
"description": "Alternative: Suche ab dieser Uhrzeit starten. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchbeginn (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_start_day_offset": {
|
||
"name": "Suchbeginn Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchbeginn-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchbeginn-Uhrzeit verwendet."
|
||
},
|
||
"search_end_time": {
|
||
"name": "Suchende-Uhrzeit",
|
||
"description": "Alternative: Suche bis zu dieser Uhrzeit. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchende (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_end_day_offset": {
|
||
"name": "Suchende Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchende-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchende-Uhrzeit verwendet."
|
||
},
|
||
"search_start_offset_minutes": {
|
||
"name": "Suchbeginn-Versatz (Minuten)",
|
||
"description": "Alternative: Suche startet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (60 = in 1 Stunde), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchbeginn oder Suchbeginn-Uhrzeit gesetzt ist."
|
||
},
|
||
"search_end_offset_minutes": {
|
||
"name": "Suchende-Versatz (Minuten)",
|
||
"description": "Alternative: Suche endet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (480 = in 8 Stunden), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchende oder Suchende-Uhrzeit gesetzt ist."
|
||
},
|
||
"include_current_interval": {
|
||
"name": "Aktuelles Intervall einbeziehen",
|
||
"description": "Das aktuell laufende 15-Minuten-Intervall in die Suche einbeziehen. Wenn aktiviert (Standard), beginnt die Suche am Anfang des aktuellen Intervalls, sodass es Teil des Ergebnisses sein kann."
|
||
},
|
||
"min_segment_duration": {
|
||
"name": "Minimale Segmentdauer",
|
||
"description": "Minimale zusammenhängende Laufzeit. Verhindert schnelles Ein-/Ausschalten bei Geräten mit Mindestlaufzeiten. Wird automatisch auf die nächste Viertelstunde aufgerundet. Standard: 15 Minuten. Maximum: 4 Stunden."
|
||
},
|
||
"use_base_unit": {
|
||
"name": "Basiswährung verwenden",
|
||
"description": "Preise in Basiswährung (EUR, NOK) statt der konfigurierten Anzeigeeinheit (ct, øre) erzwingen. Nützlich für Berechnungen."
|
||
},
|
||
"search_scope": {
|
||
"name": "Suchbereich (Shortcut)",
|
||
"description": "Kurzwahl für häufige Suchbereiche. Überschreibt alle anderen Zeitbereich-Optionen. today/tomorrow = ganzer Kalendertag, remaining_today = jetzt bis Mitternacht, next_24h/next_48h = rollierendes Fenster ab jetzt."
|
||
},
|
||
"max_price_level": {
|
||
"name": "Maximale Preisstufe",
|
||
"description": "Nur Intervalle bis zu dieser Tibber-Preisstufe berücksichtigen. very_cheap = restriktivste, very_expensive = keine Einschränkung."
|
||
},
|
||
"min_price_level": {
|
||
"name": "Minimale Preisstufe",
|
||
"description": "Nur Intervalle ab dieser Tibber-Preisstufe berücksichtigen. Nützlich für find_most_expensive, um wirklich teure Intervalle zu fokussieren."
|
||
},
|
||
"include_comparison_details": {
|
||
"name": "Vergleichsdetails einschliessen",
|
||
"description": "Das price_comparison-Ergebnis um zusätzliche Felder ergänzen: comparison_price_min, comparison_price_max und (nur Block) comparison_window_end."
|
||
},
|
||
"power_profile": {
|
||
"name": "Leistungsprofil",
|
||
"description": "Variable Leistungsaufnahme in Watt pro 15-Minuten-Intervall. Beeinflusst nur die Kostenberechnung (estimated_total_cost nutzt den tatsächlichen Verbrauch statt einer festen 1-kW-Last). Profilgewichtete Auswahl gilt nicht für nicht-zusammenhängende Intervalle."
|
||
},
|
||
"smooth_outliers": {
|
||
"name": "Ausreißer glätten",
|
||
"description": "Preisausreißer vor der Suche glätten. Ausreißer-Intervalle werden vorübergehend durch den Durchschnitt ihrer Nachbarn ersetzt, sodass ein einzelner Ausschlag das Ergebnis nicht dominiert. Die Antwort zeigt immer die Original-Preise (ungeglättet). Standard: aktiviert."
|
||
},
|
||
"min_distance_from_avg": {
|
||
"name": "Min. Abstand vom Durchschnitt",
|
||
"description": "Ergebnis muss mindestens um diesen Prozentsatz vom Suchbereichs-Durchschnitt abweichen. Für günstigste: Ergebnis muss mindestens X% unter dem Durchschnitt liegen. Für teuerste: mindestens X% darüber. Wird die Bedingung nicht erfüllt, wird kein Ergebnis zurückgegeben (reason: selection_above/below_distance_threshold). Leer lassen zum Deaktivieren."
|
||
},
|
||
"allow_relaxation": {
|
||
"name": "Lockerung erlauben",
|
||
"description": "Filter schrittweise lockern, um ein Ergebnis zu garantieren. Phasen: 1) Abstandsschwelle reduzieren/entfernen 2) Preislevel-Filter erweitern 3) Dauer reduzieren. Standard: aktiviert."
|
||
},
|
||
"duration_flexibility_minutes": {
|
||
"name": "Dauer-Flexibilität",
|
||
"description": "Maximale Minuten, um die die Dauer bei der Lockerung verkürzt werden darf (0–120, Schritt 15). Leer lassen für automatische Berechnung (~20% der Dauer, max. 60 Min.)."
|
||
}
|
||
}
|
||
},
|
||
"find_most_expensive_hours": {
|
||
"name": "Teuerste Stunden finden (Experimentell)",
|
||
"description": "Findet die teuersten Intervalle für eine bestimmte Gesamtdauer, nicht unbedingt zusammenhängend. Nützlich zur Erkennung von Spitzenpreiszeiträumen, die vermieden werden sollten. Gibt einen Zeitplan mit Intervallen gruppiert in zusammenhängende Segmente zurück.",
|
||
"sections": {
|
||
"search_range": {
|
||
"name": "Benutzerdefinierter Suchbereich",
|
||
"description": "Exakte Start- und Endzeiten für die Suche festlegen. Überschreibt den Suchbereich (Shortcut), wenn gesetzt."
|
||
},
|
||
"time_alternatives": {
|
||
"name": "Erweiterte Zeitoptionen",
|
||
"description": "Alternative Möglichkeiten zum Festlegen des Suchbereichs über Tageszeit und Minuten-Offsets."
|
||
},
|
||
"price_filter": {
|
||
"name": "Preisstufen-Filter",
|
||
"description": "Suche auf Intervalle innerhalb des angegebenen Tibber-Preisstufen-Bereichs einschränken."
|
||
},
|
||
"search_tuning": {
|
||
"name": "Suchalgorithmus-Feinabstimmung",
|
||
"description": "Feinabstimmung wie die Suche Ausreißer, Mindestqualitätsschwellen und Fallback-Verhalten behandelt."
|
||
},
|
||
"cost_estimation": {
|
||
"name": "Kostenabschätzung",
|
||
"description": "Leistungsprofil angeben, um genaue Energiekostenschätzungen basierend auf dem tatsächlichen Verbrauch zu erhalten."
|
||
},
|
||
"output": {
|
||
"name": "Ausgabeoptionen",
|
||
"description": "Ausgabeformat steuern: Vergleichsdetails und Währungseinheit."
|
||
}
|
||
},
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Die Konfigurationseintrag-ID für die Tibber-Integration."
|
||
},
|
||
"duration": {
|
||
"name": "Dauer",
|
||
"description": "Zu findende teure Gesamtzeit. Wird automatisch auf die nächste Viertelstunde aufgerundet. Maximum: 24 Stunden."
|
||
},
|
||
"search_start": {
|
||
"name": "Suchbeginn",
|
||
"description": "Beginn des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Startoptionen. Standardmäßig jetzt, wenn nicht angegeben."
|
||
},
|
||
"search_end": {
|
||
"name": "Suchende",
|
||
"description": "Ende des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Endoptionen. Standardmäßig Ende von morgen, wenn nicht angegeben."
|
||
},
|
||
"must_finish_by": {
|
||
"name": "Muss fertig sein bis",
|
||
"description": "Deadline: das Gerät muss bis zu diesem Zeitpunkt fertig sein. Der Suchbereich endet an dieser Deadline — der Service findet das teuerste Zeitfenster, das vorher endet. Kann nicht mit Suchende, Suchende-Uhrzeit, Suchende-Versatz oder Suchbereich (Shortcut) kombiniert werden."
|
||
},
|
||
"search_start_time": {
|
||
"name": "Suchbeginn-Uhrzeit",
|
||
"description": "Alternative: Suche ab dieser Uhrzeit starten. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchbeginn (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_start_day_offset": {
|
||
"name": "Suchbeginn Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchbeginn-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchbeginn-Uhrzeit verwendet."
|
||
},
|
||
"search_end_time": {
|
||
"name": "Suchende-Uhrzeit",
|
||
"description": "Alternative: Suche bis zu dieser Uhrzeit. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchende (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_end_day_offset": {
|
||
"name": "Suchende Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchende-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchende-Uhrzeit verwendet."
|
||
},
|
||
"search_start_offset_minutes": {
|
||
"name": "Suchbeginn-Versatz (Minuten)",
|
||
"description": "Alternative: Suche startet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (60 = in 1 Stunde), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchbeginn oder Suchbeginn-Uhrzeit gesetzt ist."
|
||
},
|
||
"search_end_offset_minutes": {
|
||
"name": "Suchende-Versatz (Minuten)",
|
||
"description": "Alternative: Suche endet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (480 = in 8 Stunden), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchende oder Suchende-Uhrzeit gesetzt ist."
|
||
},
|
||
"include_current_interval": {
|
||
"name": "Aktuelles Intervall einbeziehen",
|
||
"description": "Das aktuell laufende 15-Minuten-Intervall in die Suche einbeziehen. Wenn aktiviert (Standard), beginnt die Suche am Anfang des aktuellen Intervalls, sodass es Teil des Ergebnisses sein kann."
|
||
},
|
||
"min_segment_duration": {
|
||
"name": "Minimale Segmentdauer",
|
||
"description": "Minimale zusammenhängende Laufzeit. Verhindert schnelles Ein-/Ausschalten bei Geräten mit Mindestlaufzeiten. Wird automatisch auf die nächste Viertelstunde aufgerundet. Standard: 15 Minuten. Maximum: 4 Stunden."
|
||
},
|
||
"use_base_unit": {
|
||
"name": "Basiswährung verwenden",
|
||
"description": "Preise in Basiswährung (EUR, NOK) statt der konfigurierten Anzeigeeinheit (ct, øre) erzwingen. Nützlich für Berechnungen."
|
||
},
|
||
"search_scope": {
|
||
"name": "Suchbereich (Shortcut)",
|
||
"description": "Kurzwahl für häufige Suchbereiche. Überschreibt alle anderen Zeitbereich-Optionen. today/tomorrow = ganzer Kalendertag, remaining_today = jetzt bis Mitternacht, next_24h/next_48h = rollierendes Fenster ab jetzt."
|
||
},
|
||
"max_price_level": {
|
||
"name": "Maximale Preisstufe",
|
||
"description": "Nur Intervalle bis zu dieser Tibber-Preisstufe berücksichtigen. very_cheap = restriktivste, very_expensive = keine Einschränkung."
|
||
},
|
||
"min_price_level": {
|
||
"name": "Minimale Preisstufe",
|
||
"description": "Nur Intervalle ab dieser Tibber-Preisstufe berücksichtigen. Nützlich für find_most_expensive, um wirklich teure Intervalle zu fokussieren."
|
||
},
|
||
"include_comparison_details": {
|
||
"name": "Vergleichsdetails einschliessen",
|
||
"description": "Das price_comparison-Ergebnis um zusätzliche Felder ergänzen: comparison_price_min, comparison_price_max und (nur Block) comparison_window_end."
|
||
},
|
||
"power_profile": {
|
||
"name": "Leistungsprofil",
|
||
"description": "Variable Leistungsaufnahme in Watt pro 15-Minuten-Intervall. Beeinflusst nur die Kostenberechnung (estimated_total_cost nutzt den tatsächlichen Verbrauch statt einer festen 1-kW-Last). Profilgewichtete Auswahl gilt nicht für nicht-zusammenhängende Intervalle."
|
||
},
|
||
"smooth_outliers": {
|
||
"name": "Ausreißer glätten",
|
||
"description": "Preisausreißer vor der Suche glätten. Ausreißer-Intervalle werden vorübergehend durch den Durchschnitt ihrer Nachbarn ersetzt, sodass ein einzelner Ausschlag das Ergebnis nicht dominiert. Die Antwort zeigt immer die Original-Preise (ungeglättet). Standard: aktiviert."
|
||
},
|
||
"min_distance_from_avg": {
|
||
"name": "Min. Abstand vom Durchschnitt",
|
||
"description": "Ergebnis muss mindestens um diesen Prozentsatz vom Suchbereichs-Durchschnitt abweichen. Für günstigste: Ergebnis muss mindestens X% unter dem Durchschnitt liegen. Für teuerste: mindestens X% darüber. Wird die Bedingung nicht erfüllt, wird kein Ergebnis zurückgegeben (reason: selection_above/below_distance_threshold). Leer lassen zum Deaktivieren."
|
||
},
|
||
"allow_relaxation": {
|
||
"name": "Lockerung erlauben",
|
||
"description": "Filter schrittweise lockern, um ein Ergebnis zu garantieren. Phasen: 1) Abstandsschwelle reduzieren/entfernen 2) Preislevel-Filter erweitern 3) Dauer reduzieren. Standard: aktiviert."
|
||
},
|
||
"duration_flexibility_minutes": {
|
||
"name": "Dauer-Flexibilität",
|
||
"description": "Maximale Minuten, um die die Dauer bei der Lockerung verkürzt werden darf (0–120, Schritt 15). Leer lassen für automatische Berechnung (~20% der Dauer, max. 60 Min.)."
|
||
}
|
||
}
|
||
},
|
||
"find_cheapest_schedule": {
|
||
"name": "Günstigstes Programm planen (Experimentell)",
|
||
"description": "Plant mehrere Geräte optimal ohne Zeitüberschneidung. Jede Aufgabe erhält das günstigste verfügbare zusammenhängende Zeitfenster.",
|
||
"sections": {
|
||
"search_range": {
|
||
"name": "Benutzerdefinierter Suchbereich",
|
||
"description": "Exakte Start- und Endzeiten für die Suche festlegen. Überschreibt den Suchbereich (Shortcut), wenn gesetzt."
|
||
},
|
||
"time_alternatives": {
|
||
"name": "Erweiterte Zeitoptionen",
|
||
"description": "Alternative Möglichkeiten zum Festlegen des Suchbereichs über Tageszeit und Minuten-Offsets."
|
||
},
|
||
"price_filter": {
|
||
"name": "Preisstufen-Filter",
|
||
"description": "Suche auf Intervalle innerhalb des angegebenen Tibber-Preisstufen-Bereichs einschränken."
|
||
},
|
||
"search_tuning": {
|
||
"name": "Suchalgorithmus-Feinabstimmung",
|
||
"description": "Feinabstimmung wie die Suche Ausreißer, Mindestqualitätsschwellen und Fallback-Verhalten behandelt."
|
||
},
|
||
"output": {
|
||
"name": "Ausgabeoptionen",
|
||
"description": "Ausgabeformat steuern: Vergleichsdetails und Währungseinheit."
|
||
}
|
||
},
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Die Konfigurationseintrag-ID für die Tibber-Integration."
|
||
},
|
||
"tasks": {
|
||
"name": "Aufgaben",
|
||
"description": "Liste der zu planenden Aufgaben. Jede Aufgabe benötigt name (Text) und duration (hh:mm:ss). Optional: power_profile (Watt pro 15-min-Intervall). Maximal 4 Aufgaben."
|
||
},
|
||
"gap_minutes": {
|
||
"name": "Pause zwischen Aufgaben (Minuten)",
|
||
"description": "Mindestpause in Minuten zwischen aufeinanderfolgenden Aufgaben. Wird auf 15 Minuten aufgerundet. Standard: 0 (keine Pause)."
|
||
},
|
||
"sequential": {
|
||
"name": "Sequenzielle Reihenfolge",
|
||
"description": "Aufgaben in der Reihenfolge planen, in der sie in der Aufgabenliste stehen. Jede Aufgabe startet nach dem Ende der vorherigen (plus Pause). Nutze dies für abhängige Geräte wie Waschmaschine → Trockner. Standard: deaktiviert (Aufgaben werden nach Dauer sortiert für optimale Verteilung)."
|
||
},
|
||
"search_scope": {
|
||
"name": "Suchbereich (Shortcut)",
|
||
"description": "Kurzwahl für häufige Suchbereiche. Überschreibt alle anderen Zeitbereich-Optionen. today/tomorrow = ganzer Kalendertag, remaining_today = jetzt bis Mitternacht, next_24h/next_48h = rollierendes Fenster ab jetzt."
|
||
},
|
||
"search_start": {
|
||
"name": "Suchbeginn",
|
||
"description": "Beginn des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Startoptionen. Standardmäßig jetzt, wenn nicht angegeben."
|
||
},
|
||
"search_end": {
|
||
"name": "Suchende",
|
||
"description": "Ende des Suchbereichs als exaktes Datum und Uhrzeit. Höchste Priorität — überschreibt alle anderen Endoptionen. Standardmäßig Ende von morgen, wenn nicht angegeben."
|
||
},
|
||
"must_finish_by": {
|
||
"name": "Muss fertig sein bis",
|
||
"description": "Deadline: das Gerät muss bis zu diesem Zeitpunkt fertig sein. Der Suchbereich endet an dieser Deadline — der Service findet das günstigste Zeitfenster, das vorher endet. Kann nicht mit Suchende, Suchende-Uhrzeit oder Suchende-Offset kombiniert werden."
|
||
},
|
||
"search_start_time": {
|
||
"name": "Suchbeginn-Uhrzeit",
|
||
"description": "Alternative: Suche ab dieser Uhrzeit starten. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchbeginn (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_start_day_offset": {
|
||
"name": "Suchbeginn Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchbeginn-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchbeginn-Uhrzeit verwendet."
|
||
},
|
||
"search_end_time": {
|
||
"name": "Suchende-Uhrzeit",
|
||
"description": "Alternative: Suche bis zu dieser Uhrzeit. Mit Tages-Versatz kombinieren. Wird ignoriert, wenn Suchende (Datum/Uhrzeit) gesetzt ist."
|
||
},
|
||
"search_end_day_offset": {
|
||
"name": "Suchende Tages-Versatz",
|
||
"description": "Tages-Versatz für Suchende-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Negative Werte suchen in der Vergangenheit. Nur mit Suchende-Uhrzeit verwendet."
|
||
},
|
||
"search_start_offset_minutes": {
|
||
"name": "Suchbeginn-Versatz (Minuten)",
|
||
"description": "Alternative: Suche startet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (60 = in 1 Stunde), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchbeginn oder Suchbeginn-Uhrzeit gesetzt ist."
|
||
},
|
||
"search_end_offset_minutes": {
|
||
"name": "Suchende-Versatz (Minuten)",
|
||
"description": "Alternative: Suche endet in dieser Anzahl Minuten ab jetzt. Positiv = Zukunft (480 = in 8 Stunden), negativ = Vergangenheit (-60 = vor 1 Stunde). Wird ignoriert, wenn Suchende oder Suchende-Uhrzeit gesetzt ist."
|
||
},
|
||
"include_current_interval": {
|
||
"name": "Aktuelles Intervall einbeziehen",
|
||
"description": "Das aktuell laufende 15-Minuten-Intervall in die Suche einbeziehen. Wenn aktiviert, starten rollierende Suchbereiche wie remaining_today und next_24h am Beginn des aktuellen Intervalls, sodass es ausgewählt werden kann."
|
||
},
|
||
"max_price_level": {
|
||
"name": "Maximale Preisstufe",
|
||
"description": "Nur Intervalle bis zu dieser Tibber-Preisstufe berücksichtigen. very_cheap = restriktivste, very_expensive = keine Einschränkung."
|
||
},
|
||
"min_price_level": {
|
||
"name": "Minimale Preisstufe",
|
||
"description": "Nur Intervalle ab dieser Tibber-Preisstufe berücksichtigen. Nützlich für find_most_expensive, um wirklich teure Intervalle zu fokussieren."
|
||
},
|
||
"include_comparison_details": {
|
||
"name": "Vergleichsdetails einbeziehen",
|
||
"description": "Fügt pro Aufgabe zusätzliche price_comparison-Details hinzu (comparison_price_min, comparison_price_max, comparison_window_end), um das gefundene Zeitfenster mit dem gegenteiligen Extremfenster gleicher Dauer zu vergleichen."
|
||
},
|
||
"use_base_unit": {
|
||
"name": "Basiswährung verwenden",
|
||
"description": "Preise in Basiswährung (EUR, NOK) statt der konfigurierten Anzeigeeinheit (ct, øre) erzwingen. Nützlich für Berechnungen."
|
||
},
|
||
"smooth_outliers": {
|
||
"name": "Ausreißer glätten",
|
||
"description": "Preisausreißer vor der Suche glätten. Ausreißer-Intervalle werden vorübergehend durch den Durchschnitt ihrer Nachbarn ersetzt, sodass ein einzelner Ausschlag das Ergebnis nicht dominiert. Die Antwort zeigt immer die Original-Preise (ungeglättet). Standard: aktiviert."
|
||
},
|
||
"allow_relaxation": {
|
||
"name": "Lockerung erlauben",
|
||
"description": "Filter schrittweise lockern, um ein Ergebnis zu garantieren. Phasen: 1) Abstandsschwelle reduzieren/entfernen 2) Preislevel-Filter erweitern 3) Dauer reduzieren. Standard: aktiviert."
|
||
},
|
||
"duration_flexibility_minutes": {
|
||
"name": "Dauer-Flexibilität",
|
||
"description": "Maximale Minuten, um die die Dauer bei der Lockerung verkürzt werden darf (0–120, Schritt 15). Leer lassen für automatische Berechnung (~20% der Dauer, max. 60 Min.)."
|
||
}
|
||
}
|
||
},
|
||
"plan_charging": {
|
||
"name": "Laden planen (experimentell)",
|
||
"description": "Erstellt einen kostenoptimierten Ladeplan aus Batterieparametern statt einer festen Dauer. Unterstützt festes, kontinuierliches oder gestuftes Laden, optionale Mindest-SoC-Planung mit Stichtag sowie wirtschaftliche Filterung für spätere Entlade-Szenarien. Gibt einen Ladeplan pro Intervall zurück – mit Leistung, Energie, SoC-Verlauf, Segmentgruppierung, Gesamtkosten und Wirtschaftlichkeitsdetails. Wird kein Plan gefunden, enthält die Antwort einen stabilen Ursachencode im Feld „reason“ (zum Beispiel: already_at_target, no_data_in_range, no_intervals_matching_level_filter, no_intervals_after_economic_filter, energy_unreachable, energy_unreachable_by_deadline, selection_above_distance_threshold).",
|
||
"sections": {
|
||
"battery": {
|
||
"name": "Batterieparameter",
|
||
"description": "Beschreibe die Batterie: nutzbare Kapazität, aktueller und gewünschter SoC sowie Ladewirkungsgrad. Du kannst den SoC in Prozent (erfordert Kapazität) oder direkt in kWh angeben."
|
||
},
|
||
"charging": {
|
||
"name": "Ladestrategie",
|
||
"description": "Konfiguriere das Laden mit variabler Leistung, Netzgrenzen und Mindestlaufzeit-Vorgaben."
|
||
},
|
||
"deadline": {
|
||
"name": "Stichtagsplanung",
|
||
"description": "Verlange einen Mindestladezustand bis zu einem bestimmten Zeitpunkt (zum Beispiel vor einer Hochpreisphase). Lege sowohl den Mindest-SoC bis Stichtag als auch den Zeitpunkt fest – entweder als absolute Zeit (Erreichen bis) oder über ein bekanntes Ereignis (Stichtagsereignis)."
|
||
},
|
||
"search_range": {
|
||
"name": "Eigener Suchbereich",
|
||
"description": "Lege präzise Start- und Endzeiten für die Suche fest. Überschreibt den Suchumfang, wenn gesetzt."
|
||
},
|
||
"time_alternatives": {
|
||
"name": "Erweiterte Zeitoptionen",
|
||
"description": "Alternative Möglichkeiten, den Suchbereich über Tageszeit und Minutenversätze festzulegen."
|
||
},
|
||
"price_filter": {
|
||
"name": "Preisniveau-Filter",
|
||
"description": "Beschränke die Suche auf Intervalle innerhalb des angegebenen Tibber-Preisniveaus."
|
||
},
|
||
"search_tuning": {
|
||
"name": "Suchalgorithmus-Feinabstimmung",
|
||
"description": "Stelle fein ein, wie die Suche mit Ausreißern, Mindestqualitäts-Schwellen und Rückfallverhalten umgeht."
|
||
},
|
||
"economics": {
|
||
"name": "Wirtschaftliche Filter",
|
||
"description": "Filtere Ladeintervalle nach maximalen Kosten oder erwartetem späteren Entladewert."
|
||
},
|
||
"output": {
|
||
"name": "Ausgabeoptionen",
|
||
"description": "Steuere das Ausgabeformat: Vergleichsdetails und Währungseinheit."
|
||
}
|
||
},
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrags-ID",
|
||
"description": "Die Konfigurationseintrags-ID der Tibber-Integration."
|
||
},
|
||
"max_charge_power_w": {
|
||
"name": "Maximale Ladeleistung",
|
||
"description": "Maximale Ladeleistung in Watt. Sie definiert die Obergrenze für festes, kontinuierliches oder gestuftes Laden."
|
||
},
|
||
"battery_capacity_kwh": {
|
||
"name": "Batteriekapazität",
|
||
"description": "Nutzbare Batteriekapazität in kWh. Erforderlich, wenn aktueller oder Ziel-SoC in Prozent angegeben wird."
|
||
},
|
||
"current_soc_percent": {
|
||
"name": "Aktueller SoC (%)",
|
||
"description": "Aktueller Ladezustand der Batterie in Prozent. Kann nicht mit Aktueller SoC (kWh) kombiniert werden."
|
||
},
|
||
"current_soc_kwh": {
|
||
"name": "Aktueller SoC (kWh)",
|
||
"description": "Aktueller Ladezustand der Batterie in kWh. Kann nicht mit Aktueller SoC (%) kombiniert werden."
|
||
},
|
||
"target_soc_percent": {
|
||
"name": "Ziel-SoC (%)",
|
||
"description": "Gewünschter Ladezustand der Batterie in Prozent. Kann nicht mit Ziel-SoC (kWh) kombiniert werden."
|
||
},
|
||
"target_soc_kwh": {
|
||
"name": "Ziel-SoC (kWh)",
|
||
"description": "Gewünschter Ladezustand der Batterie in kWh. Kann nicht mit Ziel-SoC (%) kombiniert werden."
|
||
},
|
||
"charging_efficiency": {
|
||
"name": "Ladewirkungsgrad",
|
||
"description": "Anteil der Netzenergie, der in der Batterie gespeichert wird. Beispiel: 0,92 bedeutet 8 % Ladeverluste."
|
||
},
|
||
"search_scope": {
|
||
"name": "Suchumfang",
|
||
"description": "Kurzform für gängige Suchbereiche. Überschreibt alle anderen Zeitbereichsoptionen. today / tomorrow = ganzer Kalendertag, remaining_today = jetzt bis Mitternacht, next_24h / next_48h = gleitendes Fenster ab jetzt."
|
||
},
|
||
"include_current_interval": {
|
||
"name": "Aktuelles Intervall einbeziehen",
|
||
"description": "Bezieht das aktuell laufende 15-Minuten-Intervall in die Suche ein. Wenn aktiviert, kann das Laden im aktuellen Intervall beginnen, sofern es Teil des günstigsten Ergebnisses ist."
|
||
},
|
||
"search_start": {
|
||
"name": "Suchbeginn",
|
||
"description": "Beginn des Suchbereichs als genaues Datum und Uhrzeit. Höchste Priorität – überschreibt alle anderen Startoptionen. Standard ist jetzt, falls nicht angegeben."
|
||
},
|
||
"search_end": {
|
||
"name": "Suchende",
|
||
"description": "Ende des Suchbereichs als genaues Datum und Uhrzeit. Höchste Priorität – überschreibt alle anderen Endoptionen. Standard ist Ende morgen, falls nicht angegeben."
|
||
},
|
||
"must_finish_by": {
|
||
"name": "Fertig spätestens bis",
|
||
"description": "Stichtag: Das Laden muss bis zu diesem Zeitpunkt abgeschlossen sein. Der Suchbereich endet an diesem Stichtag – der Dienst findet die günstigsten Intervalle, die vorher abschließen. Kann nicht mit Suchende, Suchende-Uhrzeit oder Suchende-Versatz kombiniert werden."
|
||
},
|
||
"search_start_time": {
|
||
"name": "Suchbeginn-Uhrzeit",
|
||
"description": "Alternative: Beginne die Suche zu dieser Tageszeit. Mit Tagesversatz kombinieren. Wird ignoriert, wenn Suchbeginn (Datum/Zeit) gesetzt ist."
|
||
},
|
||
"search_start_day_offset": {
|
||
"name": "Suchbeginn-Tagesversatz",
|
||
"description": "Tagesversatz für die Suchbeginn-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Nur mit Suchbeginn-Uhrzeit verwendet."
|
||
},
|
||
"search_end_time": {
|
||
"name": "Suchende-Uhrzeit",
|
||
"description": "Alternative: Beende die Suche zu dieser Tageszeit. Mit Tagesversatz kombinieren. Wird ignoriert, wenn Suchende (Datum/Zeit) gesetzt ist."
|
||
},
|
||
"search_end_day_offset": {
|
||
"name": "Suchende-Tagesversatz",
|
||
"description": "Tagesversatz für die Suchende-Uhrzeit. -7 bis 2: -1 = gestern, 0 = heute, 1 = morgen. Nur mit Suchende-Uhrzeit verwendet."
|
||
},
|
||
"search_start_offset_minutes": {
|
||
"name": "Suchbeginn-Versatz (Minuten)",
|
||
"description": "Alternative: Beginne die Suche so viele Minuten ab jetzt. Positiv = Zukunft, negativ = Vergangenheit. Wird ignoriert, wenn Suchbeginn oder Suchbeginn-Uhrzeit gesetzt ist."
|
||
},
|
||
"search_end_offset_minutes": {
|
||
"name": "Suchende-Versatz (Minuten)",
|
||
"description": "Alternative: Beende die Suche so viele Minuten ab jetzt. Positiv = Zukunft, negativ = Vergangenheit. Wird ignoriert, wenn Suchende oder Suchende-Uhrzeit gesetzt ist."
|
||
},
|
||
"max_price_level": {
|
||
"name": "Maximales Preisniveau",
|
||
"description": "Berücksichtige nur Intervalle bei oder unter diesem Tibber-Preisniveau. very_cheap = am restriktivsten, very_expensive = keine Einschränkung."
|
||
},
|
||
"min_price_level": {
|
||
"name": "Minimales Preisniveau",
|
||
"description": "Berücksichtige nur Intervalle bei oder über diesem Tibber-Preisniveau. Nützlich, um unrealistisch günstige Fenster mit ausschließlich negativen Preisen aus gemischten Suchen auszuschließen."
|
||
},
|
||
"include_comparison_details": {
|
||
"name": "Vergleichsdetails einbeziehen",
|
||
"description": "Reichert das Ergebnis price_comparison um zusätzliche Felder an: comparison_price_min und comparison_price_max."
|
||
},
|
||
"use_base_unit": {
|
||
"name": "Basiswährungseinheit verwenden",
|
||
"description": "Erzwingt Preise in der Basiswährung (EUR, NOK) statt in der konfigurierten Anzeigeeinheit (ct, øre). Nützlich für Berechnungen."
|
||
},
|
||
"smooth_outliers": {
|
||
"name": "Ausreißer glätten",
|
||
"description": "Glättet Preisausreißer vor der Suche. Ausreißer-Intervalle werden vorübergehend durch den Durchschnitt ihrer Nachbarn ersetzt, sodass eine einzelne Spitze oder ein Tief das Ergebnis nicht dominiert. Die Antwort zeigt immer die ursprünglichen (ungeglätteten) Preise. Standard: aktiviert."
|
||
},
|
||
"min_distance_from_avg": {
|
||
"name": "Mindestabstand zum Durchschnitt",
|
||
"description": "Verlange, dass die ausgewählten Ladeintervalle mindestens diesen Prozentsatz unter dem Durchschnittspreis des gesamten Suchbereichs liegen. Leer lassen zum Deaktivieren."
|
||
},
|
||
"allow_relaxation": {
|
||
"name": "Lockerung zulassen",
|
||
"description": "Lockert die Filter schrittweise, um – wenn möglich – ein Ergebnis zu garantieren. Phasen: 1) Abstandsschwelle reduzieren/entfernen 2) Preisniveau-Filter erweitern 3) Dauer verkürzen. Standard: aktiviert."
|
||
},
|
||
"duration_flexibility_minutes": {
|
||
"name": "Dauer-Flexibilität",
|
||
"description": "Maximale Minuten, um die die automatisch berechnete Ladedauer während der Lockerung verkürzt werden darf (0–120, Schritt 15). Leer lassen für automatische Berechnung."
|
||
},
|
||
"must_reach_soc_percent": {
|
||
"name": "Mindest-SoC bis Stichtag (%)",
|
||
"description": "Mindestladezustand der Batterie, der bis zum Stichtag erreicht werden muss. Kann nicht mit Mindest-SoC bis Stichtag (kWh) kombiniert werden."
|
||
},
|
||
"must_reach_soc_kwh": {
|
||
"name": "Mindest-SoC bis Stichtag (kWh)",
|
||
"description": "Mindestladezustand der Batterie, der bis zum Stichtag erreicht werden muss. Kann nicht mit Mindest-SoC bis Stichtag (%) kombiniert werden."
|
||
},
|
||
"min_charge_power_w": {
|
||
"name": "Minimale Ladeleistung",
|
||
"description": "Aktiviert den kontinuierlichen Lademodus. Der Planer darf das letzte Intervall bis zu dieser Mindestleistung reduzieren, statt immer die maximale Leistung zu nutzen."
|
||
},
|
||
"charge_power_steps_w": {
|
||
"name": "Ladeleistungsstufen",
|
||
"description": "Aktiviert den gestuften Lademodus. Gib die erlaubten Leistungsstufen in Watt als Liste an, zum Beispiel [1380, 4140, 11000]. Der Planer wählt die kleinste Stufe, die die verbleibende Energie im letzten Intervall noch deckt. Schließt sich mit Minimale Ladeleistung gegenseitig aus."
|
||
},
|
||
"grid_import_limit_w": {
|
||
"name": "Netzbezugsgrenze",
|
||
"description": "Obergrenze für die aus dem Netz bezogene Ladeleistung in Watt. Nützlich, wenn der Lader die verfügbare Leistung mit anderen Verbrauchern teilen muss."
|
||
},
|
||
"must_reach_by": {
|
||
"name": "Erreichen bis",
|
||
"description": "Absoluter Stichtag für must_reach_soc_*. Der Planer garantiert zuerst den Mindest-SoC vor diesem Zeitpunkt und fährt dann – wenn möglich – mit dem verbleibenden Ziel fort."
|
||
},
|
||
"must_reach_by_event": {
|
||
"name": "Stichtagsereignis",
|
||
"description": "Alternativer Stichtag, abgeleitet aus Koordinatordaten. Verwende dies statt Erreichen bis, um um Mitternacht, die nächste Hochpreisphase oder das Ende der nächsten Bestpreisphase herum zu planen."
|
||
},
|
||
"discharging_efficiency": {
|
||
"name": "Entladewirkungsgrad",
|
||
"description": "Anteil der gespeicherten Batterieenergie, der beim späteren Entladen noch nutzbar ist. Wird für Wirtschaftlichkeitsberechnungen verwendet."
|
||
},
|
||
"expected_discharge_price": {
|
||
"name": "Erwarteter Entladepreis",
|
||
"description": "Erwarteter Wert jeder entladenen kWh. Intervalle über dem Break-even-Preis können gefiltert werden, wenn Für Entladung reservieren aktiviert ist."
|
||
},
|
||
"reserve_for_discharge": {
|
||
"name": "Für Entladung reservieren",
|
||
"description": "Behält nur Intervalle, die für eine spätere Entladung wirtschaftlich sinnvoll sind – basierend auf erwartetem Entladepreis und Roundtrip-Wirkungsgrad."
|
||
},
|
||
"max_cost_per_kwh": {
|
||
"name": "Maximaler Ladepreis",
|
||
"description": "Verwirft Kandidaten-Intervalle über diesem Preis pro kWh vor der Planung. Verwendet die gewählte Preiseinheit."
|
||
},
|
||
"min_charge_duration_minutes": {
|
||
"name": "Minimale Ladedauer",
|
||
"description": "Führt kurze isolierte Intervalle nach Möglichkeit zu längeren Ladeblöcken zusammen. Nützlich für Lader, die sehr kurze Läufe vermeiden sollten."
|
||
},
|
||
"max_cycles_per_day": {
|
||
"name": "Maximale Ladezyklen pro Tag",
|
||
"description": "Begrenzt, wie viele separate Ladesegmente pro Tag genutzt werden dürfen. Der Planer behält die günstigsten Segmente innerhalb dieser Grenze."
|
||
}
|
||
}
|
||
},
|
||
"debug_clear_tomorrow": {
|
||
"name": "Debug: Morgendaten löschen",
|
||
"description": "DEBUG/TESTING: Entfernt die Preisdaten für morgen aus dem Interval-Pool-Cache. Verwende dies, um den Aktualisierungszyklus für Morgendaten zu testen, ohne auf den nächsten Tag zu warten. Nach dem Aufruf dieses Dienstes zeigt der Lifecycle-Sensor 'searching_tomorrow' (nach 13:00 Uhr) an und der nächste Timer-#1-Zyklus lädt neue Daten von der API.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Eintrag-ID",
|
||
"description": "Optionale Konfigurationseintrag-ID. Wenn sie nicht angegeben ist, wird der erste verfügbare Eintrag verwendet."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"selector": {
|
||
"account_choice": {
|
||
"options": {
|
||
"new_token": "Neues Tibber-Konto per API-Token hinzufügen"
|
||
}
|
||
},
|
||
"day": {
|
||
"options": {
|
||
"yesterday": "Gestern",
|
||
"today": "Heute",
|
||
"tomorrow": "Morgen",
|
||
"rolling_window": "Rollierendes Fenster",
|
||
"rolling_window_autozoom": "Rollierendes Fenster (Auto-Zoom)"
|
||
}
|
||
},
|
||
"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"
|
||
}
|
||
},
|
||
"price_source": {
|
||
"options": {
|
||
"total": "Gesamt (inkl. Steuern & Gebühren)",
|
||
"energy": "Nur Energiepreis",
|
||
"tax": "Nur Steuern & Gebühren"
|
||
}
|
||
},
|
||
"metadata": {
|
||
"options": {
|
||
"include": "Einbeziehen (Daten + Metadaten)",
|
||
"only": "Nur Metadaten",
|
||
"none": "Keine (nur Daten)"
|
||
}
|
||
},
|
||
"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"
|
||
}
|
||
},
|
||
"currency_display_mode": {
|
||
"options": {
|
||
"base": "Basiswährung (€, kr)",
|
||
"subunit": "Unterwährungseinheit (ct, øre)"
|
||
}
|
||
},
|
||
"average_sensor_display": {
|
||
"options": {
|
||
"median": "Median",
|
||
"mean": "Arithmetisches Mittel"
|
||
}
|
||
},
|
||
"search_scope": {
|
||
"options": {
|
||
"today": "Heute",
|
||
"tomorrow": "Morgen",
|
||
"remaining_today": "Rest heute",
|
||
"next_24h": "Nächste 24 Stunden",
|
||
"next_48h": "Nächste 48 Stunden"
|
||
}
|
||
},
|
||
"charging_deadline_event": {
|
||
"options": {
|
||
"midnight": "Mitternacht",
|
||
"next_peak_period": "Nächste Hochpreisphase",
|
||
"next_best_period_end": "Ende der nächsten Bestpreisphase"
|
||
}
|
||
}
|
||
}
|
||
}
|