{
  "config": {
    "step": {
      "account_choice": {
        "title": "Välj konto",
        "description": "Du kan lägga till ett annat hem från ett befintligt Tibber-konto eller ange en ny API-token för ett annat konto.",
        "data": {
          "account_choice": "Konto"
        },
        "submit": "Fortsätt →"
      },
      "new_token": {
        "title": "Ange API-token",
        "description": "Konfigurera Tibber Prisinformation & Betyg.\n\nFör att generera en API-åtkomsttoken, besök [{tibber_url}]({tibber_url}).",
        "data": {
          "access_token": "API-åtkomsttoken"
        },
        "submit": "Validera token"
      },
      "user": {
        "description": "Konfigurera Tibber Prisinformation & Betyg.\n\nFör att generera en API-åtkomsttoken, besök [{tibber_url}]({tibber_url}).",
        "data": {
          "access_token": "API-åtkomsttoken"
        },
        "submit": "Validera token"
      },
      "select_home": {
        "description": "Välj ett hem för att hämta prisinformation och betyg.",
        "data": {
          "home_id": "Hem"
        },
        "title": "Välj ett hem",
        "submit": "Välj hem"
      },
      "finish": {
        "description": "Välj ett hem för att hämta prisinformation och betyg.",
        "data": {
          "home_id": "Hem-ID"
        },
        "title": "Välj ett hem",
        "submit": "Välj hem"
      },
      "reauth_confirm": {
        "title": "Återautentisera Tibber-prisintegration",
        "description": "Åtkomsttoken för Tibber är inte längre giltig. Ange en ny API-åtkomsttoken för att fortsätta använda denna integration.\n\nFör att generera en ny API-åtkomsttoken, besök [{tibber_url}]({tibber_url}).",
        "data": {
          "access_token": "API-åtkomsttoken"
        },
        "submit": "Uppdatera token"
      }
    },
    "error": {
      "auth": "Tibber-åtkomsttoken är ogiltig.",
      "connection": "Kan inte ansluta till Tibber. Kontrollera din internetanslutning.",
      "unknown": "Oväntat fel",
      "cannot_connect": "Anslutning misslyckades",
      "invalid_access_token": "Ogiltig åtkomsttoken",
      "missing_homes": "Den nya åtkomsttoken har inte åtkomst till alla konfigurerade hem. Använd en åtkomsttoken som har åtkomst till samma Tibber-hem.",
      "home_already_configured": "Detta hem är redan konfigurerat i en annan post. Varje hem kan bara konfigureras en gång.",
      "no_active_subscription": "Detta hem har inget aktivt Tibber-avtal. Endast hem med aktiva elavtal kan läggas till i Home Assistant.",
      "subscription_expired": "Tibber-avtalet för detta hem har löpt ut. Endast hem med aktiva eller framtida elavtal kan läggas till i Home Assistant.",
      "future_subscription_warning": "Obs: Detta hems Tibber-avtal har inte börjat ännu. Funktionaliteten kan vara begränsad tills avtalet blir aktivt."
    },
    "abort": {
      "already_configured": "Alla tillgängliga Tibber-hem är redan konfigurerade. Varje hem kan bara konfigureras en gång.",
      "entry_not_found": "Tibber-konfigurationspost hittades inte.",
      "setup_complete": "Konfiguration klar! Du kan ändra ytterligare alternativ för Tibber-priser i integrationens inställningar efter att ha stängt denna dialogruta.",
      "reauth_successful": "Återautentisering lyckades. Integrationen har uppdaterats med den nya åtkomsttoken."
    }
  },
  "common": {
    "step_progress": "{step_num} / {total_steps}",
    "override_warning_template": "⚠️ {fields} styrs av konfigurationsentitet",
    "override_warning_and": "och",
    "override_field_label_best_price_min_period_length": "Minsta periodlängd",
    "override_field_label_best_price_max_level_gap_count": "Glappstolerans",
    "override_field_label_best_price_flex": "Flexibilitet",
    "override_field_label_best_price_min_distance_from_avg": "Minsta avstånd",
    "override_field_label_enable_min_periods_best": "Uppnå minsta antal",
    "override_field_label_min_periods_best": "Minimiperioder",
    "override_field_label_relaxation_attempts_best": "Avslappningsförsök",
    "override_field_label_peak_price_min_period_length": "Minsta periodlängd",
    "override_field_label_peak_price_max_level_gap_count": "Glappstolerans",
    "override_field_label_peak_price_flex": "Flexibilitet",
    "override_field_label_peak_price_min_distance_from_avg": "Minsta avstånd",
    "override_field_label_enable_min_periods_peak": "Uppnå minsta antal",
    "override_field_label_min_periods_peak": "Minimiperioder",
    "override_field_label_relaxation_attempts_peak": "Avslappningsförsök"
  },
  "config_subentries": {
    "home": {
      "entry_type": "Tidsresevy",
      "initiate_flow": {
        "user": "Skapa tidsresevy"
      },
      "title": "Skapa tidsresevy",
      "step": {
        "user": {
          "title": "Välj konfigurationspost",
          "description": "Välj den konfigurationspost som du vill skapa en tidsresevy för.\n\n**Tidsresevyer** låter dig se historisk prisdata som om det vore nuvarande tid. Detta är användbart för att testa automationer eller analysera tidigare prismönster.",
          "data": {
            "parent_entry_id": "Konfigurationspost"
          }
        },
        "time_offset": {
          "title": "Konfigurera tidsförskjutning",
          "description": "Konfigurera hur långt tillbaka i tiden denna vy ska resa.\n\n**Rekommenderat:** Använd **≥2 dagar** förskjutning för att undvika konflikter med \"igår\"-entiteter som också tillhandahåller historisk data.\n\n**Exempel:**\n• **-7 dagar**: Visa priser från 7 dagar sedan\n• **-2 dagar, 3 timmar**: Visa priser från 2 dagar och 3 timmar sedan\n• **-14 dagar**: Visa priser från 2 veckor sedan",
          "data": {
            "virtual_time_offset_days": "Dagar tillbaka",
            "time_offset": "Extra tidsförskjutning"
          },
          "data_description": {
            "virtual_time_offset_days": "Hur många dagar ska man resa tillbaka i tiden. Skjutreglage: 0 till 374 dagar (≈1 år). Rekommenderat: ≥2 dagar för att undvika konflikter med \"igår\"-entiteter.",
            "time_offset": "Valfri finjustering: Lägg till timmar och/eller minuter till dagförskjutningen. Tiden subtraheras automatiskt (resa tillbaka längre). Obs: Sekunder ignoreras - endast minutnoggrannhet stöds."
          }
        },
        "init": {
          "title": "Konfigurera om tidsförskjutning",
          "description": "Uppdatera tidsförskjutningen för denna tidsresevy.",
          "data": {
            "virtual_time_offset_days": "Dagar tillbaka",
            "time_offset": "Extra tidsförskjutning"
          },
          "data_description": {
            "virtual_time_offset_days": "Hur många dagar ska man resa tillbaka i tiden. Skjutreglage: 0 till 374 dagar (≈1 år). Rekommenderat: ≥2 dagar för att undvika konflikter med \"igår\"-entiteter.",
            "time_offset": "Valfri finjustering: Lägg till timmar och/eller minuter till dagförskjutningen. Tiden subtraheras automatiskt (resa tillbaka längre). Obs: Sekunder ignoreras - endast minutnoggrannhet stöds."
          }
        }
      },
      "error": {
        "no_time_offset": "Minst ett tidsförskjutningsvärde måste vara negativt (endast historisk data)."
      },
      "abort": {
        "already_configured": "**En tidsresevy med exakt denna tidsförskjutning finns redan.**\n\nVälj en annan förskjutning.",
        "no_main_entries": "Inga huvudkonfigurationsposter hittades. Lägg till ett Tibber-hem först.",
        "parent_entry_not_found": "Vald konfigurationspost hittades inte."
      }
    }
  },
  "options": {
    "step": {
      "init": {
        "menu_options": {
          "general_settings": "⚙️ Allmänna inställningar",
          "display_settings": "💱 Valutavisning",
          "current_interval_price_rating": "📊 Prisbetyg",
          "price_level": "🏷️ Prisnivå",
          "volatility": "💨 Prisvolatilitet",
          "best_price": "💚 Bästa Prisperiod",
          "peak_price": "🔴 Topprisperiod",
          "price_trend": "📈 Pristrend",
          "chart_data_export": "📊 Diagramdataexport-sensor",
          "reset_to_defaults": "🔄 Återställ till standard",
          "finish": "⬅️ Tillbaka"
        }
      },
      "general_settings": {
        "title": "⚙️ Allmänna inställningar",
        "description": "**Konfigurera allmänna inställningar för Tibber prisinformation och betyg.**\n\n---\n\n**Användare:** {user_login}",
        "data": {
          "extended_descriptions": "Utökade beskrivningar",
          "average_sensor_display": "Visa genomsnittssensor"
        },
        "data_description": {
          "extended_descriptions": "Kontrollerar om entitetsattribut inkluderar detaljerade förklaringar och användningstips.\n\n• Inaktiverad (standard): Endast kort beskrivning\n• Aktiverad: Detaljerad förklaring + praktiska användningsexempel\n\nExempel:\nInaktiverad = 1 attribut\nAktiverad = 2 ytterligare attribut",
          "average_sensor_display": "Välj vilket statistiskt mått som ska visas i sensortillståndet för genomsnittsprissensorer. Det andra värdet visas som ett attribut.\n\n• **Median (standard)**: Visar det 'typiska' priset, resistent mot extrema toppar - bäst för visning och mänsklig tolkning\n• **Aritmetiskt medelvärde**: Visar det sanna matematiska genomsnittet inklusive alla priser - bäst när du behöver exakta kostnadsberäkningar\n\nFör automatiseringar, använd attributet `price_mean` eller `price_median` för att komma åt båda värdena oavsett denna inställning."
        },
        "submit": "↩ Spara & tillbaka"
      },
      "display_settings": {
        "title": "💱 Valutavisningsinställningar",
        "description": "**Konfigurera hur elpriser visas - i basvaluta (€, kr) eller underenhet (ct, øre).**\n\n---",
        "data": {
          "currency_display_mode": "Visningsläge"
        },
        "data_description": {
          "currency_display_mode": "Välj hur priser visas:\n\n• **Basvaluta** (€/kWh, kr/kWh): Decimalvärden (t.ex. 0,25 €/kWh) - skillnader synliga från 3:e-4:e decimalen\n• **Underenhetsvaluta** (ct/kWh, øre/kWh): Större värden (t.ex. 25,00 ct/kWh) - skillnader synliga från 1:a decimalen\n\nStandard beror på din valuta:\n• EUR → Underenhet (cent) - Tysk/nederländsk preferens\n• NOK/SEK/DKK → Bas (kronor) - Skandinavisk preferens\n• USD/GBP → Basvaluta\n\n**💡 Tips:** När du väljer Underenhetsvaluta kan du aktivera den extra sensorn \"Aktuellt Elpris (Energidashboard)\" (inaktiverad som standard)."
        },
        "submit": "↩ Spara & tillbaka"
      },
      "current_interval_price_rating": {
        "title": "📊 Prisbetyginställningar",
        "description": "**Konfigurera tröskelvärden och stabilisering för prisbetygsnivåer (låg/normal/hög) baserat på jämförelse med glidande 24-timmars genomsnitt.**{entity_warning}",
        "data": {
          "price_rating_threshold_low": "Låg tröskel",
          "price_rating_threshold_high": "Hög tröskel",
          "price_rating_hysteresis": "Hysteres",
          "price_rating_gap_tolerance": "Gap-tolerans"
        },
        "data_description": {
          "price_rating_threshold_low": "Procentandel under det glidande 24-timmars genomsnittet som det aktuella priset måste vara för att kvalificera som 'lågt' betyg. Exempel: -10 betyder minst 10% under genomsnittet. Sensorer med detta betyg indikerar gynnsamma tidsfönster. Standard: -10%",
          "price_rating_threshold_high": "Procentandel över det glidande 24-timmars genomsnittet som det aktuella priset måste vara för att kvalificera som 'högt' betyg. Exempel: 10 betyder minst 10% över genomsnittet. Sensorer med detta betyg varnar om dyra tidsfönster. Standard: 10%",
          "price_rating_hysteresis": "Procentband runt tröskelvärden för att undvika snabba tillståndsändringar. När betyget redan är LÅGT måste priset stiga över (tröskel + hysteres) för att byta till NORMAL. Likaså kräver HÖGT att priset faller under (tröskel - hysteres) för att lämna tillståndet. Detta ger stabilitet för automatiseringar som reagerar på betygsändringar. Sätt till 0 för att inaktivera. Standard: 2%",
          "price_rating_gap_tolerance": "Maximalt antal på varandra följande intervaller som kan 'jämnas ut' om de avviker från omgivande betyg. Små isolerade betygsändringar sammanfogas med det dominerande grannblocket. Detta ger stabilitet för automatiseringar genom att förhindra att korta betygstoppar utlöser onödiga åtgärder. Exempel: 1 betyder att ett enstaka 'normal'-intervall omgivet av 'hög'-intervaller korrigeras till 'hög'. Sätt till 0 för att inaktivera. Standard: 1"
        },
        "submit": "↩ Spara & tillbaka"
      },
      "best_price": {
        "title": "💚 Bästa Prisperiod-inställningar",
        "description": "**Konfigurera inställningar för binärsensorn Bästa Prisperiod. Denna sensor är aktiv under perioder med lägsta elpriserna.**{entity_warning}{override_warning}\n\n---",
        "sections": {
          "period_settings": {
            "name": "Periodlängd & Nivåer",
            "description": "Konfigurera hur långa perioder ska vara och vilka prisnivåer som ska inkluderas.",
            "data": {
              "best_price_min_period_length": "Minsta Periodlängd",
              "best_price_max_level": "Prisnivåfilter",
              "best_price_max_level_gap_count": "Gaptolerans"
            },
            "data_description": {
              "best_price_min_period_length": "Minsta varaktighet för en period för att betraktas som 'bästa pris'. Längre perioder är mer praktiska för att köra apparater som diskmaskiner eller värmepumpar. Bästa prisperioder kräver 60 minuter minimum (jämfört med 30 minuter för topprisvarningar) eftersom de bör ge meningsfulla tidsfönster för förbrukningsplanering, inte bara korta möjligheter.",
              "best_price_max_level": "Visa endast bästa prisperioder om de innehåller intervall med prisnivåer ≤ valt värde. Till exempel betyder valet '**Billigt**' att perioden måste ha minst ett '**Mycket billigt**' eller '**Billigt**' intervall. Detta säkerställer att 'bästa pris'-perioder inte bara är relativt billiga för dagen, utan faktiskt billiga i absoluta termer. Välj '**Alla**' för att visa bästa priser oavsett deras absoluta prisnivå.",
              "best_price_max_level_gap_count": "Maximalt antal konsekutiva intervall som tillåts avvika med exakt ett nivåsteg från den nödvändiga nivån. Till exempel: med '**Billigt**'-filter och gapantal 1, accepteras sekvensen '**Billigt**, **Billigt**, **Normalt**, **Billigt**' (**Normalt** är ett steg över **Billigt**). Detta förhindrar att perioder delas upp av tillfälliga nivåavvikelser. **Obs:** Gaptolerans kräver perioder ≥90 minuter (6 intervall) för att upptäcka avvikare effektivt. Standard: 0 (strikt filtrering, ingen tolerans)."
            }
          },
          "flexibility_settings": {
            "name": "Flexibilitet & Trösklar",
            "description": "Kontrollera hur mycket priser kan avvika och fortfarande kvalificera som 'bästa pris'.",
            "data": {
              "best_price_flex": "Flexibilitet",
              "best_price_min_distance_from_avg": "Minimiavstånd"
            },
            "data_description": {
              "best_price_flex": "Maximum över dagens minimipris som intervall kan vara och fortfarande kvalificera som 'bästa pris'. Rekommenderat: 15-20 med relaxation aktiverad (standard), eller 25-35 utan relaxation. Maximum: 50 (hård gräns för pålitlig perioddetektering).",
              "best_price_min_distance_from_avg": "Säkerställer att perioder är betydligt billigare än dagsgenomsnittet, inte bara marginellt under det. Detta filtrerar bort brus och förhindrar att perioder strax under genomsnittet markeras som 'bästa pris' på dagar med platta priser. Högre värden = striktare filtrering (endast verkligt billiga perioder kvalificerar). Standard: 5 betyder att perioder måste vara minst 5% under dagsgenomsnittet."
            }
          },
          "relaxation_and_target_periods": {
            "name": "Relaxation & Målperioder",
            "description": "Konfigurera automatisk filterrelaxation och målperiodsantal. Aktivera 'Uppnå Minimiantal' för att aktivera relaxation.",
            "data": {
              "enable_min_periods_best": "Uppnå Minimiantal",
              "min_periods_best": "Minsta Perioder",
              "relaxation_attempts_best": "Relaxationsförsök"
            },
            "data_description": {
              "enable_min_periods_best": "När aktiverad kommer filter gradvis att relaxeras om inte tillräckligt många perioder hittas. Detta försöker nå det önskade minimiantalet perioder, vilket kan inkludera mindre optimala tidsfönster som bästa-pris-perioder.",
              "min_periods_best": "Minsta antal bästa prisperioder att sikta på per dag. Filter kommer att relaxeras steg för steg för att försöka uppnå detta antal. Endast aktiv när 'Uppnå Minimiantal' är aktiverad. Standard: 1",
              "relaxation_attempts_best": "Hur många flexnivåer (försök) att prova innan man ger upp. Varje försök kör alla filterkombinationer på den nya flexnivån. Fler försök ökar chansen att hitta ytterligare perioder på bekostnad av längre behandlingstid."
            }
          },
          "extension_settings": {
            "name": "Utvidgning av periodändarna",
            "description": "Utvidga eventuellt hittade bästa-prisperioder vid båda ändarna för att inkludera angränsande mycket billiga intervall.",
            "data": {
              "best_price_extend_to_very_cheap": "Utvidga till mycket billiga intervall",
              "best_price_max_extension_intervals": "Maximalt antal utvidgningsintervall",
              "best_price_geometric_flex": "Geometrisk flexbonus",
              "best_price_segment_forcing": "W-form segmenttvingning",
              "best_price_segment_min_periods": "Perioder per segment"
            },
            "data_description": {
              "best_price_extend_to_very_cheap": "När aktiverat utvidgas hittade bästa-prisperioder utåt för att inkludera angränsande intervall med prisnivån 'Mycket billig'. Detta fångar upp extremt billiga intervall vid kanterna av hittade perioder.",
              "best_price_max_extension_intervals": "Maximalt antal extra intervall per sida (vänster och höger kant). Varje intervall är 15 minuter. Exempel: 4 intervall = upp till 1 timmes utvidgning per kant. Standard: 4",
              "best_price_geometric_flex": "Extra flexprocentandel för intervall som faller inom en detekterad prisdal (V-form). När ett dalmönster detekteras för dagen får intervall inom dalzonen denna extra tolerans, vilket gör att perioddektorn är mer benägen att inkludera dem. 0 = inaktiverad. Standard: 0",
              "best_price_segment_forcing": "När aktiverat delas dagar med W-formad priskurva (två dalar åtskilda av en central topp) vid den centrala toppen. Periodedetektering körs oberoende för varje dalsida för att säkerställa att varje dal får det erforderliga antalet perioder.",
              "best_price_segment_min_periods": "Minsta antal bästa-prisperioder per dalsida när W-form segmenttvingning är aktiverat. Varje sida måste oberoende producera minst detta antal perioder. Standard: 1"
            }
          }
        },
        "submit": "↩ Spara & tillbaka"
      },
      "peak_price": {
        "title": "🔴 Topprisperiod-inställningar",
        "description": "**Konfigurera inställningar för binärsensorn Topprisperiod. Denna sensor är aktiv under perioder med högsta elpriserna.**{entity_warning}{override_warning}\n\n---",
        "sections": {
          "period_settings": {
            "name": "Periodinställningar",
            "description": "Konfigurera periodlängd och prisnivåbegränsningar.",
            "data": {
              "peak_price_min_period_length": "Minsta Periodlängd",
              "peak_price_min_level": "Prisnivåfilter",
              "peak_price_max_level_gap_count": "Gaptolerans"
            },
            "data_description": {
              "peak_price_min_period_length": "Minsta varaktighet för en period för att betraktas som 'topppris'. Topprisvarningar är tillåtna för kortare perioder (30 minuters minimum jämfört med 60 minuter för bästa pris) eftersom korta dyra toppar är värda att varna om, även om de är för korta för förbrukningsplanering.",
              "peak_price_min_level": "Visa endast topprisperioder om de innehåller intervall med prisnivåer ≥ valt värde. Till exempel betyder valet '**Dyrt**' att perioden måste ha minst ett '**Dyrt**' eller '**Mycket dyrt**' intervall. Detta säkerställer att 'topppris'-perioder inte bara är relativt dyra för dagen, utan faktiskt dyra i absoluta termer. Välj '**Alla**' för att visa topppriser oavsett deras absoluta prisnivå.",
              "peak_price_max_level_gap_count": "Maximalt antal konsekutiva intervall som tillåts avvika med exakt ett nivåsteg från den nödvändiga nivån. Till exempel: med '**Dyrt**'-filter och gapantal 2, accepteras sekvensen '**Dyrt**, **Normalt**, **Normalt**, **Dyrt**' (**Normalt** är ett steg under **Dyrt**). Detta förhindrar att perioder delas upp av tillfälliga nivåavvikelser. **Obs:** Gaptolerans kräver perioder ≥90 minuter (6 intervall) för att upptäcka avvikare effektivt. Standard: 0 (strikt filtrering, ingen tolerans)."
            }
          },
          "flexibility_settings": {
            "name": "Flexibilitetsinställningar",
            "description": "Konfigurera prisjämförelsetrösklar och filtrering.",
            "data": {
              "peak_price_flex": "Flexibilitet",
              "peak_price_min_distance_from_avg": "Minimiavstånd"
            },
            "data_description": {
              "peak_price_flex": "Maximum under dagens maximipris som intervall kan vara och fortfarande kvalificera som 'topppris'. Rekommenderat: -15 till -20 med relaxation aktiverad (standard), eller -25 till -35 utan relaxation. Maximum: -50 (hård gräns för pålitlig perioddetektering). Obs: Negativa värden indikerar avstånd under maximum.",
              "peak_price_min_distance_from_avg": "Säkerställer att perioder är betydligt dyrare än dagsgenomsnittet, inte bara marginellt över det. Detta filtrerar bort brus och förhindrar att perioder strax över genomsnittet markeras som 'topppris' på dagar med platta priser. Högre värden = striktare filtrering (endast verkligt dyra perioder kvalificerar). Standard: 5 betyder att perioder måste vara minst 5% över dagsgenomsnittet."
            }
          },
          "relaxation_and_target_periods": {
            "name": "Relaxation & Målperioder",
            "description": "Konfigurera automatisk filterrelaxation och målperiodsantal. Aktivera 'Uppnå Minimiantal' för att aktivera relaxation.",
            "data": {
              "enable_min_periods_peak": "Uppnå Minimiantal",
              "min_periods_peak": "Minsta Perioder",
              "relaxation_attempts_peak": "Relaxationsförsök"
            },
            "data_description": {
              "enable_min_periods_peak": "När aktiverad kommer filter gradvis att relaxeras om inte tillräckligt många perioder hittas. Detta försöker nå det önskade minimiantalet perioder för att säkerställa att du varnas om dyra perioder även på dagar med ovanliga prismönster.",
              "min_periods_peak": "Minsta antal topprisperioder att sikta på per dag. Filter kommer att relaxeras steg för steg för att försöka uppnå detta antal. Endast aktiv när 'Uppnå Minimiantal' är aktiverad. Standard: 1",
              "relaxation_attempts_peak": "Hur många flexnivåer (försök) att prova innan man ger upp. Varje försök kör alla filterkombinationer på den nya flexnivån. Fler försök ökar chansen att hitta ytterligare toppperioder på bekostnad av längre behandlingstid."
            }
          },
          "extension_settings": {
            "name": "Utvidgning av periodändarna",
            "description": "Utvidga eventuellt hittade topprisperioder vid båda ändarna för att inkludera angränsande mycket dyra intervall.",
            "data": {
              "peak_price_extend_to_very_expensive": "Utvidga till mycket dyra intervall",
              "peak_price_max_extension_intervals": "Maximalt antal utvidgningsintervall",
              "peak_price_geometric_flex": "Geometrisk flexbonus",
              "peak_price_segment_forcing": "M-form segmenttvingning",
              "peak_price_segment_min_periods": "Perioder per segment"
            },
            "data_description": {
              "peak_price_extend_to_very_expensive": "När aktiverat utvidgas hittade topprisperioder utåt för att inkludera angränsande intervall med prisnivån 'Mycket dyr'. Detta fångar upp extremt dyra intervall vid kanterna av hittade perioder.",
              "peak_price_max_extension_intervals": "Maximalt antal extra intervall per sida (vänster och höger kant). Varje intervall är 15 minuter. Exempel: 4 intervall = upp till 1 timmes utvidgning per kant. Standard: 4",
              "peak_price_geometric_flex": "Extra flexprocentandel för intervall som faller inom en detekterad prispeak (Λ-form). När ett peak-mönster detekteras för dagen får intervall inom peakzonen denna extra tolerans, vilket gör att perioddetektor är mer benägen att inkludera dem. 0 = inaktiverad. Standard: 0",
              "peak_price_segment_forcing": "När aktiverat delas dagar med M-formad priskurva (två toppar åtskilda av en central dal) vid den centrala dalen. Periodedetektering körs oberoende för varje toppsida för att säkerställa att varje topp får det erforderliga antalet perioder.",
              "peak_price_segment_min_periods": "Minsta antal topprisperioder per toppsida när M-form segmenttvingning är aktiverat. Varje sida måste oberoende producera minst detta antal perioder. Standard: 1"
            }
          }
        },
        "submit": "↩ Spara & tillbaka"
      },
      "price_trend": {
        "title": "📈 Pristrendtrösklar",
        "description": "**Konfigurera tröskelvärden för pristrendsensorer. Dessa sensorer jämför aktuellt pris med genomsnittet av de nästa N timmarna för att bestämma om priserna stiger kraftigt, stiger, är stabila, faller eller faller kraftigt.**{entity_warning}",
        "data": {
          "price_trend_threshold_rising": "Stigande tröskel",
          "price_trend_threshold_strongly_rising": "Kraftigt stigande tröskel",
          "price_trend_threshold_falling": "Fallande tröskel",
          "price_trend_threshold_strongly_falling": "Kraftigt fallande tröskel",
          "price_trend_change_confirmation": "Trendändringsbekräftelse",
          "price_trend_min_price_change": "Min. prisändring (trend)",
          "price_trend_min_price_change_strongly": "Min. prisändring (stark trend)"
        },
        "data_description": {
          "price_trend_threshold_rising": "Procentandel som genomsnittet av de nästa N timmarna måste vara över det aktuella priset för att kvalificera som 'stigande' trend. Exempel: 3 betyder att genomsnittet är minst 3% högre → priserna kommer att stiga. Typiska värden: 3-10%. Standard: 3%",
          "price_trend_threshold_strongly_rising": "Procentandel som genomsnittet av de nästa N timmarna måste vara över det aktuella priset för att kvalificera som 'kraftigt stigande' trend. Måste vara högre än stigande tröskel. Typiska värden: 6-20%. Standard: 9%",
          "price_trend_threshold_falling": "Procentandel (negativ) som genomsnittet av de nästa N timmarna måste vara under det aktuella priset för att kvalificera som 'fallande' trend. Exempel: -3 betyder att genomsnittet är minst 3% lägre → priserna kommer att falla. Typiska värden: -3 till -10%. Standard: -3%",
          "price_trend_threshold_strongly_falling": "Procentandel (negativ) som genomsnittet av de nästa N timmarna måste vara under det aktuella priset för att kvalificera som 'kraftigt fallande' trend. Måste vara lägre (mer negativ) än fallande tröskel. Typiska värden: -6 till -20%. Standard: -9%",
          "price_trend_change_confirmation": "Antal på varandra följande 15-minutersintervall som måste bekräfta en ny trendriktning innan en trendändring rapporteras. Högre värden innebär mer stabilitet och färre falska ändringar, lägre värden innebär snabbare upptäckt. Intervall: 2 (30 min) till 6 (90 min). Standard: 3 (45 min)",
          "price_trend_min_price_change": "Minsta absoluta prisskillnad (i ct/öre) som krävs för en 'stigande' eller 'fallande' trend. Förhindrar att minimala prisändringar utlöser trender vid låga prisnivåer. Sätt till 0 för att inaktivera (rent procentläge). Standard: 0,5",
          "price_trend_min_price_change_strongly": "Minsta absoluta prisskillnad (i ct/öre) som krävs för en 'kraftigt stigande' eller 'kraftigt fallande' trend. Bör vara högre än det vanliga trendminimumet. Sätt till 0 för att inaktivera. Standard: 1,5"
        },
        "submit": "↩ Spara & tillbaka"
      },
      "volatility": {
        "title": "💨 Prisvolatilitetströsklar",
        "description": "**Konfigurera tröskelvärden för volatilitetsklassificering.** Volatilitet mäter relativ prisvariation med variationskoefficienten (CV = standardavvikelse / medelvärde × 100%). Dessa tröskelvärden är procentvärden som fungerar över alla prisnivåer.\n\nAnvänds av:\n• Volatilitetssensorer (klassificering)\n• Trendsensorer (adaptiv tröskeljustering: &lt;måttlig = mer känslig, ≥hög = mindre känslig){entity_warning}",
        "data": {
          "volatility_threshold_moderate": "Måttlig tröskel",
          "volatility_threshold_high": "Hög tröskel",
          "volatility_threshold_very_high": "Mycket hög tröskel"
        },
        "data_description": {
          "volatility_threshold_moderate": "Variationskoefficient (CV) vid vilken priser anses 'måttligt volatila'. CV = (standardavvikelse / medelvärde) × 100%. Exempel: 15 betyder prisfluktuationer på ±15% runt genomsnittet. Sensorer visar denna klassificering, trendsensorer blir mer känsliga. Standard: 15%",
          "volatility_threshold_high": "Variationskoefficient (CV) vid vilken priser anses 'högvolatila'. Exempel: 30 betyder prisfluktuationer på ±30% runt genomsnittet. Större prishopp förväntas, trendsensorer blir mindre känsliga. Standard: 30%",
          "volatility_threshold_very_high": "Variationskoefficient (CV) vid vilken priser anses 'mycket högvolatila'. Exempel: 50 betyder extrema prisfluktuationer på ±50% runt genomsnittet. På sådana dagar är starka pristoppar troliga. Standard: 50%"
        },
        "submit": "↩ Spara & tillbaka"
      },
      "chart_data_export": {
        "title": "📊 Diagramdataexport-sensor",
        "description": "Diagramdataexport-sensorn tillhandahåller prisdata som sensorattribut.\n\n⚠️ **Obs:** Denna sensor är en äldre funktion för kompatibilitet med äldre verktyg.\n\n**Rekommenderat för nya konfigurationer:** Använd `tibber_prices.get_chartdata` **tjänsten direkt** - den är mer flexibel, effektiv och det moderna Home Assistant-sättet.\n\n**När denna sensor är meningsfull:**\n\n✅ Ditt instrumentpanelverktyg kan **endast** läsa attribut (inga tjänsteanrop)\n✅ Du behöver statisk data som uppdateras automatiskt\n❌ **Inte för automationer:** Använd `tibber_prices.get_chartdata` direkt där - mer flexibelt och effektivt!\n\n---\n\n{sensor_status_info}",
        "submit": "↩ Ok & tillbaka"
      },
      "reset_to_defaults": {
        "title": "🔄 Återställ till standard",
        "description": "⚠️ **Varning:** Detta kommer att återställa **ALLA** inställningar till fabriksstandard.\n\n**Vad som kommer att återställas:**\n• Alla prisbetygströsklar\n• Alla volatilitetströsklar\n• Alla pristrendtrösklar\n• Alla bästa prisperiodinställningar\n• Alla topprisperiodinställningar\n• Visningsinställningar\n• Allmänna inställningar\n\n**Vad som INTE kommer att återställas:**\n• Din Tibber API-token\n• Valt hem\n• Valuta\n\n**💡 Tips:** Detta är användbart om du vill börja om från början efter att ha experimenterat med inställningar.",
        "data": {
          "confirm_reset": "Ja, återställ allt till standard"
        },
        "submit": "Återställ nu"
      },
      "price_level": {
        "title": "🏷️ Prisnivå-inställningar",
        "description": "**Konfigurera stabilisering för Tibbers prisnivå-klassificering (mycket billig/billig/normal/dyr/mycket dyr).**\n\nTibbers API tillhandahåller ett prisnivå-fält för varje intervall. Denna inställning jämnar ut korta fluktuationer för att förhindra instabilitet i automatiseringar.{entity_warning}",
        "data": {
          "price_level_gap_tolerance": "Gap-tolerans"
        },
        "data_description": {
          "price_level_gap_tolerance": "Maximalt antal på varandra följande intervaller som kan 'jämnas ut' om de avviker från omgivande prisnivåer. Små isolerade nivåförändringar sammanfogas med det dominerande grannblocket. Exempel: 1 betyder att ett enstaka 'normal'-intervall omgivet av 'billig'-intervaller korrigeras till 'billig'. Sätt till 0 för att inaktivera. Standard: 1"
        },
        "submit": "↩ Spara & tillbaka"
      }
    },
    "error": {
      "auth": "Tibber-åtkomsttoken är ogiltig.",
      "connection": "Kan inte ansluta till Tibber. Kontrollera din internetanslutning.",
      "unknown": "Ett oväntat fel inträffade. Kontrollera loggarna för detaljer.",
      "cannot_connect": "Anslutning misslyckades",
      "invalid_access_token": "Ogiltig åtkomsttoken",
      "different_home": "Åtkomsttoken är inte giltig för det hem-ID som denna integration är konfigurerad för.",
      "invalid_period_length": "Periodlängd måste vara minst 15 minuter (multiplar av 15).",
      "invalid_flex": "Flexibilitetsprocent måste vara mellan -50% och +50%",
      "invalid_best_price_distance": "Avstånds procent måste vara mellan -50% och 0% (negativ = under genomsnitt)",
      "invalid_peak_price_distance": "Avstånds procent måste vara mellan 0% och 50% (positiv = över genomsnitt)",
      "invalid_min_periods": "Minsta perioder måste vara mellan 1 och 10",
      "invalid_gap_count": "Gapantal måste vara mellan 0 och 8",
      "invalid_relaxation_attempts": "Relaxationsförsök måste vara mellan 1 och 12",
      "invalid_price_rating_low": "Låg prisbetygströskel måste vara mellan -50% och -5%",
      "invalid_price_rating_high": "Hög prisbetygströskel måste vara mellan 5% och 50%",
      "invalid_price_rating_thresholds": "Låg tröskel måste vara mindre än hög tröskel",
      "invalid_volatility_threshold_moderate": "Måttlig volatilitetströskel måste vara mellan 5% och 25%",
      "invalid_volatility_threshold_high": "Hög volatilitetströskel måste vara mellan 20% och 40%",
      "invalid_volatility_threshold_very_high": "Mycket hög volatilitetströskel måste vara mellan 35% och 80%",
      "invalid_volatility_thresholds": "Trösklar måste vara i stigande ordning: måttlig < hög < mycket hög",
      "invalid_price_trend_rising": "Stigande trendtröskel måste vara mellan 1% och 50%",
      "invalid_price_trend_falling": "Fallande trendtröskel måste vara mellan -50% och -1%",
      "invalid_price_trend_strongly_rising": "Kraftigt stigande trendtröskel måste vara mellan 2% och 100%",
      "invalid_price_trend_strongly_falling": "Kraftigt fallande trendtröskel måste vara mellan -100% och -2%",
      "invalid_trend_strongly_rising_less_than_rising": "Kraftigt stigande-tröskel måste vara högre än stigande-tröskel",
      "invalid_trend_strongly_falling_greater_than_falling": "Kraftigt fallande-tröskel måste vara lägre (mer negativ) än fallande-tröskel"
    },
    "abort": {
      "entry_not_found": "Tibber-konfigurationspost hittades inte.",
      "reset_cancelled": "Återställning avbruten. Inga ändringar gjordes i din konfiguration.",
      "reset_successful": "✅ Alla inställningar har återställts till fabriksstandard. Din konfiguration är nu som en ny installation.",
      "finished": "Konfiguration slutförd."
    }
  },
  "entity": {
    "sensor": {
      "current_interval_price": {
        "name": "Aktuellt elpris"
      },
      "current_interval_price_base": {
        "name": "Aktuellt elpris (Energidashboard)"
      },
      "next_interval_price": {
        "name": "Nästa elpris"
      },
      "previous_interval_price": {
        "name": "Föregående elpris"
      },
      "current_hour_average_price": {
        "name": "⌀ Timpris aktuell"
      },
      "next_hour_average_price": {
        "name": "⌀ Timpris nästa"
      },
      "current_interval_price_level": {
        "name": "Aktuell prisnivå",
        "state": {
          "very_cheap": "Mycket billigt",
          "cheap": "Billigt",
          "normal": "Normalt",
          "expensive": "Dyrt",
          "very_expensive": "Mycket dyrt"
        }
      },
      "next_interval_price_level": {
        "name": "Nästa prisnivå",
        "state": {
          "very_cheap": "Mycket billigt",
          "cheap": "Billigt",
          "normal": "Normalt",
          "expensive": "Dyrt",
          "very_expensive": "Mycket dyrt"
        }
      },
      "previous_interval_price_level": {
        "name": "Föregående prisnivå",
        "state": {
          "very_cheap": "Mycket billigt",
          "cheap": "Billigt",
          "normal": "Normalt",
          "expensive": "Dyrt",
          "very_expensive": "Mycket dyrt"
        }
      },
      "current_hour_price_level": {
        "name": "Aktuell timprisnivå",
        "state": {
          "very_cheap": "Mycket billigt",
          "cheap": "Billigt",
          "normal": "Normalt",
          "expensive": "Dyrt",
          "very_expensive": "Mycket dyrt"
        }
      },
      "next_hour_price_level": {
        "name": "Nästa timprisnivå",
        "state": {
          "very_cheap": "Mycket billigt",
          "cheap": "Billigt",
          "normal": "Normalt",
          "expensive": "Dyrt",
          "very_expensive": "Mycket dyrt"
        }
      },
      "lowest_price_today": {
        "name": "Dagens lägsta pris"
      },
      "highest_price_today": {
        "name": "Dagens högsta pris"
      },
      "average_price_today": {
        "name": "⌀ Pris idag"
      },
      "lowest_price_tomorrow": {
        "name": "Morgondagens lägsta pris"
      },
      "highest_price_tomorrow": {
        "name": "Morgondagens högsta pris"
      },
      "average_price_tomorrow": {
        "name": "⌀ Pris imorgon"
      },
      "yesterday_price_level": {
        "name": "Gårdagens prisnivå",
        "state": {
          "very_cheap": "Mycket billigt",
          "cheap": "Billigt",
          "normal": "Normalt",
          "expensive": "Dyrt",
          "very_expensive": "Mycket dyrt"
        }
      },
      "today_price_level": {
        "name": "Dagens prisnivå",
        "state": {
          "very_cheap": "Mycket billigt",
          "cheap": "Billigt",
          "normal": "Normalt",
          "expensive": "Dyrt",
          "very_expensive": "Mycket dyrt"
        }
      },
      "tomorrow_price_level": {
        "name": "Morgondagens prisnivå",
        "state": {
          "very_cheap": "Mycket billigt",
          "cheap": "Billigt",
          "normal": "Normalt",
          "expensive": "Dyrt",
          "very_expensive": "Mycket dyrt"
        }
      },
      "yesterday_price_rating": {
        "name": "Gårdagens prisbetyg",
        "state": {
          "low": "Låg",
          "normal": "Normal",
          "high": "Hög"
        }
      },
      "today_price_rating": {
        "name": "Dagens prisbetyg",
        "state": {
          "low": "Låg",
          "normal": "Normal",
          "high": "Hög"
        }
      },
      "tomorrow_price_rating": {
        "name": "Morgondagens prisbetyg",
        "state": {
          "low": "Låg",
          "normal": "Normal",
          "high": "Hög"
        }
      },
      "trailing_price_average": {
        "name": "⌀ Pris glidande 24h"
      },
      "leading_price_average": {
        "name": "⌀ Pris framåt 24h"
      },
      "trailing_price_min": {
        "name": "Glidande 24h minimipris"
      },
      "trailing_price_max": {
        "name": "Glidande 24h maximipris"
      },
      "leading_price_min": {
        "name": "Framåt 24h minimipris"
      },
      "leading_price_max": {
        "name": "Framåt 24h maximipris"
      },
      "current_interval_price_rating": {
        "name": "Aktuellt prisbetyg",
        "state": {
          "low": "Låg",
          "normal": "Normal",
          "high": "Hög"
        }
      },
      "next_interval_price_rating": {
        "name": "Nästa prisbetyg",
        "state": {
          "low": "Låg",
          "normal": "Normal",
          "high": "Hög"
        }
      },
      "previous_interval_price_rating": {
        "name": "Föregående prisbetyg",
        "state": {
          "low": "Låg",
          "normal": "Normal",
          "high": "Hög"
        }
      },
      "current_hour_price_rating": {
        "name": "Aktuellt timprisbetyg",
        "state": {
          "low": "Låg",
          "normal": "Normal",
          "high": "Hög"
        }
      },
      "next_hour_price_rating": {
        "name": "Nästa timprisbetyg",
        "state": {
          "low": "Låg",
          "normal": "Normal",
          "high": "Hög"
        }
      },
      "next_avg_1h": {
        "name": "⌀ Pris nästa 1h"
      },
      "next_avg_2h": {
        "name": "⌀ Pris nästa 2h"
      },
      "next_avg_3h": {
        "name": "⌀ Pris nästa 3h"
      },
      "next_avg_4h": {
        "name": "⌀ Pris nästa 4h"
      },
      "next_avg_5h": {
        "name": "⌀ Pris nästa 5h"
      },
      "next_avg_6h": {
        "name": "⌀ Pris nästa 6h"
      },
      "next_avg_8h": {
        "name": "⌀ Pris nästa 8h"
      },
      "next_avg_12h": {
        "name": "⌀ Pris nästa 12h"
      },
      "price_outlook_1h": {
        "name": "Prisöversikt (1h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_outlook_2h": {
        "name": "Prisöversikt (2h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_outlook_3h": {
        "name": "Prisöversikt (3h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_outlook_4h": {
        "name": "Prisöversikt (4h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_outlook_5h": {
        "name": "Prisöversikt (5h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_outlook_6h": {
        "name": "Prisöversikt (6h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_outlook_8h": {
        "name": "Prisöversikt (8h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_outlook_12h": {
        "name": "Prisöversikt (12h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_trajectory_2h": {
        "name": "Prisutveckling (2h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_trajectory_3h": {
        "name": "Prisutveckling (3h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_trajectory_4h": {
        "name": "Prisutveckling (4h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_trajectory_5h": {
        "name": "Prisutveckling (5h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_trajectory_6h": {
        "name": "Prisutveckling (6h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_trajectory_8h": {
        "name": "Prisutveckling (8h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "price_trajectory_12h": {
        "name": "Prisutveckling (12h)",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "current_price_trend": {
        "name": "Aktuell pristrend",
        "state": {
          "strongly_rising": "Kraftigt stigande",
          "rising": "Stigande",
          "stable": "Stabil",
          "falling": "Fallande",
          "strongly_falling": "Kraftigt fallande"
        }
      },
      "next_price_trend_change": {
        "name": "Nästa pristrendändring"
      },
      "next_price_trend_change_in": {
        "name": "Nästa pristrendändring om"
      },
      "daily_rating": {
        "name": "Dagligt prisbetyg"
      },
      "monthly_rating": {
        "name": "Månatligt prisbetyg"
      },
      "data_lifecycle_status": {
        "name": "Datalivscykelstatus",
        "state": {
          "cached": "Cachad",
          "fresh": "Färsk",
          "refreshing": "Uppdaterar",
          "searching_tomorrow": "Söker morgondag",
          "turnover_pending": "Väntar på övergång",
          "error": "Fel"
        }
      },
      "today_volatility": {
        "name": "Dagens prisvolatilitet",
        "state": {
          "low": "Låg",
          "moderate": "Måttlig",
          "high": "Hög",
          "very_high": "Mycket hög"
        }
      },
      "tomorrow_volatility": {
        "name": "Morgondagens prisvolatilitet",
        "state": {
          "low": "Låg",
          "moderate": "Måttlig",
          "high": "Hög",
          "very_high": "Mycket hög"
        }
      },
      "next_24h_volatility": {
        "name": "Nästa 24h prisvolatilitet",
        "state": {
          "low": "Låg",
          "moderate": "Måttlig",
          "high": "Hög",
          "very_high": "Mycket hög"
        }
      },
      "today_tomorrow_volatility": {
        "name": "Idag+Imorgon prisvolatilitet",
        "state": {
          "low": "Låg",
          "moderate": "Måttlig",
          "high": "Hög",
          "very_high": "Mycket hög"
        }
      },
      "best_price_end_time": {
        "name": "Bästa pris slutar"
      },
      "best_price_period_duration": {
        "name": "Bästa pris varaktighet"
      },
      "best_price_remaining_minutes": {
        "name": "Bästa pris återstående tid"
      },
      "best_price_progress": {
        "name": "Bästa pris framsteg"
      },
      "best_price_next_start_time": {
        "name": "Bästa pris startar"
      },
      "best_price_next_in_minutes": {
        "name": "Bästa pris startar om"
      },
      "peak_price_end_time": {
        "name": "Topppris slutar"
      },
      "peak_price_period_duration": {
        "name": "Topppris varaktighet"
      },
      "peak_price_remaining_minutes": {
        "name": "Topppris återstående tid"
      },
      "peak_price_progress": {
        "name": "Topppris framsteg"
      },
      "peak_price_next_start_time": {
        "name": "Topppris startar"
      },
      "peak_price_next_in_minutes": {
        "name": "Topppris startar om"
      },
      "home_type": {
        "name": "Hemtyp",
        "state": {
          "apartment": "Lägenhet",
          "rowhouse": "Radhus",
          "house": "Hus",
          "cottage": "Stuga"
        }
      },
      "home_size": {
        "name": "Hemstorlek"
      },
      "main_fuse_size": {
        "name": "Huvudsäkringsstorlek"
      },
      "number_of_residents": {
        "name": "Antal boende"
      },
      "primary_heating_source": {
        "name": "Primär värmekälla",
        "state": {
          "air2air_heatpump": "Luft-till-luft värmepump",
          "air2water_heatpump": "Luft-till-vatten värmepump",
          "boiler": "Panna",
          "central_heating": "Centralvärme",
          "district_heating": "Fjärrvärme",
          "district": "Fjärrvärme",
          "electric_boiler": "Elpanna",
          "electricity": "El",
          "floor": "Golvvärme",
          "gas": "Gas",
          "ground_heatpump": "Bergvärmepump",
          "ground": "Bergvärmepump",
          "oil": "Olja",
          "other": "Annat",
          "waste": "Spillvärme"
        }
      },
      "grid_company": {
        "name": "Nätbolag"
      },
      "grid_area_code": {
        "name": "Nätområdeskod"
      },
      "price_area_code": {
        "name": "Prisområdeskod"
      },
      "consumption_ean": {
        "name": "Förbruknings-EAN"
      },
      "production_ean": {
        "name": "Produktions-EAN"
      },
      "energy_tax_type": {
        "name": "Energiskattetyp"
      },
      "vat_type": {
        "name": "Momstyp"
      },
      "estimated_annual_consumption": {
        "name": "Beräknad årlig förbrukning"
      },
      "subscription_status": {
        "name": "Abonnemangsstatus",
        "state": {
          "running": "Aktiv",
          "ended": "Avslutad",
          "pending": "Väntande",
          "unknown": "Okänd"
        }
      },
      "day_pattern_yesterday": {
        "name": "Prismönster Igår",
        "state": {
          "valley": "Dal",
          "peak": "Topp",
          "double_dip": "Dubbel dipp",
          "duck_curve": "Ankkurva",
          "flat": "Flat",
          "rising": "Stigande",
          "falling": "Fallande",
          "mixed": "Blandad"
        }
      },
      "day_pattern_today": {
        "name": "Prismönster Idag",
        "state": {
          "valley": "Dal",
          "peak": "Topp",
          "double_dip": "Dubbel dipp",
          "duck_curve": "Ankkurva",
          "flat": "Flat",
          "rising": "Stigande",
          "falling": "Fallande",
          "mixed": "Blandad"
        }
      },
      "day_pattern_tomorrow": {
        "name": "Prismönster Imorgon",
        "state": {
          "valley": "Dal",
          "peak": "Topp",
          "double_dip": "Dubbel dipp",
          "duck_curve": "Ankkurva",
          "flat": "Flat",
          "rising": "Stigande",
          "falling": "Fallande",
          "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": {
          "pending": "Väntande",
          "ready": "Redo",
          "error": "Fel"
        }
      },
      "chart_metadata": {
        "name": "Diagrammetadata",
        "state": {
          "pending": "Väntande",
          "ready": "Redo",
          "error": "Fel"
        }
      },
      "current_interval_price_rank_today": {
        "name": "Aktuellt prisrang (idag)"
      },
      "current_interval_price_rank_tomorrow": {
        "name": "Aktuellt prisrang (imorgon)"
      },
      "current_interval_price_rank_today_tomorrow": {
        "name": "Aktuellt prisrang (idag+imorgon)"
      },
      "next_interval_price_rank_today": {
        "name": "Nästa prisrang (idag)"
      },
      "next_interval_price_rank_today_tomorrow": {
        "name": "Nästa prisrang (idag+imorgon)"
      },
      "previous_interval_price_rank_today": {
        "name": "Förra prisrang (idag)"
      },
      "previous_interval_price_rank_today_tomorrow": {
        "name": "Förra prisrang (idag+imorgon)"
      },
      "current_hour_price_rank_today": {
        "name": "⌀ Timprisrang aktuell (idag)"
      },
      "current_hour_price_rank_today_tomorrow": {
        "name": "⌀ Timprisrang aktuell (idag+imorgon)"
      },
      "next_hour_price_rank_today": {
        "name": "⌀ Timprisrang nästa (idag)"
      },
      "next_hour_price_rank_today_tomorrow": {
        "name": "⌀ Timprisrang nästa (idag+imorgon)"
      }
    },
    "binary_sensor": {
      "peak_price_period": {
        "name": "Topprisperiod"
      },
      "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"
      },
      "tomorrow_data_available": {
        "name": "Morgondagens data tillgänglig"
      },
      "has_ventilation_system": {
        "name": "Har ventilationssystem"
      },
      "realtime_consumption_enabled": {
        "name": "Realtidsförbrukning aktiverad"
      }
    },
    "number": {
      "best_price_flex_override": {
        "name": "Bästa pris: Flexibilitet"
      },
      "best_price_min_distance_override": {
        "name": "Bästa pris: Minimiavstånd"
      },
      "best_price_min_period_length_override": {
        "name": "Bästa pris: Minsta periodlängd"
      },
      "best_price_min_periods_override": {
        "name": "Bästa pris: Minsta antal perioder"
      },
      "best_price_relaxation_attempts_override": {
        "name": "Bästa pris: Lättnadsförsök"
      },
      "best_price_gap_count_override": {
        "name": "Bästa pris: Glaptolerans"
      },
      "peak_price_flex_override": {
        "name": "Topppris: Flexibilitet"
      },
      "peak_price_min_distance_override": {
        "name": "Topppris: Minimiavstånd"
      },
      "peak_price_min_period_length_override": {
        "name": "Topppris: Minsta periodlängd"
      },
      "peak_price_min_periods_override": {
        "name": "Topppris: Minsta antal perioder"
      },
      "peak_price_relaxation_attempts_override": {
        "name": "Topppris: Lättnadsförsök"
      },
      "peak_price_gap_count_override": {
        "name": "Topppris: Glaptolerans"
      }
    },
    "switch": {
      "best_price_enable_relaxation_override": {
        "name": "Bästa pris: Uppnå minimiantal"
      },
      "peak_price_enable_relaxation_override": {
        "name": "Topppris: Uppnå minimiantal"
      }
    }
  },
  "issues": {
    "new_homes_available": {
      "title": "Nya Tibber-hem upptäckta",
      "description": "Vi upptäckte {count} nytt/nya hem på ditt Tibber-konto: {homes}. Du kan lägga till dem i Home Assistant genom Tibber-integrationskonfigurationen."
    },
    "homes_removed": {
      "title": "Tibber-hem borttagna",
      "description": "Vi upptäckte att {count} hem har tagits bort från ditt Tibber-konto: {homes}. Granska din Tibber-integrationskonfiguration."
    },
    "tomorrow_data_missing": {
      "title": "Morgondagens prisdata saknas för {home_name}",
      "description": "Morgondagens elprisdata är fortfarande otillgänglig efter {warning_hour}:00. Detta är ovanligt, eftersom Tibber vanligtvis publicerar morgondagens priser på eftermiddagen (runt 13:00-14:00 CET).\n\nMöjliga orsaker:\n- Tibber har ännu inte publicerat morgondagens priser\n- Tillfälliga API-problem\n- Din elleverantör har inte skickat priser till Tibber\n\nDetta problem löser sig automatiskt när morgondagens data blir tillgänglig. Om detta kvarstår efter 20:00, kontrollera Tibber-appen eller kontakta Tibber support."
    },
    "rate_limit_exceeded": {
      "title": "API-hastighetsgräns överskriden för {home_name}",
      "description": "Tibber API har hastighetsbegränsat denna integration efter {error_count} konsekutiva fel. Detta betyder att förfrågningar görs för ofta.\n\nIntegrationen kommer automatiskt att försöka igen med ökande fördröjningar. Detta problem löser sig när hastighetsgränsen löper ut.\n\nOm detta kvarstår i flera timmar, överväg:\n- Kontrollera om flera Home Assistant-instanser använder samma API-token\n- Verifiera att inga andra applikationer använder din Tibber API-token kraftigt\n- Minska uppdateringsfrekvensen om du har anpassat den"
    },
    "home_not_found": {
      "title": "Hem {home_name} hittades inte i Tibber-konto",
      "description": "Hemmet som konfigurerats i denna integration (post-ID: {entry_id}) är inte längre tillgängligt i ditt Tibber-konto. Detta händer vanligtvis när:\n- Hemmet togs bort från ditt Tibber-konto\n- Hemmet flyttades till ett annat Tibber-konto\n- Åtkomst till detta hem återkallades\n\nTa bort denna integrationspost och lägg till den igen om hemmet fortfarande ska övervakas. För att ta bort denna post, gå till Inställningar → Enheter & Tjänster → Tibber-priser och radera {home_name}-konfigurationen."
    },
    "entity_migration": {
      "title": "Tibber Prices: Åtgärd krävs efter uppdatering ({home_name})",
      "description": "Denna uppdatering innehåller ändringar som tillämpades automatiskt.\n\n**Omdöpta entiteter ({count})**\n\nFöljande entity-nycklar döptes om automatiskt. Dina befintliga entity-ID:n och automatiseringar förblir intakta:\n\n{entity_list}\n\n**Ändrade varaktighetssensorvärden**\n\nAlla varaktighetssensorer (återstående tid, startar om, periodvaraktighet, trendändrings-nedräkning) rapporterar nu sitt tillståndsvärde i **minuter** istället för timmar. Visningsenheten i dashboards förblir timmar som standard.\n\nOm du har automatiseringar med numeriska jämförelser på dessa sensorer, uppdatera dina tröskelvärden:\n- Gammalt: `state < 0.25` (15 minuter som timmar)\n- Nytt: `state < 15` (15 minuter)\n\nStäng detta meddelande efter att du har granskat dina automatiseringar."
    },
    "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 det här meddelandet när du har granskat dina automatiseringar, instrumentpaneler och statistik."
    }
  },
  "exceptions": {
    "no_entries_found": {
      "message": "Inga Tibber Prices integrationsposter hittades. Konfigurera integrationen först."
    },
    "multiple_entries_no_entry_id": {
      "message": "Flera Tibber Prices poster hittades. Ange 'entry_id' för att välja vilken post som ska användas."
    },
    "invalid_entry_id": {
      "message": "Ogiltig eller otillgänglig konfigurationspost. Kontrollera post-ID:t och se till att integrationen är laddad."
    },
    "missing_home_id": {
      "message": "Hem-ID hittades inte i konfigurationsposten. Konfigurera om integrationen."
    },
    "user_data_not_available": {
      "message": "Användardata är inte tillgänglig ännu. Vänta tills den första datauppdateringen är klar."
    },
    "timezone_not_found": {
      "message": "Kunde inte fastställa hemmets tidszon. Kontrollera hemkonfigurationen i ditt Tibber-konto."
    },
    "end_before_start": {
      "message": "Sluttidpunkten ({search_end}) måste vara efter starttidpunkten ({search_start}). Kontrollera tidsparametrarna och eventuella day-offsets."
    },
    "price_fetch_failed": {
      "message": "Unable to fetch price data for the requested search range."
    },
    "invalid_search_scope": {
      "message": "Ogiltigt sökområde. Giltiga värden är: today, tomorrow, remaining_today, next_24h, next_48h."
    },
    "scope_conflicts_with_range": {
      "message": "search_scope kan inte kombineras med explicita områdesparametrar: {params}. Använd antingen search_scope ELLER explicita start-/slutparametrar."
    },
    "day_offset_requires_time": {
      "message": "{offset_param} kräver att {time_param} är satt. Dagsförskjutning ändrar bara datumet för en explicit tidsparameter."
    },
    "min_level_exceeds_max": {
      "message": "min_price_level {min_level} är högre än max_price_level {max_level}. Miniminivån måste vara lika med eller lägre än maximinivån."
    },
    "power_profile_length_mismatch": {
      "message": "power_profile har {profile_length} poster men varaktigheten kräver {interval_count} intervaller ({duration_minutes} minuter). power_profile måste ha exakt en post per 15-minutersintervall."
    },
    "level_and_rating_filter_conflict": {
      "message": "level_filter och rating_level_filter kan inte användas tillsammans. Använd bara en filtertyp per begäran."
    },
    "insert_nulls_requires_filter": {
      "message": "insert_nulls-läge {mode} kräver ett level_filter, rating_level_filter eller period_filter för att definiera segment. Utan filter, använd insert_nulls: none."
    },
    "connect_segments_requires_segments_mode": {
      "message": "connect_segments kräver att insert_nulls är satt till 'segments'. Ställ in insert_nulls: segments för att använda segmentanslutning."
    },
    "array_fields_requires_array_format": {
      "message": "array_fields kan bara användas med output_format: array_of_arrays. Ändra utdataformatet eller ta bort array_fields."
    },
    "invalid_array_fields": {
      "message": "Värdet {template} för array_fields är ogiltigt. Fältnamn måste omges av klammerparenteser, t.ex. '{start_time}, {price_per_kwh}, {level}'."
    },
    "min_segment_exceeds_duration": {
      "message": "min_segment_duration ({min_segment_minutes} min) får inte överstiga den totala varaktigheten ({duration_minutes} min). Minska min_segment_duration eller öka duration."
    },
    "start_time_conflict": {
      "message": "search_start och search_start_time anger båda starttidpunkten — använd bara en. Välj search_start för exakt datum/tid eller search_start_time för en tid på dagen."
    },
    "end_time_conflict": {
      "message": "search_end och search_end_time anger båda sluttidpunkten — använd bara en. Välj search_end för exakt datum/tid eller search_end_time för en tid på dagen."
    },
    "insert_nulls_all_with_period_filter": {
      "message": "insert_nulls: all stöds inte med period_filter. Använd insert_nulls: segments istället — det lägger till tomrum mellan separata perioder i diagrammet."
    },
    "connect_segments_with_period_filter": {
      "message": "connect_segments kan inte användas med period_filter. Perioder är redan sammanhängande — connect_segments har bara effekt med level_filter eller rating_level_filter."
    },
    "duplicate_task_names": {
      "message": "Uppgiftsnamn måste vara unika. Duplikat: {names}. Ge varje uppgift ett unikt namn så att resultaten kan matchas till rätt uppgift."
    },
    "tasks_exceed_search_window": {
      "message": "Total uppgiftstid inklusive pauser ({total_minutes} min) överstiger sökfönstret ({window_minutes} min). Minska uppgiftslängderna, sänk gap_minutes eller utöka sökintervallet."
    },
    "must_finish_by_conflicts_with_end": {
      "message": "must_finish_by kan inte kombineras med slutgränsparametrar ({params}). Använd must_finish_by ensamt — det sätter sökslutet till deadline automatiskt."
    },
    "invalid_entity_reference": {
      "message": "'{reference}' är inte en giltig entitetsreferens. Använd formatet 'domain.entity_id' eller 'domain.entity_id@attribut'."
    },
    "entity_not_found": {
      "message": "Entitet '{entity_id}' hittades inte. Kontrollera att entiteten finns och är tillgänglig."
    },
    "entity_attribute_not_found": {
      "message": "Entitet '{entity_id}' har inte attributet '{attribute}'."
    },
    "entity_state_unavailable": {
      "message": "Entitet '{entity_id}' har tillståndet '{state}'. Entiteten måste ha ett giltigt tillståndsvärde."
    },
    "entity_value_conversion_failed": {
      "message": "Kan inte konvertera värdet '{raw_value}' från '{entity_id}' ({attribute}) till {expected_type}. Kontrollera att entiteten ger ett kompatibelt värde."
    },
    "capacity_required_for_percent": {
      "message": "battery_capacity_kwh is required when current or target SoC is provided as a percentage."
    },
    "ambiguous_soc_input": {
      "message": "The field {field} was provided both as percent and as kWh. Use only one representation."
    },
    "already_at_target": {
      "message": "Current state of charge is already at or above the target. No charging schedule is needed."
    },
    "target_exceeds_capacity": {
      "message": "Target SoC ({target_soc_kwh} kWh) exceeds battery capacity ({capacity_kwh} kWh)."
    },
    "energy_unreachable": {
      "message": "The requested charging target cannot be reached within the available search window and charging constraints."
    },
    "missing_current_soc": {
      "message": "Provide either current_soc_percent or current_soc_kwh."
    },
    "missing_target_soc": {
      "message": "Provide either target_soc_percent or target_soc_kwh."
    },
    "missing_deadline_for_must_reach": {
      "message": "Provide must_reach_by or must_reach_by_event when using must_reach_soc_percent or must_reach_soc_kwh."
    },
    "missing_must_reach_soc": {
      "message": "Provide must_reach_soc_percent or must_reach_soc_kwh when using a must_reach deadline."
    },
    "invalid_must_reach_soc": {
      "message": "The minimum state of charge by deadline must be between current and target state of charge."
    },
    "power_strategy_conflict": {
      "message": "Use either min_charge_power_w or charge_power_steps_w, not both at the same time."
    },
    "grid_limit_too_low": {
      "message": "grid_import_limit_w is lower than the minimum required charging power."
    },
    "deadline_conflict": {
      "message": "Use either must_reach_by or must_reach_by_event, not both at the same time."
    },
    "deadline_event_not_available": {
      "message": "The selected deadline event is not available in the current coordinator data."
    },
    "deadline_outside_search_range": {
      "message": "The resolved deadline must be inside the selected search range."
    }
  },
  "services": {
    "get_price": {
      "name": "Hämta prisdata",
      "description": "Hämta prisdata för ett specifikt tidsintervall med automatisk routing. Utvecklings- och testservice för price_info_for_range API-funktionen. Använder automatiskt PRICE_INFO, PRICE_INFO_RANGE eller båda baserat på tidsintervallets gränser.",
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        },
        "start_time": {
          "name": "Starttid",
          "description": "Start för tidsintervallet (inklusivt, tidszonmedveten)."
        },
        "end_time": {
          "name": "Sluttid",
          "description": "Slut för tidsintervallet (exklusivt, tidszonmedveten)."
        }
      }
    },
    "get_apexcharts_yaml": {
      "name": "Hämta ApexCharts Card YAML",
      "description": "⚠️ VIKTIGT: Denna service genererar en GRUNDLÄGGANDE EXEMPELKONFIGURATION för ApexCharts Card som en startpunkt. Det är INTE en komplett lösning för alla ApexCharts-funktioner. Denna integration är primärt en DATALEVERANTÖR. Den genererade YAML:en demonstrerar hur man använder `get_chartdata`-servicen för att hämta prisdata. På grund av den segmenterade naturen hos vår data (olika tidsperioder per serie) och användningen av Home Assistants service-API istället för entitetsattribut är många avancerade ApexCharts-funktioner (som in_header, vissa transformationer) inte kompatibla eller kräver manuell anpassning. Du är välkommen att anpassa den genererade YAML:en för dina specifika behov, men förstå att omfattande ApexCharts-konfigurationsstöd ligger utanför denna integrations omfång. Community-bidrag med förbättrade konfigurationer uppskattas alltid - om du hittar en bättre konfiguration som fungerar, dela den så att alla kan dra nytta av den! För direkt dataåtkomst för att bygga dina egna diagram, använd `get_chartdata`-servicen istället.",
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        },
        "day": {
          "name": "Dag",
          "description": "Vilken dag som ska visualiseras (standard: Glidande fönster). Fasta dagalternativ (Igår/Idag/Imorgon) visar 24h-spann utan ytterligare beroenden. Dynamiska alternativ kräver config-template-card: Glidande fönster visar ett fast 48h-fönster som automatiskt skiftar mellan igår+idag och idag+imorgon baserat på datatillgänglighet. Glidande fönster (Auto-Zoom) beter sig likadant men zoomar dessutom automatiskt in (2h tillbakablick + återstående tid till midnatt, graph_span minskar var 15:e minut)."
        },
        "level_type": {
          "name": "Nivåtyp",
          "description": "Välj vilken prisnivåklassificering som ska visualiseras: 'rating_level' (låg/normal/hög baserat på dina konfigurerade tröskelvärden) eller 'level' (Tibber API-nivåer: mycket billigt/billigt/normalt/dyrt/mycket dyrt)."
        },
        "highlight_best_price": {
          "name": "Markera bästa prisperioder",
          "description": "Lägg till ett halvtransparent grönt överlag för att markera de bästa prisperioderna i diagrammet. Detta gör det enkelt att visuellt identifiera de optimala tiderna för energiförbrukning."
        },
        "highlight_peak_price": {
          "name": "Markera högsta prisperioder",
          "description": "Lägg till ett halvtransparent rött överlag för att markera de högsta prisperioderna i diagrammet. Detta gör det enkelt att visuellt identifiera tiderna när energi är som dyrast."
        },
        "resolution": {
          "name": "Upplösning",
          "description": "Tidsupplösning för diagramdata. 'interval' (standard): Ursprungliga 15-minutersintervall (96 punkter per dag). 'hourly': Aggregerade timvärden med ett rullande 60-minutersfönster (24 punkter per dag) för ett renare och mindre rörigt diagram."
        }
      }
    },
    "get_chartdata": {
      "name": "Hämta diagramdata",
      "description": "Returnerar prisdata i ett enkelt diagramvänligt format som är kompatibelt med Tibber Core-integrationens utdatastruktur. Perfekt för användning med populära diagramkort som ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card eller det inbyggda History Graph Card. Fältnamn och datastruktur kan anpassas för att matcha dina specifika diagramkrav.",
      "sections": {
        "general": {
          "name": "Allmänt",
          "description": "Allmänna inställningar för att hämta diagramdata."
        },
        "selection": {
          "name": "Urval",
          "description": "Välj vilken data som ska inkluderas i utdatan."
        },
        "filters": {
          "name": "Filter",
          "description": "Filtrera data baserat på prisnivåer, betygsnivåer eller specialperioder."
        },
        "transformation": {
          "name": "Transformera data",
          "description": "Transformera datautdatan för bättre diagramkompatibilitet."
        },
        "format": {
          "name": "Format",
          "description": "Anpassa utdataformatet."
        },
        "arrays_of_arrays": {
          "name": "Avancerade utdatainställningar: Array av arrays",
          "description": "Inställningar för utdataformat när en array av arrays används."
        },
        "arrays_of_objects": {
          "name": "Avancerade utdatainställningar: Array av objekt",
          "description": "Inställningar för utdataformat när en array av objekt används."
        }
      },
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        },
        "day": {
          "name": "Dag",
          "description": "Vilken/vilka dag(ar) att hämta priser för. Du kan välja flera dagar. Om inget anges returneras ett glidande 2-dagarsfönster: idag+imorgon (när morgondagens data finns tillgänglig) eller igår+idag (när morgondagens data ännu inte är tillgänglig). Detta ger kontinuerlig diagramvisning utan luckor."
        },
        "resolution": {
          "name": "Upplösning",
          "description": "Tidsupplösning för returnerad data. Alternativ: 'interval' (standard, 15-minutersintervall, 96 punkter per dag), 'hourly' (timmedelvärden, 24 punkter per dag)."
        },
        "output_format": {
          "name": "Utdataformat",
          "description": "Utdataformat för returnerad data. Alternativ: 'array_of_objects' (standard, array av objekt med anpassningsbara fältnamn), 'array_of_arrays' (array av [tidstämpel, pris]-arrays med avslutande null-punkt för stegdiagram)."
        },
        "array_fields": {
          "name": "Array-fält",
          "description": "Definiera vilka fält som ska inkluderas. Använd fältnamn inom klammerparenteser, separerade med kommatecken. Tillgängliga fält: start_time, price_per_kwh, level, rating_level, average. Fält kommer automatiskt att aktiveras även om include_*-alternativ inte är inställda. Lämna tomt för standard (endast tidstämpel och pris)."
        },
        "subunit_currency": {
          "name": "Underenhetsvaluta",
          "description": "Returnera priser i underenhetsvaluta (cent för EUR, øre för NOK/SEK) istället för basvalutaenheter. Inaktiverad som standard."
        },
        "round_decimals": {
          "name": "Avrunda decimaler",
          "description": "Antal decimaler att avrunda priser till (0-10). Om inget anges används standardprecision (4 decimaler för basvaluta, 2 för underenhetsvaluta)."
        },
        "data_key": {
          "name": "Datanyckel",
          "description": "Anpassat namn för datanyckeln på toppnivå i svaret. Standard är 'data' om inget anges."
        },
        "include_level": {
          "name": "Inkludera nivå",
          "description": "Inkludera Tibbers prisnivåfält (mycket billigt/billigt/normalt/dyrt/mycket dyrt) i varje datapunkt."
        },
        "include_rating_level": {
          "name": "Inkludera betygsnivå",
          "description": "Inkludera det beräknade betygsnivåfältet (låg/normal/hög) baserat på dina konfigurerade tröskelvärden i varje datapunkt."
        },
        "include_average": {
          "name": "Inkludera medelvärde",
          "description": "Inkludera dagligt medelpris i varje datapunkt för jämförelse."
        },
        "include_energy": {
          "name": "Inkludera energipris",
          "description": "Inkludera rått energi-/spotpris (exklusive skatter och avgifter) i varje datapunkt. Detta är 'energy'-fältet från Tibber-API:et, användbart för inmatnings-/nettomätningsberäkningar."
        },
        "include_tax": {
          "name": "Inkludera skatt",
          "description": "Inkludera skattedelen av priset i varje datapunkt. Detta är 'tax'-fältet från Tibber-API:et, som representerar avgifter, skatter och nätavgifter."
        },
        "level_filter": {
          "name": "Nivåfilter",
          "description": "Filtrera intervaller för att endast inkludera specifika Tibber-prisnivåer (mycket billigt/billigt/normalt/dyrt/mycket dyrt). Om inget anges inkluderas alla nivåer."
        },
        "rating_level_filter": {
          "name": "Betygsnivåfilter",
          "description": "Filtrera intervaller för att endast inkludera specifika betygsnivåer (låg/normal/hög). Om inget anges inkluderas alla betygsnivåer."
        },
        "period_filter": {
          "name": "Periodfilter",
          "description": "Filtrera intervaller för att endast inkludera de inom Bästa pris- eller Topppris-perioder. Alternativ: 'best_price' (endast intervaller i Bästa pris-perioder), 'peak_price' (endast intervaller i Topppris-perioder). Om inget anges inkluderas alla intervaller. Detta använder förberäknad perioddata från binära sensorer."
        },
        "insert_nulls": {
          "name": "Infoga NULL-värden",
          "description": "Kontrollera infogning av NULL-värden för filtrerad data. 'none' (standard): Inga NULL-värden, endast matchande intervaller. 'segments': Lägg till NULL-punkter vid segmentgränser för rena luckor i diagram (rekommenderas för stegdiagram). 'all': Infoga NULL för alla tidstämplar där filtret inte matchar (användbart för kontinuerlig tidsserievisualisering)."
        },
        "connect_segments": {
          "name": "Anslut segment",
          "description": "[ENDAST MED 'Infoga NULL-värden'] När aktiverad läggs anslutande punkter till vid segmentgränser för att visuellt ansluta olika prisnivåsegment i stegdiagram. När priset går NER vid en gräns läggs en punkt med det lägre priset till i slutet av det aktuella segmentet. När priset går UPP läggs en hållpunkt till innan luckan. Detta skapar smärre visuella övergångar mellan segment istället för abrupta luckor."
        },
        "add_trailing_null": {
          "name": "Lägg till avslutande null-punkt",
          "description": "Lägg till en sista datapunkt med null-värden (förutom tidstämpel) i slutet. Vissa diagrambibliotek behöver detta för att förhindra extrapolering/interpolering till vyportens kant när steglinje-rendering används. Lämna inaktiverad om inte ditt diagram kräver det."
        },
        "start_time_field": {
          "name": "Starttidsfältnamn",
          "description": "Anpassat namn för starttidsfältet i utdatan. Standard är 'start_time' om inget anges."
        },
        "end_time_field": {
          "name": "Sluttidsfältnamn",
          "description": "Anpassat namn för sluttidsfältet i utdatan. Standard är 'end_time' om inget anges. Används endast med period_filter."
        },
        "price_field": {
          "name": "Prisfältnamn",
          "description": "Anpassat namn för prisfältet i utdatan. Standard är 'price_per_kwh' om inget anges."
        },
        "level_field": {
          "name": "Nivåfältnamn",
          "description": "Anpassat namn för nivåfältet i utdatan. Standard är 'level' om inget anges. Används endast när include_level är aktiverad."
        },
        "rating_level_field": {
          "name": "Betygsnivåfältnamn",
          "description": "Anpassat namn för betygsnivåfältet i utdatan. Standard är 'rating_level' om inget anges. Används endast när include_rating_level är aktiverad."
        },
        "average_field": {
          "name": "Medelvärdesfältnamn",
          "description": "Anpassat namn för medelvärdesfältet i utdatan. Standard är 'average' om inget anges. Används endast när include_average är aktiverad."
        },
        "energy_field": {
          "name": "Energiprisfältnamn",
          "description": "Anpassat namn för energiprisfältet i utdatan. Standard är 'energy_price' om inget anges. Används endast när include_energy är aktiverad."
        },
        "tax_field": {
          "name": "Skattefältnamn",
          "description": "Anpassat namn för skattefältet i utdatan. Standard är 'tax' om inget anges. Används endast när include_tax är aktiverad."
        },
        "metadata": {
          "name": "Metadata",
          "description": "Kontrollera inkludering av metadata i svaret. 'include' (standard): Returnerar både diagramdata och metadata med prisstatistik, valutainfo, Y-axelförslag och tidsintervall. 'only': Returnerar endast metadata utan att bearbeta diagramdata (snabbt, användbart för dynamisk Y-axelkonfiguration). 'none': Returnerar endast diagramdata utan metadata."
        }
      }
    },
    "refresh_user_data": {
      "name": "Uppdatera användardata",
      "description": "Tvingar en uppdatering av användardata (hem, profilinformation) från Tibber API. Detta kan vara användbart efter att ha gjort ändringar i ditt Tibber-konto eller vid felsökning av anslutningsproblem.",
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        }
      }
    },
    "find_cheapest_block": {
      "name": "Hitta billigaste blocket",
      "description": "Hittar det billigaste sammanhängande tidsfönstret med en given varaktighet. Designat för apparatschemaläggning: diskmaskin, tvättmaskin, torktumlare osv. Returnerar det billigaste fönstret med start-/sluttider och prisstatistik.",
      "sections": {
        "search_range": {
          "name": "Anpassat sökintervall",
          "description": "Definiera exakta start- och sluttider för sökningen. Åsidosätter sökområdet när det anges."
        },
        "time_alternatives": {
          "name": "Avancerade tidsalternativ",
          "description": "Alternativa sätt att definiera sökintervallet med klockslag och minutförskjutningar."
        },
        "price_filter": {
          "name": "Prisnivåfilter",
          "description": "Begränsa sökningen till intervall inom det angivna Tibber-prisnivåintervallet."
        },
        "search_tuning": {
          "name": "Finjustering av sökalgoritm",
          "description": "Finjustera hur sökningen hanterar avvikare, minimikvalitetströsklar och reservbeteende."
        },
        "cost_estimation": {
          "name": "Kostnadsuppskattning",
          "description": "Ange en effektprofil för att få exakta energikostnadsuppskattningar baserat på faktisk förbrukning."
        },
        "output": {
          "name": "Utdataalternativ",
          "description": "Kontrollera utdataformat: jämförelsedetaljer och valutaenhet."
        }
      },
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        },
        "duration": {
          "name": "Varaktighet",
          "description": "Längd på det önskade sammanhängande fönstret. Avrundas automatiskt uppåt till närmaste kvart. Maximum: 12 timmar."
        },
        "search_start": {
          "name": "Sökstart",
          "description": "Start av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra startalternativ. Standard är nu om inte angivet."
        },
        "search_end": {
          "name": "Sökslut",
          "description": "Slut av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra slutalternativ. Standard är slutet av imorgon om inte angivet."
        },
        "must_finish_by": {
          "name": "Måste vara klar senast",
          "description": "Deadline: apparaten måste vara klar vid denna tidpunkt. Sökintervallet slutar vid denna deadline — tjänsten hittar det billigaste fönstret som slutar före det. Kan inte kombineras med Sökslutt, Sökslutt-tid eller Sökslutt-offset."
        },
        "search_start_time": {
          "name": "Sökstart-klockslag",
          "description": "Alternativ: Börja söka från detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökstart (datum/tid) är satt."
        },
        "search_start_day_offset": {
          "name": "Sökstart dagförskjutning",
          "description": "Dagförskjutning för Sökstart-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökstart-klockslag."
        },
        "search_end_time": {
          "name": "Sökslut-klockslag",
          "description": "Alternativ: Sök till detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökslut (datum/tid) är satt."
        },
        "search_end_day_offset": {
          "name": "Sökslut dagförskjutning",
          "description": "Dagförskjutning för Sökslut-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökslut-klockslag."
        },
        "search_start_offset_minutes": {
          "name": "Sökstart-förskjutning (minuter)",
          "description": "Alternativ: Börja söka detta antal minuter från nu. Positivt = framtid (60 = om 1 timme), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökstart eller Sökstart-klockslag är satt."
        },
        "search_end_offset_minutes": {
          "name": "Sökslut-förskjutning (minuter)",
          "description": "Alternativ: Sluta söka detta antal minuter från nu. Positivt = framtid (480 = om 8 timmar), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökslut eller Sökslut-klockslag är satt."
        },
        "include_current_interval": {
          "name": "Inkludera aktuellt intervall",
          "description": "Inkludera det pågående 15-minutersintervallet i sökningen. När aktiverat (standard), börjar sökningen vid början av det aktuella intervallet så att det kan vara en del av resultatet."
        },
        "use_base_unit": {
          "name": "Använd basvaluta",
          "description": "Tvinga priser i basvaluta (EUR, NOK) istället för konfigurerad visningsenhet (ct, öre). Användbart för beräkningar."
        },
        "search_scope": {
          "name": "Soekumfaang (genvaeg)",
          "description": "Genvaeg foer vanliga soekomraaden. Aasidosaetter alla andra tidsalternativ. today/tomorrow = hela kalenderdagen, remaining_today = nu till midnatt, next_24h/next_48h = rullande foenster fraen nu."
        },
        "max_price_level": {
          "name": "Maximal prisnivaae",
          "description": "Ta bara med intervall paa eller under denna Tibber-prisnivaae. very_cheap = mest restriktivt, very_expensive = ingen begraensning."
        },
        "min_price_level": {
          "name": "Minimal prisnivaae",
          "description": "Ta bara med intervall paa eller oever denna Tibber-prisnivaae. Anvaendbart foer find_most_expensive foer att fokusera paa verkligt dyra intervall."
        },
        "include_comparison_details": {
          "name": "Inkludera jaemfoerelsdetaljer",
          "description": "Berika price_comparison-resultatet med ytterligare faelt: comparison_price_min, comparison_price_max och (endast block) comparison_window_end."
        },
        "power_profile": {
          "name": "Effektprofil",
          "description": "Variabel effektfoerbruekning i watt per 15-minutersintervall. Om instaellt, aaterspeglar estimated_total_cost faktisk foerbruekning istaellet foer en fast 1 kW-last."
        },
        "smooth_outliers": {
          "name": "Jämna utliggare",
          "description": "Jämna prisutliggare före sökning. Utliggarintervall ersätts tillfälligt med genomsnittet av sina grannar, så att en enskild topp eller dipp inte dominerar resultatet. Svaret visar alltid de ursprungliga (outjämnade) priserna. Standard: aktiverat."
        },
        "min_distance_from_avg": {
          "name": "Min. avstånd från genomsnitt",
          "description": "Kräv att resultatet avviker från sökområdets genomsnitt med minst denna procent. För billigast: resultatet måste vara minst X% under genomsnittet. För dyrast: minst X% över. Om villkoret inte uppfylls returneras inget resultat (reason: selection_above/below_distance_threshold). Lämna tomt för att inaktivera."
        },
        "allow_relaxation": {
          "name": "Tillåt avslappning",
          "description": "Slappna av filter gradvis för att garantera ett resultat. Faser: 1) Minska/ta bort avståndströskeln 2) Utöka prisnivåfilter 3) Minska varaktighet. Standard: aktiverat."
        },
        "duration_flexibility_minutes": {
          "name": "Varaktighetsflexibilitet",
          "description": "Max minuter varaktigheten kan förkortas under avslappning (0–120, steg 15). Lämna tomt för automatisk beräkning (~20% av varaktigheten, max 60 min)."
        }
      }
    },
    "find_most_expensive_block": {
      "name": "Hitta dyraste blocket",
      "description": "Hittar det dyraste sammanhängande tidsfönstret med en given varaktighet. Användbart för att identifiera topprisperioder som bör undvikas. Returnerar det dyraste fönstret med start-/sluttider och prisstatistik.",
      "sections": {
        "search_range": {
          "name": "Anpassat sökintervall",
          "description": "Definiera exakta start- och sluttider för sökningen. Åsidosätter sökområdet när det anges."
        },
        "time_alternatives": {
          "name": "Avancerade tidsalternativ",
          "description": "Alternativa sätt att definiera sökintervallet med klockslag och minutförskjutningar."
        },
        "price_filter": {
          "name": "Prisnivåfilter",
          "description": "Begränsa sökningen till intervall inom det angivna Tibber-prisnivåintervallet."
        },
        "search_tuning": {
          "name": "Finjustering av sökalgoritm",
          "description": "Finjustera hur sökningen hanterar avvikare, minimikvalitetströsklar och reservbeteende."
        },
        "cost_estimation": {
          "name": "Kostnadsuppskattning",
          "description": "Ange en effektprofil för att få exakta energikostnadsuppskattningar baserat på faktisk förbrukning."
        },
        "output": {
          "name": "Utdataalternativ",
          "description": "Kontrollera utdataformat: jämförelsedetaljer och valutaenhet."
        }
      },
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        },
        "duration": {
          "name": "Varaktighet",
          "description": "Längd på det önskade sammanhängande fönstret. Avrundas automatiskt uppåt till närmaste kvart. Maximum: 12 timmar."
        },
        "search_start": {
          "name": "Sökstart",
          "description": "Start av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra startalternativ. Standard är nu om inte angivet."
        },
        "search_end": {
          "name": "Sökslut",
          "description": "Slut av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra slutalternativ. Standard är slutet av imorgon om inte angivet."
        },
        "must_finish_by": {
          "name": "Måste vara klar senast",
          "description": "Deadline: apparaten måste vara klar vid denna tid. Sökintervallet slutar vid denna deadline — tjänsten hittar det dyraste fönstret som slutar före den. Kan inte kombineras med Sökslutt, Sökslutt-klockslag, Sökslutt-förskjutning eller Sökområde."
        },
        "search_start_time": {
          "name": "Sökstart-klockslag",
          "description": "Alternativ: Börja söka från detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökstart (datum/tid) är satt."
        },
        "search_start_day_offset": {
          "name": "Sökstart dagförskjutning",
          "description": "Dagförskjutning för Sökstart-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökstart-klockslag."
        },
        "search_end_time": {
          "name": "Sökslut-klockslag",
          "description": "Alternativ: Sök till detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökslut (datum/tid) är satt."
        },
        "search_end_day_offset": {
          "name": "Sökslut dagförskjutning",
          "description": "Dagförskjutning för Sökslut-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökslut-klockslag."
        },
        "search_start_offset_minutes": {
          "name": "Sökstart-förskjutning (minuter)",
          "description": "Alternativ: Börja söka detta antal minuter från nu. Positivt = framtid (60 = om 1 timme), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökstart eller Sökstart-klockslag är satt."
        },
        "search_end_offset_minutes": {
          "name": "Sökslut-förskjutning (minuter)",
          "description": "Alternativ: Sluta söka detta antal minuter från nu. Positivt = framtid (480 = om 8 timmar), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökslut eller Sökslut-klockslag är satt."
        },
        "include_current_interval": {
          "name": "Inkludera aktuellt intervall",
          "description": "Inkludera det pågående 15-minutersintervallet i sökningen. När aktiverat (standard), börjar sökningen vid början av det aktuella intervallet så att det kan vara en del av resultatet."
        },
        "use_base_unit": {
          "name": "Använd basvaluta",
          "description": "Tvinga priser i basvaluta (EUR, NOK) istället för konfigurerad visningsenhet (ct, öre). Användbart för beräkningar."
        },
        "search_scope": {
          "name": "Soekumfaang (genvaeg)",
          "description": "Genvaeg foer vanliga soekomraaden. Aasidosaetter alla andra tidsalternativ. today/tomorrow = hela kalenderdagen, remaining_today = nu till midnatt, next_24h/next_48h = rullande foenster fraen nu."
        },
        "max_price_level": {
          "name": "Maximal prisnivaae",
          "description": "Ta bara med intervall paa eller under denna Tibber-prisnivaae. very_cheap = mest restriktivt, very_expensive = ingen begraensning."
        },
        "min_price_level": {
          "name": "Minimal prisnivaae",
          "description": "Ta bara med intervall paa eller oever denna Tibber-prisnivaae. Anvaendbart foer find_most_expensive foer att fokusera paa verkligt dyra intervall."
        },
        "include_comparison_details": {
          "name": "Inkludera jaemfoerelsdetaljer",
          "description": "Berika price_comparison-resultatet med ytterligare faelt: comparison_price_min, comparison_price_max och (endast block) comparison_window_end."
        },
        "power_profile": {
          "name": "Effektprofil",
          "description": "Variabel effektfoerbruekning i watt per 15-minutersintervall. Om instaellt, aaterspeglar estimated_total_cost faktisk foerbruekning istaellet foer en fast 1 kW-last."
        },
        "smooth_outliers": {
          "name": "Jämna utliggare",
          "description": "Jämna prisutliggare före sökning. Utliggarintervall ersätts tillfälligt med genomsnittet av sina grannar, så att en enskild topp eller dipp inte dominerar resultatet. Svaret visar alltid de ursprungliga (outjämnade) priserna. Standard: aktiverat."
        },
        "min_distance_from_avg": {
          "name": "Min. avstånd från genomsnitt",
          "description": "Kräv att resultatet avviker från sökområdets genomsnitt med minst denna procent. För billigast: resultatet måste vara minst X% under genomsnittet. För dyrast: minst X% över. Om villkoret inte uppfylls returneras inget resultat (reason: selection_above/below_distance_threshold). Lämna tomt för att inaktivera."
        },
        "allow_relaxation": {
          "name": "Tillåt avslappning",
          "description": "Slappna av filter gradvis för att garantera ett resultat. Faser: 1) Minska/ta bort avståndströskeln 2) Utöka prisnivåfilter 3) Minska varaktighet. Standard: aktiverat."
        },
        "duration_flexibility_minutes": {
          "name": "Varaktighetsflexibilitet",
          "description": "Max minuter varaktigheten kan förkortas under avslappning (0–120, steg 15). Lämna tomt för automatisk beräkning (~20% av varaktigheten, max 60 min)."
        }
      }
    },
    "find_cheapest_hours": {
      "name": "Hitta billigaste timmarna",
      "description": "Hittar de billigaste intervallen för en given total varaktighet, inte nödvändigtvis sammanhängande. Designat för flexibla laster: batteriladdning, elbil, varmvattenberedare. Returnerar ett schema av intervaller grupperade i sammanhängande segment.",
      "sections": {
        "search_range": {
          "name": "Anpassat sökintervall",
          "description": "Definiera exakta start- och sluttider för sökningen. Åsidosätter sökområdet när det anges."
        },
        "time_alternatives": {
          "name": "Avancerade tidsalternativ",
          "description": "Alternativa sätt att definiera sökintervallet med klockslag och minutförskjutningar."
        },
        "price_filter": {
          "name": "Prisnivåfilter",
          "description": "Begränsa sökningen till intervall inom det angivna Tibber-prisnivåintervallet."
        },
        "search_tuning": {
          "name": "Finjustering av sökalgoritm",
          "description": "Finjustera hur sökningen hanterar avvikare, minimikvalitetströsklar och reservbeteende."
        },
        "cost_estimation": {
          "name": "Kostnadsuppskattning",
          "description": "Ange en effektprofil för att få exakta energikostnadsuppskattningar baserat på faktisk förbrukning."
        },
        "output": {
          "name": "Utdataalternativ",
          "description": "Kontrollera utdataformat: jämförelsedetaljer och valutaenhet."
        }
      },
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        },
        "duration": {
          "name": "Varaktighet",
          "description": "Behövd billig total tid. Avrundas automatiskt uppåt till närmaste kvart. Maximum: 24 timmar."
        },
        "search_start": {
          "name": "Sökstart",
          "description": "Start av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra startalternativ. Standard är nu om inte angivet."
        },
        "search_end": {
          "name": "Sökslut",
          "description": "Slut av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra slutalternativ. Standard är slutet av imorgon om inte angivet."
        },
        "must_finish_by": {
          "name": "Måste vara klar senast",
          "description": "Deadline: apparaten måste vara klar vid denna tidpunkt. Sökintervallet slutar vid denna deadline — tjänsten hittar det billigaste fönstret som slutar före det. Kan inte kombineras med Sökslutt, Sökslutt-tid eller Sökslutt-offset."
        },
        "search_start_time": {
          "name": "Sökstart-klockslag",
          "description": "Alternativ: Börja söka från detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökstart (datum/tid) är satt."
        },
        "search_start_day_offset": {
          "name": "Sökstart dagförskjutning",
          "description": "Dagförskjutning för Sökstart-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökstart-klockslag."
        },
        "search_end_time": {
          "name": "Sökslut-klockslag",
          "description": "Alternativ: Sök till detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökslut (datum/tid) är satt."
        },
        "search_end_day_offset": {
          "name": "Sökslut dagförskjutning",
          "description": "Dagförskjutning för Sökslut-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökslut-klockslag."
        },
        "search_start_offset_minutes": {
          "name": "Sökstart-förskjutning (minuter)",
          "description": "Alternativ: Börja söka detta antal minuter från nu. Positivt = framtid (60 = om 1 timme), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökstart eller Sökstart-klockslag är satt."
        },
        "search_end_offset_minutes": {
          "name": "Sökslut-förskjutning (minuter)",
          "description": "Alternativ: Sluta söka detta antal minuter från nu. Positivt = framtid (480 = om 8 timmar), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökslut eller Sökslut-klockslag är satt."
        },
        "include_current_interval": {
          "name": "Inkludera aktuellt intervall",
          "description": "Inkludera det pågående 15-minutersintervallet i sökningen. När aktiverat (standard), börjar sökningen vid början av det aktuella intervallet så att det kan vara en del av resultatet."
        },
        "min_segment_duration": {
          "name": "Minsta segmentvaraktighet",
          "description": "Minsta sammanhängande körtid. Förhindrar snabb av/på-cykling för enheter med minsta körtider. Avrundas automatiskt uppåt till närmaste kvart. Standard: 15 minuter. Maximum: 4 timmar."
        },
        "use_base_unit": {
          "name": "Använd basvaluta",
          "description": "Tvinga priser i basvaluta (EUR, NOK) istället för konfigurerad visningsenhet (ct, öre). Användbart för beräkningar."
        },
        "search_scope": {
          "name": "Soekumfaang (genvaeg)",
          "description": "Genvaeg foer vanliga soekomraaden. Aasidosaetter alla andra tidsalternativ. today/tomorrow = hela kalenderdagen, remaining_today = nu till midnatt, next_24h/next_48h = rullande foenster fraen nu."
        },
        "max_price_level": {
          "name": "Maximal prisnivaae",
          "description": "Ta bara med intervall paa eller under denna Tibber-prisnivaae. very_cheap = mest restriktivt, very_expensive = ingen begraensning."
        },
        "min_price_level": {
          "name": "Minimal prisnivaae",
          "description": "Ta bara med intervall paa eller oever denna Tibber-prisnivaae. Anvaendbart foer find_most_expensive foer att fokusera paa verkligt dyra intervall."
        },
        "include_comparison_details": {
          "name": "Inkludera jaemfoerelsdetaljer",
          "description": "Berika price_comparison-resultatet med ytterligare faelt: comparison_price_min, comparison_price_max och (endast block) comparison_window_end."
        },
        "power_profile": {
          "name": "Effektprofil",
          "description": "Variabel effektfoerbruekning i watt per 15-minutersintervall. Om instaellt, aaterspeglar estimated_total_cost faktisk foerbruekning istaellet foer en fast 1 kW-last."
        },
        "smooth_outliers": {
          "name": "Jämna utliggare",
          "description": "Jämna prisutliggare före sökning. Utliggarintervall ersätts tillfälligt med genomsnittet av sina grannar, så att en enskild topp eller dipp inte dominerar resultatet. Svaret visar alltid de ursprungliga (outjämnade) priserna. Standard: aktiverat."
        },
        "min_distance_from_avg": {
          "name": "Min. avstånd från genomsnitt",
          "description": "Kräv att resultatet avviker från sökområdets genomsnitt med minst denna procent. För billigast: resultatet måste vara minst X% under genomsnittet. För dyrast: minst X% över. Om villkoret inte uppfylls returneras inget resultat (reason: selection_above/below_distance_threshold). Lämna tomt för att inaktivera."
        },
        "allow_relaxation": {
          "name": "Tillåt avslappning",
          "description": "Slappna av filter gradvis för att garantera ett resultat. Faser: 1) Minska/ta bort avståndströskeln 2) Utöka prisnivåfilter 3) Minska varaktighet. Standard: aktiverat."
        },
        "duration_flexibility_minutes": {
          "name": "Varaktighetsflexibilitet",
          "description": "Max minuter varaktigheten kan förkortas under avslappning (0–120, steg 15). Lämna tomt för automatisk beräkning (~20% av varaktigheten, max 60 min)."
        }
      }
    },
    "find_most_expensive_hours": {
      "name": "Hitta dyraste timmarna",
      "description": "Hittar de dyraste intervallen för en given total varaktighet, inte nödvändigtvis sammanhängande. Användbart för att identifiera topprisperioder som bör undvikas. Returnerar ett schema av intervaller grupperade i sammanhängande segment.",
      "sections": {
        "search_range": {
          "name": "Anpassat sökintervall",
          "description": "Definiera exakta start- och sluttider för sökningen. Åsidosätter sökområdet när det anges."
        },
        "time_alternatives": {
          "name": "Avancerade tidsalternativ",
          "description": "Alternativa sätt att definiera sökintervallet med klockslag och minutförskjutningar."
        },
        "price_filter": {
          "name": "Prisnivåfilter",
          "description": "Begränsa sökningen till intervall inom det angivna Tibber-prisnivåintervallet."
        },
        "search_tuning": {
          "name": "Finjustering av sökalgoritm",
          "description": "Finjustera hur sökningen hanterar avvikare, minimikvalitetströsklar och reservbeteende."
        },
        "cost_estimation": {
          "name": "Kostnadsuppskattning",
          "description": "Ange en effektprofil för att få exakta energikostnadsuppskattningar baserat på faktisk förbrukning."
        },
        "output": {
          "name": "Utdataalternativ",
          "description": "Kontrollera utdataformat: jämförelsedetaljer och valutaenhet."
        }
      },
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        },
        "duration": {
          "name": "Varaktighet",
          "description": "Dyr total tid att hitta. Avrundas automatiskt uppåt till närmaste kvart. Maximum: 24 timmar."
        },
        "search_start": {
          "name": "Sökstart",
          "description": "Start av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra startalternativ. Standard är nu om inte angivet."
        },
        "search_end": {
          "name": "Sökslut",
          "description": "Slut av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra slutalternativ. Standard är slutet av imorgon om inte angivet."
        },
        "must_finish_by": {
          "name": "Måste vara klar senast",
          "description": "Deadline: apparaten måste vara klar vid denna tid. Sökintervallet slutar vid denna deadline — tjänsten hittar det dyraste fönstret som slutar före den. Kan inte kombineras med Sökslutt, Sökslutt-klockslag, Sökslutt-förskjutning eller Sökområde."
        },
        "search_start_time": {
          "name": "Sökstart-klockslag",
          "description": "Alternativ: Börja söka från detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökstart (datum/tid) är satt."
        },
        "search_start_day_offset": {
          "name": "Sökstart dagförskjutning",
          "description": "Dagförskjutning för Sökstart-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökstart-klockslag."
        },
        "search_end_time": {
          "name": "Sökslut-klockslag",
          "description": "Alternativ: Sök till detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökslut (datum/tid) är satt."
        },
        "search_end_day_offset": {
          "name": "Sökslut dagförskjutning",
          "description": "Dagförskjutning för Sökslut-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökslut-klockslag."
        },
        "search_start_offset_minutes": {
          "name": "Sökstart-förskjutning (minuter)",
          "description": "Alternativ: Börja söka detta antal minuter från nu. Positivt = framtid (60 = om 1 timme), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökstart eller Sökstart-klockslag är satt."
        },
        "search_end_offset_minutes": {
          "name": "Sökslut-förskjutning (minuter)",
          "description": "Alternativ: Sluta söka detta antal minuter från nu. Positivt = framtid (480 = om 8 timmar), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökslut eller Sökslut-klockslag är satt."
        },
        "include_current_interval": {
          "name": "Inkludera aktuellt intervall",
          "description": "Inkludera det pågående 15-minutersintervallet i sökningen. När aktiverat (standard), börjar sökningen vid början av det aktuella intervallet så att det kan vara en del av resultatet."
        },
        "min_segment_duration": {
          "name": "Minsta segmentvaraktighet",
          "description": "Minsta sammanhängande körtid. Förhindrar snabb av/på-cykling för enheter med minsta körtider. Avrundas automatiskt uppåt till närmaste kvart. Standard: 15 minuter. Maximum: 4 timmar."
        },
        "use_base_unit": {
          "name": "Använd basvaluta",
          "description": "Tvinga priser i basvaluta (EUR, NOK) istället för konfigurerad visningsenhet (ct, öre). Användbart för beräkningar."
        },
        "search_scope": {
          "name": "Soekumfaang (genvaeg)",
          "description": "Genvaeg foer vanliga soekomraaden. Aasidosaetter alla andra tidsalternativ. today/tomorrow = hela kalenderdagen, remaining_today = nu till midnatt, next_24h/next_48h = rullande foenster fraen nu."
        },
        "max_price_level": {
          "name": "Maximal prisnivaae",
          "description": "Ta bara med intervall paa eller under denna Tibber-prisnivaae. very_cheap = mest restriktivt, very_expensive = ingen begraensning."
        },
        "min_price_level": {
          "name": "Minimal prisnivaae",
          "description": "Ta bara med intervall paa eller oever denna Tibber-prisnivaae. Anvaendbart foer find_most_expensive foer att fokusera paa verkligt dyra intervall."
        },
        "include_comparison_details": {
          "name": "Inkludera jaemfoerelsdetaljer",
          "description": "Berika price_comparison-resultatet med ytterligare faelt: comparison_price_min, comparison_price_max och (endast block) comparison_window_end."
        },
        "power_profile": {
          "name": "Effektprofil",
          "description": "Variabel effektfoerbruekning i watt per 15-minutersintervall. Om instaellt, aaterspeglar estimated_total_cost faktisk foerbruekning istaellet foer en fast 1 kW-last."
        },
        "smooth_outliers": {
          "name": "Jämna utliggare",
          "description": "Jämna prisutliggare före sökning. Utliggarintervall ersätts tillfälligt med genomsnittet av sina grannar, så att en enskild topp eller dipp inte dominerar resultatet. Svaret visar alltid de ursprungliga (outjämnade) priserna. Standard: aktiverat."
        },
        "min_distance_from_avg": {
          "name": "Min. avstånd från genomsnitt",
          "description": "Kräv att resultatet avviker från sökområdets genomsnitt med minst denna procent. För billigast: resultatet måste vara minst X% under genomsnittet. För dyrast: minst X% över. Om villkoret inte uppfylls returneras inget resultat (reason: selection_above/below_distance_threshold). Lämna tomt för att inaktivera."
        },
        "allow_relaxation": {
          "name": "Tillåt avslappning",
          "description": "Slappna av filter gradvis för att garantera ett resultat. Faser: 1) Minska/ta bort avståndströskeln 2) Utöka prisnivåfilter 3) Minska varaktighet. Standard: aktiverat."
        },
        "duration_flexibility_minutes": {
          "name": "Varaktighetsflexibilitet",
          "description": "Max minuter varaktigheten kan förkortas under avslappning (0–120, steg 15). Lämna tomt för automatisk beräkning (~20% av varaktigheten, max 60 min)."
        }
      }
    },
    "find_cheapest_schedule": {
      "name": "Hitta billigaste schema",
      "description": "Schemalaggar flera apparater optimalt utan tidsoeverlapp. Varje uppgift tilldelas det billigaste tillgaengliga sammanhangande tidsfoenster.",
      "sections": {
        "search_range": {
          "name": "Anpassat sökintervall",
          "description": "Definiera exakta start- och sluttider för sökningen. Åsidosätter sökområdet när det anges."
        },
        "time_alternatives": {
          "name": "Avancerade tidsalternativ",
          "description": "Alternativa sätt att definiera sökintervallet med klockslag och minutförskjutningar."
        },
        "price_filter": {
          "name": "Prisnivåfilter",
          "description": "Begränsa sökningen till intervall inom det angivna Tibber-prisnivåintervallet."
        },
        "search_tuning": {
          "name": "Finjustering av sökalgoritm",
          "description": "Finjustera hur sökningen hanterar avvikare, minimikvalitetströsklar och reservbeteende."
        },
        "output": {
          "name": "Utdataalternativ",
          "description": "Kontrollera utdataformat: jämförelsedetaljer och valutaenhet."
        }
      },
      "fields": {
        "entry_id": {
          "name": "Entry-ID",
          "description": "Config entry-ID för Tibber-integrationen."
        },
        "tasks": {
          "name": "Uppgifter",
          "description": "Lista med uppgifter att schemalagga. Varje uppgift kraever name (text) och duration (hh:mm:ss). Valfritt power_profile (watt per 15-min-intervall). Maximalt 4 uppgifter."
        },
        "gap_minutes": {
          "name": "Paus mellan uppgifter (minuter)",
          "description": "Minsta paus i minuter mellan paa varandra foeoljande schemalagda uppgifter. Avrundas uppaat till 15 minuter. Standard: 0 (ingen paus)."
        },
        "sequential": {
          "name": "Sekventiell ordning",
          "description": "Schemalägg uppgifter i den ordning de står i uppgiftslistan. Varje uppgift startar efter att den föregående är klar (plus paus). Använd detta för beroende apparater som tvättmaskin → torktumlare. Standard: inaktiverad (uppgifter sorteras efter varaktighet för optimal fördelning)."
        },
        "search_scope": {
          "name": "Soekumfaang (genvaeg)",
          "description": "Genvaeg foer vanliga soekomraaden. Aasidosaetter alla andra tidsalternativ. today/tomorrow = hela kalenderdagen, remaining_today = nu till midnatt, next_24h/next_48h = rullande foenster fraen nu."
        },
        "search_start": {
          "name": "Sökstart",
          "description": "Start av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra startalternativ. Standard är nu om inte angivet."
        },
        "search_end": {
          "name": "Sökslut",
          "description": "Slut av sökintervallet som exakt datum och tid. Högsta prioritet — åsidosätter alla andra slutalternativ. Standard är slutet av imorgon om inte angivet."
        },
        "must_finish_by": {
          "name": "Måste vara klar senast",
          "description": "Deadline: apparaten måste vara klar vid denna tidpunkt. Sökintervallet slutar vid denna deadline — tjänsten hittar det billigaste fönstret som slutar före det. Kan inte kombineras med Sökslutt, Sökslutt-tid eller Sökslutt-offset."
        },
        "search_start_time": {
          "name": "Sökstart-klockslag",
          "description": "Alternativ: Börja söka från detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökstart (datum/tid) är satt."
        },
        "search_start_day_offset": {
          "name": "Sökstart dagförskjutning",
          "description": "Dagförskjutning för Sökstart-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökstart-klockslag."
        },
        "search_end_time": {
          "name": "Sökslut-klockslag",
          "description": "Alternativ: Sök till detta klockslag. Kombinera med dagförskjutning. Ignoreras om Sökslut (datum/tid) är satt."
        },
        "search_end_day_offset": {
          "name": "Sökslut dagförskjutning",
          "description": "Dagförskjutning för Sökslut-klockslag. -7 till 2: -1 = igår, 0 = idag, 1 = imorgon. Negativa värden söker i det förflutna. Används bara med Sökslut-klockslag."
        },
        "search_start_offset_minutes": {
          "name": "Sökstart-förskjutning (minuter)",
          "description": "Alternativ: Börja söka detta antal minuter från nu. Positivt = framtid (60 = om 1 timme), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökstart eller Sökstart-klockslag är satt."
        },
        "search_end_offset_minutes": {
          "name": "Sökslut-förskjutning (minuter)",
          "description": "Alternativ: Sluta söka detta antal minuter från nu. Positivt = framtid (480 = om 8 timmar), negativt = förflutet (-60 = 1 timme sedan). Ignoreras om Sökslut eller Sökslut-klockslag är satt."
        },
        "max_price_level": {
          "name": "Maximal prisnivaae",
          "description": "Ta bara med intervall paa eller under denna Tibber-prisnivaae. very_cheap = mest restriktivt, very_expensive = ingen begraensning."
        },
        "min_price_level": {
          "name": "Minimal prisnivaae",
          "description": "Ta bara med intervall paa eller oever denna Tibber-prisnivaae. Anvaendbart foer find_most_expensive foer att fokusera paa verkligt dyra intervall."
        },
        "include_comparison_details": {
          "name": "Inkludera jaemfoerelsedetaljer",
          "description": "Laegger till extra price_comparison-detaljer per uppgift (comparison_price_min, comparison_price_max, comparison_window_end) foer att jaemfoera valt foenster med motsatt extremfoenster med samma laengd."
        },
        "use_base_unit": {
          "name": "Använd basvaluta",
          "description": "Tvinga priser i basvaluta (EUR, NOK) istället för konfigurerad visningsenhet (ct, öre). Användbart för beräkningar."
        },
        "smooth_outliers": {
          "name": "Jämna utliggare",
          "description": "Jämna prisutliggare före sökning. Utliggarintervall ersätts tillfälligt med genomsnittet av sina grannar, så att en enskild topp eller dipp inte dominerar resultatet. Svaret visar alltid de ursprungliga (outjämnade) priserna. Standard: aktiverat."
        },
        "allow_relaxation": {
          "name": "Tillåt avslappning",
          "description": "Slappna av filter gradvis för att garantera ett resultat. Faser: 1) Minska/ta bort avståndströskeln 2) Utöka prisnivåfilter 3) Minska varaktighet. Standard: aktiverat."
        },
        "duration_flexibility_minutes": {
          "name": "Varaktighetsflexibilitet",
          "description": "Max minuter varaktigheten kan förkortas under avslappning (0–120, steg 15). Lämna tomt för automatisk beräkning (~20% av varaktigheten, max 60 min)."
        }
      }
    },
    "plan_charging": {
      "name": "Plan Charging",
      "description": "Creates a lowest-cost charging schedule from battery parameters instead of a fixed duration. Supports fixed, continuous, or stepped charging power, optional deadline-aware minimum SoC planning, and economic filtering for later discharge use cases. Returns a per-interval charging plan with power, energy, SoC progression, segment grouping, total cost, and profitability details. If no schedule is found, the response includes a stable reason code in the reason field (for example: 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": "Battery Parameters",
          "description": "Describe the battery: usable capacity, current and target SoC, and charging efficiency. You can provide SoC in percent (requires capacity) or directly in kWh."
        },
        "charging": {
          "name": "Charging Strategy",
          "description": "Configure variable-power charging behavior, grid limits, and minimum run-time constraints."
        },
        "deadline": {
          "name": "Deadline Planning",
          "description": "Require a minimum state of charge by a specific moment (for example before a peak period). Set both the Minimum SoC by Deadline and when it must be reached — either as an absolute time (Must Reach By) or from a known event (Deadline Event)."
        },
        "search_range": {
          "name": "Custom Search Range",
          "description": "Define precise start and end times for the search. Overrides Search Scope when set."
        },
        "time_alternatives": {
          "name": "Advanced Time Options",
          "description": "Alternative ways to define the search range using time-of-day and minute offsets."
        },
        "price_filter": {
          "name": "Price Level Filter",
          "description": "Restrict search to intervals within the specified Tibber price level range."
        },
        "search_tuning": {
          "name": "Search Algorithm Tuning",
          "description": "Fine-tune how the search handles outliers, minimum quality thresholds, and fallback behavior."
        },
        "economics": {
          "name": "Economic Filters",
          "description": "Filter charging intervals by maximum cost or expected later discharge value."
        },
        "output": {
          "name": "Output Options",
          "description": "Control output format: comparison details and currency unit."
        }
      },
      "fields": {
        "entry_id": {
          "name": "Entry ID",
          "description": "The config entry ID for the Tibber integration."
        },
        "max_charge_power_w": {
          "name": "Maximum Charge Power",
          "description": "Maximum charging power in watts. This defines the upper bound for fixed, continuous, or stepped charging schedules."
        },
        "battery_capacity_kwh": {
          "name": "Battery Capacity",
          "description": "Usable battery capacity in kWh. Required when current or target SoC is provided as a percentage."
        },
        "current_soc_percent": {
          "name": "Current SoC (%)",
          "description": "Current battery state of charge in percent. Cannot be combined with Current SoC (kWh)."
        },
        "current_soc_kwh": {
          "name": "Current SoC (kWh)",
          "description": "Current battery state of charge in kWh. Cannot be combined with Current SoC (%)."
        },
        "target_soc_percent": {
          "name": "Target SoC (%)",
          "description": "Desired battery state of charge in percent. Cannot be combined with Target SoC (kWh)."
        },
        "target_soc_kwh": {
          "name": "Target SoC (kWh)",
          "description": "Desired battery state of charge in kWh. Cannot be combined with Target SoC (%)."
        },
        "charging_efficiency": {
          "name": "Charging Efficiency",
          "description": "Fraction of grid energy that is stored in the battery. Example: 0.92 means 8% charging losses."
        },
        "search_scope": {
          "name": "Search Scope",
          "description": "Shorthand for common search ranges. Overrides all other time range options. today / tomorrow = full calendar day, remaining_today = now until midnight, next_24h / next_48h = rolling window from now."
        },
        "include_current_interval": {
          "name": "Include Current Interval",
          "description": "Include the currently running 15-minute interval in the search. When enabled, charging may begin in the current interval if it is part of the cheapest result."
        },
        "search_start": {
          "name": "Search Start",
          "description": "Start of the search range as exact date and time. Highest priority — overrides all other start options. Defaults to now if not specified."
        },
        "search_end": {
          "name": "Search End",
          "description": "End of the search range as exact date and time. Highest priority — overrides all other end options. Defaults to end of tomorrow if not specified."
        },
        "must_finish_by": {
          "name": "Must Finish By",
          "description": "Deadline: charging must be finished by this time. The search range ends at this deadline — the service finds the cheapest intervals that complete before it. Cannot be combined with Search End, Search End Time, or Search End Offset."
        },
        "search_start_time": {
          "name": "Search Start Time",
          "description": "Alternative: start searching at this time of day. Combine with day offset. Ignored if Search Start (datetime) is set."
        },
        "search_start_day_offset": {
          "name": "Search Start Day Offset",
          "description": "Day offset for Search Start Time. -7 to 2: -1 = yesterday, 0 = today, 1 = tomorrow. Only used with Search Start Time."
        },
        "search_end_time": {
          "name": "Search End Time",
          "description": "Alternative: stop searching at this time of day. Combine with day offset. Ignored if Search End (datetime) is set."
        },
        "search_end_day_offset": {
          "name": "Search End Day Offset",
          "description": "Day offset for Search End Time. -7 to 2: -1 = yesterday, 0 = today, 1 = tomorrow. Only used with Search End Time."
        },
        "search_start_offset_minutes": {
          "name": "Search Start Offset (minutes)",
          "description": "Alternative: start searching this many minutes from now. Positive = future, negative = past. Ignored if Search Start or Search Start Time is set."
        },
        "search_end_offset_minutes": {
          "name": "Search End Offset (minutes)",
          "description": "Alternative: stop searching this many minutes from now. Positive = future, negative = past. Ignored if Search End or Search End Time is set."
        },
        "max_price_level": {
          "name": "Maximum Price Level",
          "description": "Only consider intervals at or below this Tibber price level. very_cheap = most restrictive, very_expensive = no restriction."
        },
        "min_price_level": {
          "name": "Minimum Price Level",
          "description": "Only consider intervals at or above this Tibber price level. Useful to exclude unrealistically cheap negative-price-only windows from mixed searches."
        },
        "include_comparison_details": {
          "name": "Include Comparison Details",
          "description": "Enrich the price_comparison result with additional fields: comparison_price_min and comparison_price_max."
        },
        "use_base_unit": {
          "name": "Use Base Currency Unit",
          "description": "Force prices in base currency (EUR, NOK) instead of the configured display unit (ct, øre). Useful for calculations."
        },
        "smooth_outliers": {
          "name": "Smooth Outliers",
          "description": "Smooth price outliers before searching. Outlier intervals are temporarily replaced by the average of their neighbors, so a single spike or dip does not dominate the result. The response always shows the original (unsmoothed) prices. Default: enabled."
        },
        "min_distance_from_avg": {
          "name": "Min. Distance from Average",
          "description": "Require the selected charging intervals to be at least this percentage below the average price of the full search range. Leave empty to disable."
        },
        "allow_relaxation": {
          "name": "Allow relaxation",
          "description": "Progressively relax filters to guarantee a result when possible. Phases: 1) Reduce/remove distance threshold 2) Expand level filters 3) Reduce duration. Default: enabled."
        },
        "duration_flexibility_minutes": {
          "name": "Duration flexibility",
          "description": "Maximum minutes the automatically calculated charging duration may be shortened during relaxation (0–120, step 15). Leave empty for automatic calculation."
        },
        "must_reach_soc_percent": {
          "name": "Minimum SoC by Deadline (%)",
          "description": "Minimum battery state of charge that must be reached by the deadline. Cannot be combined with Minimum SoC by Deadline (kWh)."
        },
        "must_reach_soc_kwh": {
          "name": "Minimum SoC by Deadline (kWh)",
          "description": "Minimum battery state of charge that must be reached by the deadline. Cannot be combined with Minimum SoC by Deadline (%)."
        },
        "min_charge_power_w": {
          "name": "Minimum Charge Power",
          "description": "Enable continuous charging mode. The planner may reduce the last interval down to this minimum power instead of always using the maximum."
        },
        "charge_power_steps_w": {
          "name": "Charge Power Steps",
          "description": "Enable stepped charging mode. Provide the allowed power steps in watts as a list, for example [1380, 4140, 11000]. The planner picks the smallest step that still covers the remaining energy in the final interval. Mutually exclusive with Minimum Charge Power."
        },
        "grid_import_limit_w": {
          "name": "Grid Import Limit",
          "description": "Upper limit for charging power drawn from the grid in watts. Useful when the charger must share available power with other loads."
        },
        "must_reach_by": {
          "name": "Must Reach By",
          "description": "Absolute deadline for must_reach_soc_*. The planner first guarantees the minimum SoC before this moment, then continues with the remaining target if possible."
        },
        "must_reach_by_event": {
          "name": "Deadline Event",
          "description": "Alternative deadline derived from coordinator data. Use this instead of Must Reach By to plan around midnight, the next peak period, or the next best-price period end."
        },
        "discharging_efficiency": {
          "name": "Discharging Efficiency",
          "description": "Fraction of stored battery energy that is still usable when later discharged. Used for profitability calculations."
        },
        "expected_discharge_price": {
          "name": "Expected Discharge Price",
          "description": "Expected value of each discharged kWh. Intervals above the break-even price can be filtered when Reserve For Discharge is enabled."
        },
        "reserve_for_discharge": {
          "name": "Reserve For Discharge",
          "description": "Keep only intervals that are economically sensible for a later discharge based on expected discharge price and round-trip efficiency."
        },
        "max_cost_per_kwh": {
          "name": "Maximum Charge Price",
          "description": "Discard candidate intervals above this price per kWh before scheduling. Uses the selected price unit."
        },
        "min_charge_duration_minutes": {
          "name": "Minimum Charge Duration",
          "description": "Merge short isolated intervals into longer charging blocks where possible. Useful for chargers that should avoid very short runs."
        },
        "max_cycles_per_day": {
          "name": "Maximum Charge Cycles Per Day",
          "description": "Limit how many separate charging segments may be used per day. The planner keeps the cheapest segments within this limit."
        }
      }
    }
  },
  "selector": {
    "account_choice": {
      "options": {
        "new_token": "Lägg till ny Tibber-konto API-token"
      }
    },
    "day": {
      "options": {
        "yesterday": "Igår",
        "today": "Idag",
        "tomorrow": "Imorgon",
        "rolling_window": "Glidande fönster",
        "rolling_window_autozoom": "Glidande fönster (Auto-Zoom)"
      }
    },
    "resolution": {
      "options": {
        "interval": "Intervall (15 min)",
        "hourly": "Varje timme"
      }
    },
    "output_format": {
      "options": {
        "array_of_objects": "Array av objekt",
        "array_of_arrays": "Array av arrays"
      }
    },
    "level_type": {
      "options": {
        "rating_level": "Betygnivå (låg/normal/hög)",
        "level": "Tibber-nivå (mycket billigt till mycket dyrt)"
      }
    },
    "level_filter": {
      "options": {
        "very_cheap": "Mycket billigt",
        "cheap": "Billigt",
        "normal": "Normalt",
        "expensive": "Dyrt",
        "very_expensive": "Mycket dyrt"
      }
    },
    "rating_level_filter": {
      "options": {
        "low": "Låg",
        "normal": "Normal",
        "high": "Hög"
      }
    },
    "insert_nulls": {
      "options": {
        "none": "Ingen",
        "segments": "Segment",
        "all": "Alla"
      }
    },
    "period_filter": {
      "options": {
        "best_price": "Bästa prisperioder",
        "peak_price": "Topprisperioder"
      }
    },
    "metadata": {
      "options": {
        "include": "Inkludera (data + metadata)",
        "only": "Endast metadata",
        "none": "Ingen (endast data)"
      }
    },
    "volatility": {
      "options": {
        "low": "Låg",
        "moderate": "Måttlig",
        "high": "Hög",
        "very_high": "Mycket hög"
      }
    },
    "current_interval_price_level": {
      "options": {
        "any": "Alla",
        "very_cheap": "Mycket billigt",
        "cheap": "Billigt",
        "normal": "Normalt",
        "expensive": "Dyrt",
        "very_expensive": "Mycket dyrt"
      }
    },
    "currency_display_mode": {
      "options": {
        "base": "Basvaluta (€, kr)",
        "subunit": "Underenhetsvaluta (ct, øre)"
      }
    },
    "average_sensor_display": {
      "options": {
        "median": "Median",
        "mean": "Aritmetiskt medelvärde"
      }
    },
    "search_scope": {
      "options": {
        "today": "Idag",
        "tomorrow": "Imorgon",
        "remaining_today": "Aaterstoden av idag",
        "next_24h": "Naesta 24 timmar",
        "next_48h": "Naesta 48 timmar"
      }
    },
    "charging_deadline_event": {
      "options": {
        "midnight": "Midnight",
        "next_peak_period": "Next Peak Period",
        "next_best_period_end": "End of Next Best-Price Period"
      }
    }
  }
}
