diff --git a/custom_components/tibber_prices/__init__.py b/custom_components/tibber_prices/__init__.py index af52f56..035c5b8 100644 --- a/custom_components/tibber_prices/__init__.py +++ b/custom_components/tibber_prices/__init__.py @@ -215,26 +215,18 @@ def _get_access_token(hass: HomeAssistant, entry: ConfigEntry) -> str: def _check_statistics_review_repair(hass: HomeAssistant, entry: TibberPricesConfigEntry) -> None: - """Ensure the statistics-review repair issue is visible when the flag is set. + """Re-create the statistics-review repair issue on every setup when the flag is set. - Uses async_get_or_create so that a user-dismissed issue stays dismissed across restarts. - The flag is cleared automatically when the issue has been dismissed (detected on next setup), - or when the user re-saves the currency display settings in the options flow. - The options flow uses delete + create whenever the mode changes again, which forces the - issue back into view for the new change regardless of prior dismissal. + Uses delete + create to guarantee visibility after HA restarts regardless of prior dismissal. + We have no way to detect whether the Recorder statistics have actually been fixed, so the + flag can only be cleared by an explicit user action: re-saving the currency display settings + in the options flow (with the same mode = "I have reviewed everything"). + Dismissing the HA Repairs notification alone does NOT count as acknowledgement. """ if not entry.data.get(DATA_STATISTICS_REVIEW_REQUIRED): return issue_id = f"currency_display_mode_changed_{entry.entry_id}" - - # If the issue was dismissed by the user, clear the flag and don't recreate it. - issue_registry = ir.async_get(hass) - existing = issue_registry.async_get_issue(DOMAIN, issue_id) - if existing is not None and existing.dismissed_version is not None: - new_data = {k: v for k, v in entry.data.items() if k != DATA_STATISTICS_REVIEW_REQUIRED} - hass.config_entries.async_update_entry(entry, data=new_data) - return - + ir.async_delete_issue(hass, DOMAIN, issue_id) ir.async_create_issue( hass, DOMAIN, diff --git a/custom_components/tibber_prices/translations/de.json b/custom_components/tibber_prices/translations/de.json index f5d3117..5af5abe 100644 --- a/custom_components/tibber_prices/translations/de.json +++ b/custom_components/tibber_prices/translations/de.json @@ -1012,6 +1012,52 @@ "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": "Current Phase End Time" + }, + "current_price_phase_remaining_minutes": { + "name": "Current Phase Remaining" + }, + "current_price_phase_duration": { + "name": "Current Phase Duration" + }, + "current_price_phase_progress": { + "name": "Current Phase Progress" + }, + "next_rising_phase_start_time": { + "name": "Next Rising Phase Start" + }, + "next_falling_phase_start_time": { + "name": "Next Falling Phase Start" + }, + "next_flat_phase_start_time": { + "name": "Next Flat Phase Start" + }, + "next_rising_phase_in_minutes": { + "name": "Time to Next Rising Phase" + }, + "next_falling_phase_in_minutes": { + "name": "Time to Next Falling Phase" + }, + "next_flat_phase_in_minutes": { + "name": "Time to Next Flat Phase" + }, "chart_data_export": { "name": "Diagramm-Datenexport", "state": { @@ -1069,6 +1115,15 @@ "best_price_period": { "name": "Bestpreis-Zeitraum" }, + "in_rising_price_phase": { + "name": "In Rising Price Phase" + }, + "in_falling_price_phase": { + "name": "In Falling Price Phase" + }, + "in_flat_price_phase": { + "name": "In Flat Price Phase" + }, "connection": { "name": "Tibber-API-Verbindung" }, @@ -1156,7 +1211,7 @@ }, "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 diesen Hinweis, nachdem du deine Automationen und Dashboards überprüft hast." + "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\nSobald du deine Automationen, Dashboards und Statistiken überprüft hast, gehe zu **Einstellungen → Integrationen → Tibber → Konfigurieren → Anzeigeeinstellungen** und speichere (auch ohne Änderungen). Nur so kannst du diese Meldung dauerhaft schließen." } }, "exceptions": { diff --git a/custom_components/tibber_prices/translations/en.json b/custom_components/tibber_prices/translations/en.json index 44228f6..3f6fb19 100644 --- a/custom_components/tibber_prices/translations/en.json +++ b/custom_components/tibber_prices/translations/en.json @@ -1012,6 +1012,52 @@ "mixed": "Mixed" } }, + "current_price_phase": { + "name": "Current Price Phase", + "state": { + "rising": "Rising", + "falling": "Falling", + "flat": "Flat" + } + }, + "next_price_phase": { + "name": "Next Price Phase", + "state": { + "rising": "Rising", + "falling": "Falling", + "flat": "Flat" + } + }, + "current_price_phase_end_time": { + "name": "Current Phase End Time" + }, + "current_price_phase_remaining_minutes": { + "name": "Current Phase Remaining" + }, + "current_price_phase_duration": { + "name": "Current Phase Duration" + }, + "current_price_phase_progress": { + "name": "Current Phase Progress" + }, + "next_rising_phase_start_time": { + "name": "Next Rising Phase Start" + }, + "next_falling_phase_start_time": { + "name": "Next Falling Phase Start" + }, + "next_flat_phase_start_time": { + "name": "Next Flat Phase Start" + }, + "next_rising_phase_in_minutes": { + "name": "Time to Next Rising Phase" + }, + "next_falling_phase_in_minutes": { + "name": "Time to Next Falling Phase" + }, + "next_flat_phase_in_minutes": { + "name": "Time to Next Flat Phase" + }, "chart_data_export": { "name": "Chart Data Export", "state": { @@ -1069,6 +1115,15 @@ "best_price_period": { "name": "Best Price Period" }, + "in_rising_price_phase": { + "name": "In Rising Price Phase" + }, + "in_falling_price_phase": { + "name": "In Falling Price Phase" + }, + "in_flat_price_phase": { + "name": "In Flat Price Phase" + }, "connection": { "name": "Tibber API Connection" }, @@ -1156,7 +1211,7 @@ }, "currency_display_mode_changed": { "title": "Currency display unit changed for {home_name}", - "description": "You changed the currency display mode for **{home_name}**. All price sensor values and attributes now use the new unit (e.g. 25.34 ct → 0.2534 € or vice versa).\n\nHome Assistant’s Recorder will separately show a **“The unit has changed”** dialog for affected sensors — this may take a few minutes or until the next statistics run (log warnings appear earlier). When it appears, choose **Delete all old statistic data** to start fresh. Do not choose “Update the unit without converting”: that re-labels the old numbers without adjusting their values, making the historic data factually incorrect.\n\n**Review manually:**\n\n1. **Automations & Templates:** Update all automations and template sensors that use numeric price thresholds.\n2. **Dashboard Cards:** Update any cards with hardcoded thresholds or unit labels.\n\nDismiss this notice after reviewing your automations and dashboards." + "description": "You changed the currency display mode for **{home_name}**. All price sensor values and attributes now use the new unit (e.g. 25.34 ct → 0.2534 € or vice versa).\n\nHome Assistant’s Recorder will separately show a **“The unit has changed”** dialog for affected sensors — this may take a few minutes or until the next statistics run (log warnings appear earlier). When it appears, choose **Delete all old statistic data** to start fresh. Do not choose “Update the unit without converting”: that re-labels the old numbers without adjusting their values, making the historic data factually incorrect.\n\n**Review manually:**\n\n1. **Automations & Templates:** Update all automations and template sensors that use numeric price thresholds.\n2. **Dashboard Cards:** Update any cards with hardcoded thresholds or unit labels.\n\nOnce you have reviewed your automations, dashboards, and statistics, go to **Settings → Integrations → Tibber → Configure → Display Settings** and save (without any changes if you like). This is the only way to permanently close this notification." } }, "exceptions": { diff --git a/custom_components/tibber_prices/translations/nb.json b/custom_components/tibber_prices/translations/nb.json index 68e8839..3454122 100644 --- a/custom_components/tibber_prices/translations/nb.json +++ b/custom_components/tibber_prices/translations/nb.json @@ -1012,6 +1012,52 @@ "mixed": "Blandet" } }, + "current_price_phase": { + "name": "Gjeldende Prisfase", + "state": { + "rising": "Stigende", + "falling": "Fallende", + "flat": "Flat" + } + }, + "next_price_phase": { + "name": "Neste Prisfase", + "state": { + "rising": "Stigende", + "falling": "Fallende", + "flat": "Flat" + } + }, + "current_price_phase_end_time": { + "name": "Current Phase End Time" + }, + "current_price_phase_remaining_minutes": { + "name": "Current Phase Remaining" + }, + "current_price_phase_duration": { + "name": "Current Phase Duration" + }, + "current_price_phase_progress": { + "name": "Current Phase Progress" + }, + "next_rising_phase_start_time": { + "name": "Next Rising Phase Start" + }, + "next_falling_phase_start_time": { + "name": "Next Falling Phase Start" + }, + "next_flat_phase_start_time": { + "name": "Next Flat Phase Start" + }, + "next_rising_phase_in_minutes": { + "name": "Time to Next Rising Phase" + }, + "next_falling_phase_in_minutes": { + "name": "Time to Next Falling Phase" + }, + "next_flat_phase_in_minutes": { + "name": "Time to Next Flat Phase" + }, "chart_data_export": { "name": "Diagramdataeksport", "state": { @@ -1069,6 +1115,15 @@ "best_price_period": { "name": "Lavpris-periode" }, + "in_rising_price_phase": { + "name": "In Rising Price Phase" + }, + "in_falling_price_phase": { + "name": "In Falling Price Phase" + }, + "in_flat_price_phase": { + "name": "In Flat Price Phase" + }, "connection": { "name": "Tibber API-tilkobling" }, @@ -1156,7 +1211,7 @@ }, "currency_display_mode_changed": { "title": "Valutavisningsenhet endret for {home_name}", - "description": "Du endret valutavisningsmodusen for **{home_name}**. Alle prissensorverdier og -attributter bruker nå den nye enheten (f.eks. 25,34 øre → 0,2534 kr eller omvendt).\n\nHome Assistants Recorder viser separat en **„Enheten har endret seg“**-dialog for berørte sensorer — dette kan ta noen minutter eller til neste statistikkjøring (advarsler i loggen dukker opp tidligere). Når den vises, velg **Slett alle gamle statistikkdata** for en ren start. Ikke velg „Oppdater enheten uten konvertering“: det beholder de gamle tallene med ny enhet uten å justere verdiene, og gjør de historiske dataene faktisk feil.\n\n**Gjennomgå manuelt:**\n\n1. **Automatiseringer & maler:** Oppdater alle automatiseringer og malsensorer som bruker numeriske pristerskler.\n2. **Dashboard-kort:** Oppdater kort med hardkodede terskelverdier eller enhetsetiketter.\n\nAvvis dette varselet etter å ha gjennomgått automatiseringene og dashboardene dine." + "description": "Du endret valutavisningsmodusen for **{home_name}**. Alle prissensorverdier og -attributter bruker nå den nye enheten (f.eks. 25,34 øre → 0,2534 kr eller omvendt).\n\nHome Assistants Recorder viser separat en **„Enheten har endret seg“**-dialog for berørte sensorer — dette kan ta noen minutter eller til neste statistikkjøring (advarsler i loggen dukker opp tidligere). Når den vises, velg **Slett alle gamle statistikkdata** for en ren start. Ikke velg „Oppdater enheten uten konvertering“: det beholder de gamle tallene med ny enhet uten å justere verdiene, og gjør de historiske dataene faktisk feil.\n\n**Gjennomgå manuelt:**\n\n1. **Automatiseringer & maler:** Oppdater alle automatiseringer og malsensorer som bruker numeriske pristerskler.\n2. **Dashboard-kort:** Oppdater kort med hardkodede terskelverdier eller enhetsetiketter.\n\nNår du har gjennomgått automatiseringer, dashboards og statistikk, gå til **Innstillinger → Integrasjoner → Tibber → Konfigurer → Visningsinnstillinger** og lagre (uten endringer om ønskelig). Dette er den eneste måten å lukke denne meldingen permanent." } }, "exceptions": { diff --git a/custom_components/tibber_prices/translations/nl.json b/custom_components/tibber_prices/translations/nl.json index c95fe03..c648d2f 100644 --- a/custom_components/tibber_prices/translations/nl.json +++ b/custom_components/tibber_prices/translations/nl.json @@ -1012,6 +1012,52 @@ "mixed": "Gemengd" } }, + "current_price_phase": { + "name": "Huidige Prijsfase", + "state": { + "rising": "Stijgend", + "falling": "Dalend", + "flat": "Vlak" + } + }, + "next_price_phase": { + "name": "Volgende Prijsfase", + "state": { + "rising": "Stijgend", + "falling": "Dalend", + "flat": "Vlak" + } + }, + "current_price_phase_end_time": { + "name": "Current Phase End Time" + }, + "current_price_phase_remaining_minutes": { + "name": "Current Phase Remaining" + }, + "current_price_phase_duration": { + "name": "Current Phase Duration" + }, + "current_price_phase_progress": { + "name": "Current Phase Progress" + }, + "next_rising_phase_start_time": { + "name": "Next Rising Phase Start" + }, + "next_falling_phase_start_time": { + "name": "Next Falling Phase Start" + }, + "next_flat_phase_start_time": { + "name": "Next Flat Phase Start" + }, + "next_rising_phase_in_minutes": { + "name": "Time to Next Rising Phase" + }, + "next_falling_phase_in_minutes": { + "name": "Time to Next Falling Phase" + }, + "next_flat_phase_in_minutes": { + "name": "Time to Next Flat Phase" + }, "chart_data_export": { "name": "Grafiekdata Export", "state": { @@ -1069,6 +1115,15 @@ "best_price_period": { "name": "Beste Prijs Periode" }, + "in_rising_price_phase": { + "name": "In Rising Price Phase" + }, + "in_falling_price_phase": { + "name": "In Falling Price Phase" + }, + "in_flat_price_phase": { + "name": "In Flat Price Phase" + }, "connection": { "name": "Tibber API Verbinding" }, @@ -1156,7 +1211,7 @@ }, "currency_display_mode_changed": { "title": "Valutaweergave-eenheid gewijzigd voor {home_name}", - "description": "Je hebt de valutaweergavemodus voor **{home_name}** gewijzigd. Alle prijssensorwaarden en -attributen gebruiken nu de nieuwe eenheid (bijv. 25,34 ct → 0,2534 € of andersom).\n\nHome Assistant’s Recorder toont afzonderlijk een **„De eenheid is gewijzigd“**-dialoogvenster voor getroffen sensoren — dit kan enkele minuten duren of tot de volgende statistiekenrun (logwaarschuwingen verschijnen eerder). Kies dan **Alle oude statistiekgegevens verwijderen** voor een schone start. Kies niet „Eenheid bijwerken zonder conversie“: dat hernoemt de oude getallen zonder de waarden aan te passen, waardoor de historische gegevens inhoudelijk onjuist worden.\n\n**Handmatig controleren:**\n\n1. **Automatiseringen & templates:** Werk alle automatiseringen en template-sensoren bij die numerieke prijsdrempels gebruiken.\n2. **Dashboard-kaarten:** Werk kaarten bij met hardgecodeerde drempelwaarden of eenheidslabels.\n\nSluit deze melding nadat je je automatiseringen en dashboards hebt gecontroleerd." + "description": "Je hebt de valutaweergavemodus voor **{home_name}** gewijzigd. Alle prijssensorwaarden en -attributen gebruiken nu de nieuwe eenheid (bijv. 25,34 ct → 0,2534 € of andersom).\n\nHome Assistant’s Recorder toont afzonderlijk een **„De eenheid is gewijzigd“**-dialoogvenster voor getroffen sensoren — dit kan enkele minuten duren of tot de volgende statistiekenrun (logwaarschuwingen verschijnen eerder). Kies dan **Alle oude statistiekgegevens verwijderen** voor een schone start. Kies niet „Eenheid bijwerken zonder conversie“: dat hernoemt de oude getallen zonder de waarden aan te passen, waardoor de historische gegevens inhoudelijk onjuist worden.\n\n**Handmatig controleren:**\n\n1. **Automatiseringen & templates:** Werk alle automatiseringen en template-sensoren bij die numerieke prijsdrempels gebruiken.\n2. **Dashboard-kaarten:** Werk kaarten bij met hardgecodeerde drempelwaarden of eenheidslabels.\n\nZodra je je automatiseringen, dashboards en statistieken hebt gecontroleerd, ga naar **Instellingen → Integraties → Tibber → Configureren → Weergave-instellingen** en sla op (zonder wijzigingen indien gewenst). Dit is de enige manier om deze melding permanent te sluiten." } }, "exceptions": { diff --git a/custom_components/tibber_prices/translations/sv.json b/custom_components/tibber_prices/translations/sv.json index 1a94e0d..5070fea 100644 --- a/custom_components/tibber_prices/translations/sv.json +++ b/custom_components/tibber_prices/translations/sv.json @@ -1012,6 +1012,52 @@ "mixed": "Blandad" } }, + "current_price_phase": { + "name": "Aktuell Prisfas", + "state": { + "rising": "Stigande", + "falling": "Fallande", + "flat": "Flat" + } + }, + "next_price_phase": { + "name": "Nästa Prisfas", + "state": { + "rising": "Stigande", + "falling": "Fallande", + "flat": "Flat" + } + }, + "current_price_phase_end_time": { + "name": "Current Phase End Time" + }, + "current_price_phase_remaining_minutes": { + "name": "Current Phase Remaining" + }, + "current_price_phase_duration": { + "name": "Current Phase Duration" + }, + "current_price_phase_progress": { + "name": "Current Phase Progress" + }, + "next_rising_phase_start_time": { + "name": "Next Rising Phase Start" + }, + "next_falling_phase_start_time": { + "name": "Next Falling Phase Start" + }, + "next_flat_phase_start_time": { + "name": "Next Flat Phase Start" + }, + "next_rising_phase_in_minutes": { + "name": "Time to Next Rising Phase" + }, + "next_falling_phase_in_minutes": { + "name": "Time to Next Falling Phase" + }, + "next_flat_phase_in_minutes": { + "name": "Time to Next Flat Phase" + }, "chart_data_export": { "name": "Diagramdataexport", "state": { @@ -1069,6 +1115,15 @@ "best_price_period": { "name": "Bästa Prisperiod" }, + "in_rising_price_phase": { + "name": "In Rising Price Phase" + }, + "in_falling_price_phase": { + "name": "In Falling Price Phase" + }, + "in_flat_price_phase": { + "name": "In Flat Price Phase" + }, "connection": { "name": "Tibber API-anslutning" }, @@ -1156,7 +1211,7 @@ }, "currency_display_mode_changed": { "title": "Valutavisningsenhet ändrad för {home_name}", - "description": "Du ändrade valutavisningsläget för **{home_name}**. Alla prissensorvärden och -attribut använder nu den nya enheten (t.ex. 25,34 öre → 0,2534 kr eller tvärtom).\n\nHome Assistants Recorder visar separat en **„Enheten har ändrats“**-dialog för berörda sensorer — det kan ta några minuter eller till nästa statistikkörning (loggvarningar dyker upp tidigare). När den visas, välj **Ta bort alla gamla statistikdata** för en ren start. Välj inte „Uppdatera enheten utan konvertering“: det behåller de gamla talen med ny enhet utan att justera värdena, vilket gör historiska data faktiskt felaktiga.\n\n**Granska manuellt:**\n\n1. **Automatiseringar & mallar:** Uppdatera alla automatiseringar och mallsensorer som använder numeriska priströsklar.\n2. **Dashboard-kort:** Uppdatera kort med hårdkodade tröskelvärden eller enhetsetiketter.\n\nStäng detta meddelande efter att du har granskat dina automatiseringar och dashboards." + "description": "Du ändrade valutavisningsläget för **{home_name}**. Alla prissensorvärden och -attribut använder nu den nya enheten (t.ex. 25,34 öre → 0,2534 kr eller tvärtom).\n\nHome Assistants Recorder visar separat en **„Enheten har ändrats“**-dialog för berörda sensorer — det kan ta några minuter eller till nästa statistikkörning (loggvarningar dyker upp tidigare). När den visas, välj **Ta bort alla gamla statistikdata** för en ren start. Välj inte „Uppdatera enheten utan konvertering“: det behåller de gamla talen med ny enhet utan att justera värdena, vilket gör historiska data faktiskt felaktiga.\n\n**Granska manuellt:**\n\n1. **Automatiseringar & mallar:** Uppdatera alla automatiseringar och mallsensorer som använder numeriska priströsklar.\n2. **Dashboard-kort:** Uppdatera kort med hårdkodade tröskelvärden eller enhetsetiketter.\n\nNär du har granskat dina automatiseringar, instrumentpaneler och statistik, gå till **Inställningar → Integrationer → Tibber → Konfigurera → Visningsinställningar** och spara (utan ändringar om du vill). Det är det enda sättet att permanent stänga det här meddelandet." } }, "exceptions": {