hass.tibber_prices/custom_components/tibber_prices/translations/nb.json
Julian Pawlowski 60e05e0815 refactor(currency)!: rename major/minor to base/subunit currency terminology
Complete terminology migration from confusing "major/minor" to clearer
"base/subunit" currency naming throughout entire codebase, translations,
documentation, tests, and services.

BREAKING CHANGES:

1. **Service API Parameters Renamed**:
   - `get_chartdata`: `minor_currency` → `subunit_currency`
   - `get_apexcharts_yaml`: Updated service_data references from
     `minor_currency: true` to `subunit_currency: true`
   - All automations/scripts using these parameters MUST be updated

2. **Configuration Option Key Changed**:
   - Config entry option: Display mode setting now uses new terminology
   - Internal key: `currency_display_mode` values remain "base"/"subunit"
   - User-facing labels updated in all 5 languages (de, en, nb, nl, sv)

3. **Sensor Entity Key Renamed**:
   - `current_interval_price_major` → `current_interval_price_base`
   - Entity ID changes: `sensor.tibber_home_current_interval_price_major`
     → `sensor.tibber_home_current_interval_price_base`
   - Energy Dashboard configurations MUST update entity references

4. **Function Signatures Changed**:
   - `format_price_unit_major()` → `format_price_unit_base()`
   - `format_price_unit_minor()` → `format_price_unit_subunit()`
   - `get_price_value()`: Parameter `in_euro` deprecated in favor of
     `config_entry` (backward compatible for now)

5. **Translation Keys Renamed**:
   - All language files: Sensor translation key
     `current_interval_price_major` → `current_interval_price_base`
   - Service parameter descriptions updated in all languages
   - Selector options updated: Display mode dropdown values

Changes by Category:

**Core Code (Python)**:
- const.py: Renamed all format_price_unit_*() functions, updated docstrings
- entity_utils/helpers.py: Updated get_price_value() with config-driven
  conversion and backward-compatible in_euro parameter
- sensor/__init__.py: Added display mode filtering for base currency sensor
- sensor/core.py:
  * Implemented suggested_display_precision property for dynamic decimal places
  * Updated native_unit_of_measurement to use get_display_unit_string()
  * Updated all price conversion calls to use config_entry parameter
- sensor/definitions.py: Renamed entity key and updated all
  suggested_display_precision values (2 decimals for most sensors)
- sensor/calculators/*.py: Updated all price conversion calls (8 calculators)
- sensor/helpers.py: Updated aggregate_price_data() signature with config_entry
- sensor/attributes/future.py: Updated future price attributes conversion

**Services**:
- services/chartdata.py: Renamed parameter minor_currency → subunit_currency
  throughout (53 occurrences), updated metadata calculation
- services/apexcharts.py: Updated service_data references in generated YAML
- services/formatters.py: Renamed parameter use_minor_currency →
  use_subunit_currency in aggregate_hourly_exact() and get_period_data()
- sensor/chart_metadata.py: Updated default parameter name

**Translations (5 Languages)**:
- All /translations/*.json:
  * Added new config step "display_settings" with comprehensive explanations
  * Renamed current_interval_price_major → current_interval_price_base
  * Updated service parameter descriptions (subunit_currency)
  * Added selector.currency_display_mode.options with translated labels
- All /custom_translations/*.json:
  * Renamed sensor description keys
  * Updated chart_metadata usage_tips references

**Documentation**:
- docs/user/docs/actions.md: Updated parameter table and feature list
- docs/user/versioned_docs/version-v0.21.0/actions.md: Backported changes

**Tests**:
- Updated 7 test files with renamed parameters and conversion logic:
  * test_connect_segments.py: Renamed minor/major to subunit/base
  * test_period_data_format.py: Updated period price conversion tests
  * test_avg_none_fallback.py: Fixed tuple unpacking for new return format
  * test_best_price_e2e.py: Added config_entry parameter to all calls
  * test_cache_validity.py: Fixed cache data structure (price_info key)
  * test_coordinator_shutdown.py: Added repair_manager mock
  * test_midnight_turnover.py: Added config_entry parameter
  * test_peak_price_e2e.py: Added config_entry parameter, fixed price_avg → price_mean
  * test_percentage_calculations.py: Added config_entry mock

**Coordinator/Period Calculation**:
- coordinator/periods.py: Added config_entry parameter to
  calculate_periods_with_relaxation() calls (2 locations)

Migration Guide:

1. **Update Service Calls in Automations/Scripts**:
   \`\`\`yaml
   # Before:
   service: tibber_prices.get_chartdata
   data:
     minor_currency: true

   # After:
   service: tibber_prices.get_chartdata
   data:
     subunit_currency: true
   \`\`\`

2. **Update Energy Dashboard Configuration**:
   - Settings → Dashboards → Energy
   - Replace sensor entity:
     `sensor.tibber_home_current_interval_price_major` →
     `sensor.tibber_home_current_interval_price_base`

3. **Review Integration Configuration**:
   - Settings → Devices & Services → Tibber Prices → Configure
   - New "Currency Display Settings" step added
   - Default mode depends on currency (EUR → subunit, Scandinavian → base)

Rationale:

The "major/minor" terminology was confusing and didn't clearly communicate:
- **Major** → Unclear if this means "primary" or "large value"
- **Minor** → Easily confused with "less important" rather than "smaller unit"

New terminology is precise and self-explanatory:
- **Base currency** → Standard ISO currency (€, kr, $, £)
- **Subunit currency** → Fractional unit (ct, øre, ¢, p)

This aligns with:
- International terminology (ISO 4217 standard)
- Banking/financial industry conventions
- User expectations from payment processing systems

Impact: Aligns currency terminology with international standards. Users must
update service calls, automations, and Energy Dashboard configuration after
upgrade.

Refs: User feedback session (December 2025) identified terminology confusion
2025-12-11 08:26:30 +00:00

1149 lines
65 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"config": {
"step": {
"account_choice": {
"title": "Velg konto",
"description": "Du kan legge til et nytt hjem fra en eksisterende Tibber-konto eller skrive inn et nytt API-token for en annen konto.",
"data": {
"account_choice": "Konto"
},
"submit": "Fortsett →"
},
"new_token": {
"title": "Skriv inn API-token",
"description": "Sett opp Tibber Prisinformasjon & Vurderinger.\n\nFor å generere et API-tilgangstoken, besøk https://developer.tibber.com.",
"data": {
"access_token": "API-tilgangstoken"
},
"submit": "Valider token"
},
"user": {
"description": "Sett opp Tibber Prisinformasjon & Vurderinger.\n\nFor å generere et API-tilgangstoken, besøk https://developer.tibber.com.",
"data": {
"access_token": "API-tilgangstoken"
},
"submit": "Valider token"
},
"select_home": {
"description": "Velg et hjem for å hente prisinformasjon og vurderinger.",
"data": {
"home_id": "Hjem"
},
"title": "Velg et hjem",
"submit": "Velg hjem"
},
"finish": {
"description": "Velg et hjem for å hente prisinformasjon og vurderinger.",
"data": {
"home_id": "Hjem-ID"
},
"title": "Velg et hjem",
"submit": "Velg hjem"
},
"reauth_confirm": {
"title": "Autentiser Tibber Prisintegrasjonen på nytt",
"description": "Tilgangstokenet for Tibber er ikke lenger gyldig. Vennligst oppgi et nytt API-tilgangstoken for å fortsette å bruke denne integrasjonen.\n\nFor å generere et nytt API-tilgangstoken, besøk https://developer.tibber.com.",
"data": {
"access_token": "API-tilgangstoken"
},
"submit": "Oppdater token"
}
},
"error": {
"auth": "Tibber-tilgangstokenet er ugyldig.",
"connection": "Kunne ikke koble til Tibber. Vennligst sjekk internettforbindelsen din.",
"unknown": "Uventet feil",
"cannot_connect": "Kunne ikke koble til",
"invalid_access_token": "Ugyldig tilgangstoken",
"missing_homes": "Det nye tilgangstokenet har ikke tilgang til alle konfigurerte hjem. Vennligst bruk et tilgangstoken som har tilgang til de samme Tibber-hjemmene.",
"home_already_configured": "Dette hjemmet er allerede konfigurert i en annen oppføring. Hvert hjem kan kun konfigureres én gang.",
"no_active_subscription": "Dette hjemmet har ikke en aktiv Tibber-kontrakt. Bare hjem med aktive strømkontrakter kan legges til Home Assistant.",
"subscription_expired": "Tibber-kontrakten for dette hjemmet har utløpt. Bare hjem med aktive eller fremtidige strømkontrakter kan legges til Home Assistant.",
"future_subscription_warning": "Merk: Tibber-kontrakten for dette hjemmet har ikke startet ennå. Funksjonaliteten kan være begrenset til kontrakten blir aktiv.",
"invalid_yaml_syntax": "Ugyldig YAML-syntaks. Vennligst sjekk innrykk, kolon og spesialtegn.",
"invalid_yaml_structure": "YAML må være en ordbok/objekt (nøkkel: verdi-par), ikke en liste eller ren tekst.",
"service_call_failed": "Service-kall validering feilet: {error_detail}",
"missing_entry_id": "Oppførings-ID er påkrevd, men ble ikke oppgitt.",
"invalid_entry_id": "Ugyldig oppførings-ID eller oppføring ikke funnet.",
"missing_home_id": "Hjem-ID mangler fra konfigurasjonsoppføringen.",
"user_data_not_available": "Brukerdata er ikke tilgjengelig. Vennligst oppdater brukerdata først.",
"price_fetch_failed": "Kunne ikke hente prisdata. Vennligst sjekk loggene for detaljer."
},
"abort": {
"already_configured": "Alle tilgjengelige Tibber-hjem er allerede konfigurert. Hvert hjem kan kun konfigureres én gang.",
"entry_not_found": "Tibber-konfigurasjonsoppføring ikke funnet.",
"setup_complete": "Oppsett fullført! Du kan endre ytterligere alternativer for Tibber Prices i integrasjonens alternativer etter å ha lukket denne dialogen.",
"reauth_successful": "Ny autentisering vellykket. Integrasjonen har blitt oppdatert med det nye tilgangstokenet."
}
},
"common": {
"step_progress": "{step_num} / {total_steps}"
},
"config_subentries": {
"home": {
"entry_type": "Tidsreisevisning",
"initiate_flow": {
"user": "Opprett tidsreisevisning"
},
"title": "Opprett tidsreisevisning",
"step": {
"user": {
"title": "Velg konfigurasjonsoppføring",
"description": "Velg konfigurasjonsoppføringen du vil opprette en tidsreisevisning for.\n\n**Tidsreisevisninger** lar deg se historiske prisdata som om det var nåværende tid. Dette er nyttig for å teste automatiseringer eller analysere tidligere prismønstre.",
"data": {
"parent_entry_id": "Konfigurasjonsoppføring"
}
},
"time_offset": {
"title": "Konfigurer tidsforskyvning",
"description": "Konfigurer hvor langt tilbake i tid denne visningen skal reise.\n\n**Anbefalt:** Bruk **≥2 dager** forskyvning for å unngå konflikter med \"yesterday\"-entiteter som også gir historiske data.\n\n**Eksempler:**\n• **-7 dager**: Vis priser fra 7 dager siden\n• **-2 dager, 3 timer**: Vis priser fra 2 dager og 3 timer siden\n• **-14 dager**: Vis priser fra 2 uker siden",
"data": {
"virtual_time_offset_days": "Dager tilbake",
"time_offset": "Ekstra tidsforskyvning"
},
"data_description": {
"virtual_time_offset_days": "Hvor mange dager å reise tilbake i tid. Glidebryter-område: 0 til 374 dager (≈1 år). Anbefalt: ≥2 dager for å unngå konflikter med \"yesterday\"-entiteter.",
"time_offset": "Valgfri finjustering: Legg til timer og/eller minutter til dagesforskyvningen. Tiden trekkes automatisk fra (reis lenger tilbake). Merk: Sekunder ignoreres - kun minuttbasert presisjon støttes."
}
},
"init": {
"title": "Konfigurer tidsforskyvning på nytt",
"description": "Oppdater tidsforskyvningen for denne tidsreisevisningen.",
"data": {
"virtual_time_offset_days": "Dager tilbake",
"time_offset": "Ekstra tidsforskyvning"
},
"data_description": {
"virtual_time_offset_days": "Hvor mange dager å reise tilbake i tid. Glidebryter-område: 0 til 374 dager (≈1 år). Anbefalt: ≥2 dager for å unngå konflikter med \"yesterday\"-entiteter.",
"time_offset": "Valgfri finjustering: Legg til timer og/eller minutter til dagesforskyvningen. Tiden trekkes automatisk fra (reis lenger tilbake). Merk: Sekunder ignoreres - kun minuttbasert presisjon støttes."
}
}
},
"error": {
"no_time_offset": "Minst én tidsforskyvningsverdi må være negativ (kun historiske data)."
},
"abort": {
"already_configured": "**En tidsreisevisning med denne eksakte tidsforskyvningen eksisterer allerede.**\n\nVelg en annen forskyvning.",
"no_main_entries": "Ingen hovedkonfigurasjonsoppføringer funnet. Legg til et Tibber-hjem først.",
"parent_entry_not_found": "Valgt konfigurasjonsoppføring ikke funnet."
}
}
},
"options": {
"step": {
"init": {
"title": "⚙️ Generelle innstillinger",
"description": "_{step_progress}_\n\n**Konfigurer generelle innstillinger for Tibber prisinformasjon og vurderinger.**\n\n---\n\n**Bruker:** {user_login}",
"data": {
"extended_descriptions": "Utvidede beskrivelser",
"average_sensor_display": "Gjennomsnittssensor-visning"
},
"data_description": {
"extended_descriptions": "Styrer om entitetsattributter inkluderer detaljerte forklaringer og brukstips.\n\n• Deaktivert (standard): Bare kort beskrivelse\n• Aktivert: Detaljert forklaring + praktiske brukseksempler\n\nEksempel:\nDeaktivert = 1 attributt\nAktivert = 2 ekstra attributter",
"average_sensor_display": "Velg hvilket statistisk mål som skal vises i sensortilstanden for gjennomsnittspris-sensorer. Den andre verdien vises som attributt. Median er mer motstandsdyktig mot ekstremverdier, mens aritmetisk gjennomsnitt representerer tradisjonelt gjennomsnitt. Standard: Median"
},
"submit": "Videre til trinn 2"
},
"display_settings": {
"title": "💱 Valutavisningsinnstillinger",
"description": "_{step_progress}_\n\n**Konfigurer hvordan strømpriser vises - i basisvaluta (€, kr) eller underenhet (ct, øre).**\n\n---",
"data": {
"currency_display_mode": "Visningsmodus"
},
"data_description": {
"currency_display_mode": "Velg hvordan priser vises:\n\n• **Basisvaluta** (€/kWh, kr/kWh): Desimalverdier (f.eks. 0,25 €/kWh) - forskjeller synlige fra 3.-4. desimalplass\n• **Underenhet** (ct/kWh, øre/kWh): Større verdier (f.eks. 25,00 ct/kWh) - forskjeller allerede synlige fra 1. desimalplass\n\nStandard avhenger av valutaen din:\n• EUR → Underenhet (cent) - tysk/nederlandsk preferanse\n• NOK/SEK/DKK → Basisvaluta (kroner) - skandinavisk preferanse\n• USD/GBP → Basisvaluta\n\n**💡 Tips:** Ved valg av underenhet kan du aktivere den ekstra sensoren \"Nåværende strømpris (Energi-dashboard)\" (deaktivert som standard)."
},
"submit": "Videre til trinn 3"
},
"current_interval_price_rating": {
"title": "📊 Prisvurderings-terskler",
"description": "_{step_progress}_\n\n**Konfigurer terskler for prisvurderingsnivåer (lav/normal/høy) basert på sammenligning med etterfølgende 24-timers gjennomsnitt.**\n\n---",
"sections": {
"price_rating_thresholds": {
"name": "Prisvurderings-terskler",
"description": "Definer prisvurderingsnivåer.",
"data": {
"price_rating_threshold_low": "Lav-terskel",
"price_rating_threshold_high": "Høy-terskel"
},
"data_description": {
"price_rating_threshold_low": "Prosentverdi for hvor mye gjeldende pris må være under det etterfølgende 24-timers gjennomsnittet for å kvalifisere som 'lav' vurdering. Eksempel: 5 betyr minst 5% under gjennomsnitt. Sensorer med denne vurderingen indikerer gunstige tidsvinduer. Standard: 5%",
"price_rating_threshold_high": "Prosentverdi for hvor mye gjeldende pris må være over det etterfølgende 24-timers gjennomsnittet for å kvalifisere som 'høy' vurdering. Eksempel: 10 betyr minst 10% over gjennomsnitt. Sensorer med denne vurderingen advarer om dyre tidsvinduer. Standard: 10%"
}
}
},
"submit": "Fortsett →"
},
"best_price": {
"title": "💚 Beste Prisperiode Innstillinger",
"description": "_{step_progress}_\n\nKonfigurer innstillinger for **Beste Prisperiode** binærsensor. Denne sensoren er aktiv i perioder med de laveste strømprisene.\n\n---",
"sections": {
"period_settings": {
"name": "Periodeinnstillinger",
"description": "Konfigurer periodelengde og prisnivåbegrensninger.",
"data": {
"best_price_min_period_length": "Minimum periodelengde",
"best_price_max_level": "Prisnivåfilter",
"best_price_max_level_gap_count": "Gaptoleranse"
},
"data_description": {
"best_price_min_period_length": "Minimum varighet for at en periode skal regnes som 'beste pris'. Lengre perioder er mer praktiske for å kjøre apparater som oppvaskmaskiner eller varmepumper. Beste pris-perioder krever minimum 60 minutter (sammenlignet med 30 minutter for topppris-advarsler) fordi de skal gi meningsfulle tidsvinduer for forbruksplanlegging, ikke bare kortvarige muligheter.",
"best_price_max_level": "Vis kun beste pris-perioder hvis de inneholder intervaller med prisnivåer ≤ valgt verdi. For eksempel: å velge '**Billig**' betyr at perioden må ha minst étt '**Veldig billig**' eller '**Billig**' intervall. Dette sikrer at 'beste pris'-perioder ikke bare er relativt billige for dagen, men faktisk billige i absolutte tall. Velg '**Alle**' for å vise beste priser uavhengig av deres absolutte prisnivå.",
"best_price_max_level_gap_count": "Maksimalt antall påfølgende intervaller som kan avvike med nøyaktig étt nivåtrinn fra det nødvendige nivået. For eksempel: med '**Billig**' filter og gapantall 1, aksepteres sekvensen '**Billig**, **Billig**, **Normal**, **Billig**' (**Normal** er étt trinn over **Billig**). Dette forhindrer at perioder blir delt opp av tilfeldige nivåavvik. **Merk:** Gaptoleranse krever perioder ≥90 minutter (6 intervaller) for å oppdage avvik effektivt. Standard: 0 (streng filtrering, ingen toleranse)."
}
},
"flexibility_settings": {
"name": "Fleksibilitetsinnstillinger",
"description": "Konfigurer prissammenligningsgrenser og filtrering.",
"data": {
"best_price_flex": "Fleksibilitet",
"best_price_min_distance_from_avg": "Minimumsavstand"
},
"data_description": {
"best_price_flex": "Maksimalt over den daglige minimumsprisen der intervaller fortsatt kvalifiserer som 'beste pris'. Anbefalt: 15-20 med lemping aktivert (standard), eller 25-35 uten lemping. Maksimum: 50 (hard grense for pålitelig periodegjenkjenning).",
"best_price_min_distance_from_avg": "Sikrer at perioder er betydelig billigere enn daglig gjennomsnitt, ikke bare marginalt under det. Dette filtrerer støy og forhindrer at litt-under-gjennomsnittet perioder markeres som 'beste pris' på dager med flate priser. Høyere verdier = strengere filtrering (bare virkelig billige perioder kvalifiserer). Standard: 5 betyr at perioder må være minst 5% under daglig gjennomsnitt."
}
},
"relaxation_and_target_periods": {
"name": "Lemping & Målperioder",
"description": "Konfigurer automatisk filterlemping og målperiodeantall. Aktiver 'Oppnå minimumsantall' for å aktivere lemping.",
"data": {
"enable_min_periods_best": "Oppnå minimumsantall",
"min_periods_best": "Minimumsperioder",
"relaxation_attempts_best": "Lempingsforsøk"
},
"data_description": {
"enable_min_periods_best": "Når aktivert vil filtre gradvis bli lempet hvis ikke nok perioder blir funnet. Dette forsøker å nå det ønskede minimumsantall perioder, som kan inkludere mindre optimale tidsvinduer som beste pris-perioder.",
"min_periods_best": "Minimumsantall beste pris-perioder å sikte på per dag. Filtre vil bli lempet steg for steg for å forsøke å oppnå dette antallet. Kun aktiv når 'Oppnå minimumsantall' er aktivert. Standard: 1",
"relaxation_attempts_best": "Hvor mange fleksnivåer (forsøk) å prøve før man gir opp. Hvert forsøk kjører alle filterkombinasjoner på det nye fleksnivået. Flere forsøk øker sjansen for å finne flere perioder på bekostning av lengre behandlingstid."
}
}
},
"submit": "Fortsett →"
},
"peak_price": {
"title": "🔴 Toppprisperiode Innstillinger",
"description": "_{step_progress}_\n\nKonfigurer innstillinger for **Toppprisperiode** binærsensor. Denne sensoren er aktiv i perioder med de høyeste strømprisene.\n\n---",
"sections": {
"period_settings": {
"name": "Periodeinnstillinger",
"description": "Konfigurer periodelengde og prisnivåbegrensninger.",
"data": {
"peak_price_min_period_length": "Minimum periodelengde",
"peak_price_min_level": "Prisnivåfilter",
"peak_price_max_level_gap_count": "Gaptoleranse"
},
"data_description": {
"peak_price_min_period_length": "Minimum varighet for at en periode skal regnes som 'topppris'. Topppris-advarsler er tillatt for kortere perioder (minimum 30 minutter sammenlignet med 60 minutter for beste pris) fordi korte dyre topper er verdt å advare om, selv om de er for korte for forbruksplanlegging.",
"peak_price_min_level": "Vis kun topprisperioder hvis de inneholder intervaller med prisnivåer ≥ valgt verdi. For eksempel: å velge '**Dyr**' betyr at perioden må ha minst étt '**Dyr**' eller '**Veldig dyr**' intervall. Dette sikrer at 'topppris'-perioder ikke bare er relativt dyre for dagen, men faktisk dyre i absolutte tall. Velg '**Alle**' for å vise topppriser uavhengig av deres absolutte prisnivå.",
"peak_price_max_level_gap_count": "Maksimalt antall påfølgende intervaller som kan avvike med nøyaktig étt nivåtrinn fra det nødvendige nivået. For eksempel: med '**Dyr**' filter og gapantall 1, aksepteres sekvensen '**Dyr**, **Dyr**, **Normal**, **Dyr**' (**Normal** er étt trinn under **Dyr**). Dette forhindrer at perioder blir delt opp av tilfeldige nivåavvik. **Merk:** Gaptoleranse krever perioder ≥90 minutter (6 intervaller) for å oppdage avvik effektivt. Standard: 0 (streng filtrering, ingen toleranse)."
}
},
"flexibility_settings": {
"name": "Fleksibilitetsinnstillinger",
"description": "Konfigurer prissammenligningskriterier og filtrering.",
"data": {
"peak_price_flex": "Fleksibilitet",
"peak_price_min_distance_from_avg": "Minimumsavstand"
},
"data_description": {
"peak_price_flex": "Maksimalt under den daglige maksimumsprisen der intervaller fortsatt kvalifiserer som 'topppris'. Anbefaling: -15 til -20 med lemping aktivert (standard), eller -25 til -35 uten lemping. Maksimum: -50 (hard grense for pålitelig periodegjenkjenning). Merk: Negative verdier angir avstand under maksimum.",
"peak_price_min_distance_from_avg": "Sikrer at perioder er betydelig dyrere enn daglig gjennomsnitt, ikke bare marginalt over det. Dette filtrerer støy og forhindrer at litt-over-gjennomsnittet perioder markeres som 'topppris' på dager med flate priser. Høyere verdier = strengere filtrering (bare virkelig dyre perioder kvalifiserer). Standard: 5 betyr at perioder må være minst 5% over daglig gjennomsnitt."
}
},
"relaxation_and_target_periods": {
"name": "Lemping & målperioder",
"description": "Konfigurer automatisk filterlempelse og målperioder. Aktiver 'Prøv å oppnå minimum antall perioder' for å aktivere lemping.",
"data": {
"enable_min_periods_peak": "Prøv å oppnå minimum antall perioder",
"min_periods_peak": "Minimum antall perioder",
"relaxation_attempts_peak": "Antall lempingsforsøk"
},
"data_description": {
"enable_min_periods_peak": "Når aktivert vil filtrene gradvis bli lempeligere hvis det ikke blir funnet nok perioder. Dette forsøker å nå ønsket minimum antall perioder for å sikre at du blir advart om dyre perioder selv på dager med uvanlige prismønstre.",
"min_periods_peak": "Minimum antall topp-pris-perioder å sikte mot per dag. Filtre vil bli lempet trinn for trinn for å prøve å oppnå dette antallet. Kun aktiv når 'Prøv å oppnå minimum antall perioder' er aktivert. Standard: 1",
"relaxation_attempts_peak": "Hvor mange fleksnivåer (forsøk) som testes før vi gir opp. Hvert forsøk kjører alle filterkombinasjoner på det nye fleksnivået. Flere forsøk øker sjansen for ekstra toppprisperioder, men tar litt lengre tid."
}
}
},
"submit": "Fortsett →"
},
"price_trend": {
"title": "📈 Pristrendterskler",
"description": "_{step_progress}_\n\n**Konfigurer terskler for pristrendsensorer. Disse sensorene sammenligner nåværende pris med gjennomsnittet av de neste N timene for å bestemme om prisene stiger, faller eller er stabile.**\n\n---",
"sections": {
"price_trend_thresholds": {
"name": "Pristrendterskler",
"description": "Definer pristrendnivåer.",
"data": {
"price_trend_threshold_rising": "Stigende terskel",
"price_trend_threshold_falling": "Fallende terskel"
},
"data_description": {
"price_trend_threshold_rising": "Prosentverdi for gjennomsnittlig prisøkning per time som kvalifiserer trenden som 'stigende'. Eksempel: 5 betyr minst 5% økning per time. Sensorer med denne trenden indikerer at prisene vil stige raskt. Standard: 5%",
"price_trend_threshold_falling": "Prosentverdi for gjennomsnittlig prisnedgang per time som kvalifiserer trenden som 'synkende'. Eksempel: -5 betyr minst 5% nedgang per time. Sensorer med denne trenden indikerer at prisene vil synke raskt. Standard: -5%"
}
}
},
"submit": "Fortsett →"
},
"volatility": {
"title": "💨 Volatilitets-terskler",
"description": "_{step_progress}_\n\n**Konfigurer terskler for volatilitetsklassifisering. Volatilitet måler relativ prisvariation ved hjelp av variasjonskoeffisienten (VK = standardavvik / gjennomsnitt × 100%). Disse tersklene er prosentverdier som fungerer på tvers av alle prisnivåer.**\n\nBrukes av:\n• Volatilitetssensorer (klassifisering)\n• Trendsensorer (adaptiv terskel justering: <moderat = mer følsom, ≥høy = mindre følsom)\n\n---",
"sections": {
"volatility_thresholds": {
"name": "Volatilitetsterskler",
"description": "Definer volatilitetsklassifiseringsnivåer.",
"data": {
"volatility_threshold_moderate": "Moderat terskel",
"volatility_threshold_high": "Høy terskel",
"volatility_threshold_very_high": "Veldig høy terskel"
},
"data_description": {
"volatility_threshold_moderate": "Grenseverdi for standardavvik (% av gjennomsnitt) for å klassifisere prisvariasjonen som 'moderat'. Eksempel: 10 betyr standardavvik ≥ 10% av gjennomsnitt. Dette indikerer økt prisustabilitet. Standard: 10%",
"volatility_threshold_high": "Grenseverdi for standardavvik (% av gjennomsnitt) for å klassifisere prisvariasjonen som 'høy'. Eksempel: 20 betyr standardavvik ≥ 20% av gjennomsnitt. Dette indikerer betydelige prissvingninger. Standard: 20%",
"volatility_threshold_very_high": "Grenseverdi for standardavvik (% av gjennomsnitt) for å klassifisere prisvariasjonen som 'veldig høy'. Eksempel: 30 betyr standardavvik ≥ 30% av gjennomsnitt. Dette indikerer ekstrem prisustabilitet. Standard: 30%"
}
}
},
"submit": "Fortsett →"
},
"chart_data_export": {
"title": "📊 Diagram-dataeksport Sensor",
"description": "_{step_progress}_\n\nDiagram-dataeksport-sensoren gir prisdata som sensorattributter.\n\n⚠ **Merk:** Denne sensoren er en legacy-funksjon for kompatibilitet med eldre verktøy.\n\n**Anbefalt for nye oppsett:** Bruk `tibber_prices.get_chartdata` **tjenesten direkte** - den er mer fleksibel, effektiv og den moderne Home Assistant-tilnærmingen.\n\n**Når denne sensoren gir mening:**\n\n✅ Dashboardverktøyet ditt kan **kun** lese attributter (ingen tjenestekall)\n✅ Du trenger statiske data som oppdateres automatisk\n❌ **Ikke for automatiseringer:** Bruk `tibber_prices.get_chartdata` direkte der - mer fleksibel og effektiv!\n\n---\n\n**Aktiver sensoren:**\n\n1. Åpne **Innstillinger → Enheter og tjenester → Tibber Prices**\n2. Velg ditt hjem → Finn **'Diagramdataeksport'** (Diagnostikk-seksjonen)\n3. **Aktiver sensoren** (deaktivert som standard)\n\n**Konfigurasjon (valgfritt):**\n\nStandardinnstillinger fungerer umiddelbart (i dag+i morgen, 15-minutters intervaller, bare priser).\n\nFor tilpasning, legg til i **`configuration.yaml`**:\n\n```yaml\ntibber_prices:\n chart_export:\n day:\n - today\n - tomorrow\n include_level: true\n include_rating_level: true\n```\n\n**Alle parametere:** Se `tibber_prices.get_chartdata` tjenestens dokumentasjon",
"submit": "Fullfør ✓"
}
},
"error": {
"auth": "Tibber-tilgangstokenet er ugyldig.",
"connection": "Kunne ikke koble til Tibber. Vennligst sjekk internettforbindelsen din.",
"unknown": "En uventet feil oppstod. Vennligst sjekk loggene for detaljer.",
"cannot_connect": "Kunne ikke koble til",
"invalid_access_token": "Ugyldig tilgangstoken",
"different_home": "Tilgangstokenet er ikke gyldig for hjem-ID-en denne integrasjonen er konfigurert for.",
"invalid_flex": "Fleksibilitetsprosent må være mellom -50% og +50%",
"invalid_best_price_distance": "Avstandsprosent må være mellom -50% og 0% (negativ = under gjennomsnitt)",
"invalid_peak_price_distance": "Avstandsprosent må være mellom 0% og 50% (positiv = over gjennomsnitt)",
"invalid_min_periods": "Minimumsantall perioder må være mellom 1 og 10",
"invalid_period_length": "Periodelengden må være minst 15 minutter (multipler av 15).",
"invalid_gap_count": "Gaptoleranse må være mellom 0 og 8",
"invalid_relaxation_attempts": "Lempingsforsøk må være mellom 1 og 12",
"invalid_price_rating_low": "Lav prisvurderingsgrense må være mellom -50% og -5%",
"invalid_price_rating_high": "Høy prisvurderingsgrense må være mellom 5% og 50%",
"invalid_price_rating_thresholds": "Lav grense må være mindre enn høy grense",
"invalid_volatility_threshold_moderate": "Moderat volatilitetsgrense må være mellom 5% og 25%",
"invalid_volatility_threshold_high": "Høy volatilitetsgrense må være mellom 20% og 40%",
"invalid_volatility_threshold_very_high": "Svært høy volatilitetsgrense må være mellom 35% og 80%",
"invalid_volatility_thresholds": "Grensene må være i stigende rekkefølge: moderat < høy < svært høy",
"invalid_price_trend_rising": "Stigende trendgrense må være mellom 1% og 50%",
"invalid_price_trend_falling": "Fallende trendgrense må være mellom -50% og -1%"
},
"abort": {
"entry_not_found": "Tibber-konfigurasjonsoppføring ikke funnet."
}
},
"entity": {
"sensor": {
"current_interval_price": {
"name": "Nåværende strømpris"
},
"current_interval_price_base": {
"name": "Nåværende strømpris (Energi-dashboard)"
},
"next_interval_price": {
"name": "Neste strømpris"
},
"previous_interval_price": {
"name": "Forrige strømpris"
},
"current_hour_average_price": {
"name": "⌀ Timepris nåværende"
},
"next_hour_average_price": {
"name": "⌀ Timepris neste"
},
"current_interval_price_level": {
"name": "Nåværende prisnivå",
"state": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"next_interval_price_level": {
"name": "Neste prisnivå",
"state": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"previous_interval_price_level": {
"name": "Forrige prisnivå",
"state": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"current_hour_price_level": {
"name": "Nåværende timepris nivå",
"state": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"next_hour_price_level": {
"name": "Neste timepris nivå",
"state": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"lowest_price_today": {
"name": "Dagens laveste pris"
},
"highest_price_today": {
"name": "Dagens høyeste pris"
},
"average_price_today": {
"name": "⌀ Pris i dag"
},
"lowest_price_tomorrow": {
"name": "Morgendagens laveste pris"
},
"highest_price_tomorrow": {
"name": "Morgendagens høyeste pris"
},
"average_price_tomorrow": {
"name": "⌀ Pris i morgen"
},
"yesterday_price_level": {
"name": "Prisnivå i går",
"state": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"today_price_level": {
"name": "Prisnivå i dag",
"state": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"tomorrow_price_level": {
"name": "Prisnivå i morgen",
"state": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"yesterday_price_rating": {
"name": "Prisvurdering i går",
"state": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"today_price_rating": {
"name": "Prisvurdering i dag",
"state": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"tomorrow_price_rating": {
"name": "Prisvurdering i morgen",
"state": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"trailing_price_average": {
"name": "⌀ Pris glidende 24t"
},
"leading_price_average": {
"name": "⌀ Pris fremtidig 24t"
},
"trailing_price_min": {
"name": "Glidende 24t minimumspris"
},
"trailing_price_max": {
"name": "Glidende 24t maksimumspris"
},
"leading_price_min": {
"name": "Fremtidig 24t minimumspris"
},
"leading_price_max": {
"name": "Fremtidig 24t maksimumspris"
},
"current_interval_price_rating": {
"name": "Nåværende prisvurdering",
"state": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"next_interval_price_rating": {
"name": "Neste prisvurdering",
"state": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"previous_interval_price_rating": {
"name": "Forrige prisvurdering",
"state": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"current_hour_price_rating": {
"name": "Nåværende timeprisvurdering",
"state": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"next_hour_price_rating": {
"name": "Neste timeprisvurdering",
"state": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"next_avg_1h": {
"name": "⌀ Pris neste 1t"
},
"next_avg_2h": {
"name": "⌀ Pris neste 2t"
},
"next_avg_3h": {
"name": "⌀ Pris neste 3t"
},
"next_avg_4h": {
"name": "⌀ Pris neste 4t"
},
"next_avg_5h": {
"name": "⌀ Pris neste 5t"
},
"next_avg_6h": {
"name": "⌀ Pris neste 6t"
},
"next_avg_8h": {
"name": "⌀ Pris neste 8t"
},
"next_avg_12h": {
"name": "⌀ Pris neste 12t"
},
"price_trend_1h": {
"name": "Pristrend (1t)",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"price_trend_2h": {
"name": "Pristrend (2t)",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"price_trend_3h": {
"name": "Pristrend (3t)",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"price_trend_4h": {
"name": "Pristrend (4t)",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"price_trend_5h": {
"name": "Pristrend (5t)",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"price_trend_6h": {
"name": "Pristrend (6t)",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"price_trend_8h": {
"name": "Pristrend (8t)",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"price_trend_12h": {
"name": "Pristrend (12t)",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"current_price_trend": {
"name": "Nåværende pristrend",
"state": {
"rising": "Stigende",
"falling": "Fallende",
"stable": "Stabil"
}
},
"next_price_trend_change": {
"name": "Neste trendendring"
},
"daily_rating": {
"name": "Daglig prisvurdering"
},
"monthly_rating": {
"name": "Månedlig prisvurdering"
},
"data_lifecycle_status": {
"name": "Datalivssyklus-status",
"state": {
"cached": "Hurtigbufret",
"fresh": "Fersk",
"refreshing": "Oppdaterer",
"searching_tomorrow": "Søker morgendagens data",
"turnover_pending": "Midnattskifte venter",
"error": "Feil"
}
},
"today_volatility": {
"name": "Volatilitet i dag",
"state": {
"low": "Lav",
"moderate": "Moderat",
"high": "Høy",
"very_high": "Svært Høy"
}
},
"tomorrow_volatility": {
"name": "Volatilitet i morgen",
"state": {
"low": "Lav",
"moderate": "Moderat",
"high": "Høy",
"very_high": "Svært Høy"
}
},
"next_24h_volatility": {
"name": "Volatilitet neste 24t",
"state": {
"low": "Lav",
"moderate": "Moderat",
"high": "Høy",
"very_high": "Svært Høy"
}
},
"today_tomorrow_volatility": {
"name": "Volatilitet i dag+i morgen",
"state": {
"low": "Lav",
"moderate": "Moderat",
"high": "Høy",
"very_high": "Svært Høy"
}
},
"best_price_end_time": {
"name": "Beste pris slutter"
},
"best_price_period_duration": {
"name": "Beste pris varighet"
},
"best_price_remaining_minutes": {
"name": "Beste pris gjenværende tid"
},
"best_price_progress": {
"name": "Beste pris fremgang"
},
"best_price_next_start_time": {
"name": "Beste pris starter"
},
"best_price_next_in_minutes": {
"name": "Beste pris starter om"
},
"peak_price_end_time": {
"name": "Topppris slutter"
},
"peak_price_period_duration": {
"name": "Topppris varighet"
},
"peak_price_remaining_minutes": {
"name": "Topppris gjenværende tid"
},
"peak_price_progress": {
"name": "Topppris fremgang"
},
"peak_price_next_start_time": {
"name": "Topppris starter"
},
"peak_price_next_in_minutes": {
"name": "Topppris starter om"
},
"home_type": {
"name": "Boligtype",
"state": {
"apartment": "Leilighet",
"rowhouse": "Rekkehus",
"house": "Hus",
"cottage": "Hytte"
}
},
"home_size": {
"name": "Boligareal"
},
"main_fuse_size": {
"name": "Hovedsikring"
},
"number_of_residents": {
"name": "Antall beboere"
},
"primary_heating_source": {
"name": "Primær varmekilde",
"state": {
"air2air_heatpump": "Luft-til-luft-varmepumpe",
"air2water_heatpump": "Luft-til-vann-varmepumpe",
"boiler": "Varmtvannsbereder",
"central_heating": "Sentralvarme",
"district_heating": "Fjernvarme",
"district": "Fjernvarme",
"electric_boiler": "Elektrisk varmtvannsbereder",
"electricity": "Elektrisitet",
"floor": "Gulvvarme",
"gas": "Gass",
"ground_heatpump": "Jordvarmepumpe",
"ground": "Jordvarmepumpe",
"oil": "Olje",
"other": "Annet",
"waste": "Spillvarme"
}
},
"grid_company": {
"name": "Nettselskap"
},
"grid_area_code": {
"name": "Nettområdekode"
},
"price_area_code": {
"name": "Prisområdekode"
},
"consumption_ean": {
"name": "Forbruks-EAN"
},
"production_ean": {
"name": "Produksjons-EAN"
},
"energy_tax_type": {
"name": "Energiavgiftstype"
},
"vat_type": {
"name": "MVA-type"
},
"estimated_annual_consumption": {
"name": "Estimert årlig forbruk"
},
"subscription_status": {
"name": "Abonnementsstatus",
"state": {
"running": "Aktiv",
"ended": "Avsluttet",
"pending": "Venter",
"unknown": "Ukjent"
}
},
"chart_data_export": {
"name": "Diagramdataeksport",
"state": {
"pending": "Venter",
"ready": "Klar",
"error": "Feil"
}
},
"chart_metadata": {
"name": "Diagrammetadata",
"state": {
"pending": "Venter",
"ready": "Klar",
"error": "Feil"
}
}
},
"binary_sensor": {
"peak_price_period": {
"name": "Toppris-periode"
},
"best_price_period": {
"name": "Lavpris-periode"
},
"connection": {
"name": "Tibber API-tilkobling"
},
"tomorrow_data_available": {
"name": "Morgendagens data tilgjengelig"
},
"has_ventilation_system": {
"name": "Har ventilasjonsanlegg"
},
"realtime_consumption_enabled": {
"name": "Sanntidsforbruk aktivert"
}
}
},
"issues": {
"new_homes_available": {
"title": "Nye Tibber-hjem oppdaget",
"description": "Vi oppdaget {count} nytt/nye hjem på din Tibber-konto: {homes}. Du kan legge dem til i Home Assistant gjennom Tibber-integrasjonskonfigurasjonen."
},
"homes_removed": {
"title": "Tibber-hjem fjernet",
"description": "Vi oppdaget at {count} hjem har blitt fjernet fra din Tibber-konto: {homes}. Vennligst gjennomgå din Tibber-integrasjonskonfigurasjon."
},
"tomorrow_data_missing": {
"title": "Prisdata for i morgen mangler for {home_name}",
"description": "Strømprisdata for i morgen er fortsatt utilgjengelig etter {warning_hour}:00. Dette er uvanlig, da Tibber vanligvis publiserer morgendagens priser på ettermiddagen (rundt 13:00-14:00 CET).\n\nMulige årsaker:\n- Tibber har ikke publisert morgendagens priser ennå\n- Midlertidige API-problemer\n- Strømleverandøren din har ikke sendt inn priser til Tibber\n\nDette problemet vil løse seg automatisk når morgendagens data blir tilgjengelig. Hvis dette vedvarer etter 20:00, vennligst sjekk Tibber-appen eller kontakt Tibber-support."
},
"rate_limit_exceeded": {
"title": "API-hastighetsbegrensning overskredet for {home_name}",
"description": "Tibber-APIet har hastighetsbegrenset denne integrasjonen etter {error_count} påfølgende feil. Dette betyr at forespørsler blir gjort for hyppig.\n\nIntegrasjonen vil automatisk prøve på nytt med økende forsinkelser. Dette problemet vil løse seg når hastighetsbegrensningen utløper.\n\nHvis dette vedvarer i flere timer, vurder:\n- Å sjekke om flere Home Assistant-instanser bruker samme API-token\n- Å verifisere at ingen andre applikasjoner bruker Tibber-API-tokenet ditt mye\n- Å redusere oppdateringsfrekvensen hvis du har tilpasset den"
},
"home_not_found": {
"title": "Hjemmet {home_name} ble ikke funnet i Tibber-kontoen",
"description": "Hjemmet konfigurert i denne integrasjonen (oppførings-ID: {entry_id}) er ikke lenger tilgjengelig i Tibber-kontoen din. Dette skjer vanligvis når:\n- Hjemmet ble slettet fra Tibber-kontoen din\n- Hjemmet ble flyttet til en annen Tibber-konto\n- Tilgang til dette hjemmet ble tilbakekalt\n\nVennligst fjern denne integrasjonsoppføringen og legg den til på nytt hvis hjemmet fortsatt skal overvåkes. For å fjerne denne oppføringen, gå til Innstillinger → Enheter og tjenester → Tibber Prices og slett {home_name}-konfigurasjonen."
}
},
"services": {
"get_price": {
"name": "Hent prisdata",
"description": "Hent prisdata for et spesifikt tidsrom med automatisk ruting. Utviklings- og testtjeneste for price_info_for_range API-funksjonen. Bruker automatisk PRICE_INFO, PRICE_INFO_RANGE eller begge basert på tidsromgrensen.",
"fields": {
"entry_id": {
"name": "Oppførings-ID",
"description": "Konfigurasjonsoppførings-IDen for Tibber-integrasjonen."
},
"start_time": {
"name": "Starttid",
"description": "Start av tidsrommet (inklusiv, tidssonetilpasset)."
},
"end_time": {
"name": "Sluttid",
"description": "Slutt av tidsrommet (eksklusiv, tidssonetilpasset)."
}
}
},
"get_apexcharts_yaml": {
"name": "Hent ApexCharts-kort YAML",
"description": "⚠️ VIKTIG: Denne tjenesten genererer en GRUNNLEGGENDE EKSEMPEL-konfigurasjon for ApexCharts-kort som et utgangspunkt. Det er IKKE en komplett løsning for alle ApexCharts-funksjoner. Denne integrasjonen er primært en DATALEVERANDØR. Den genererte YAML-en demonstrerer hvordan du bruker `get_chartdata`-tjenesten for å hente prisdata. På grunn av den segmenterte naturen til våre data (forskjellige tidsperioder per serie) og bruken av Home Assistants service-API i stedet for entitetsattributter, er mange avanserte ApexCharts-funksjoner (som in_header, visse transformasjoner) ikke kompatible eller krever manuell tilpasning. Du er velkommen til å tilpasse den genererte YAML for dine spesifikke behov, men vær oppmerksom på at omfattende ApexCharts-konfigurasjonsstøtte er utenfor rammen av denne integrasjonen. Bidrag fra fellesskapet med forbedrede konfigurasjoner er alltid velkomne - hvis du finner en bedre oppsett som fungerer, vennligst del det slik at alle kan dra nytte av det! For direkte datatilgang for å bygge dine egne diagrammer, bruk `get_chartdata`-tjenesten i stedet.",
"fields": {
"entry_id": {
"name": "Oppførings-ID",
"description": "Konfigureringsoppførings-IDen for Tibber-integrasjonen."
},
"day": {
"name": "Dag",
"description": "Hvilken dag som skal visualiseres (standard: Rullerende vindu). Faste dagalternativer (I går/I dag/I morgen) viser 24t-spenn uten ekstra avhengigheter. Dynamiske alternativer krever config-template-card: Rullerende vindu lager et fast 48t-vindu som automatisk skifter mellom i går+i dag og i dag+i morgen basert på datatilgjengelighet. Rullerende vindu (Auto-Zoom) oppfører seg likt, men zoomer i tillegg automatisk inn (2t tilbakeblikk + gjenværende tid til midnatt, graph_span reduseres hvert 15. minutt)."
},
"level_type": {
"name": "Nivåtype",
"description": "Velg hvilken prisnivåklassifisering som skal visualiseres: 'rating_level' (lav/normal/høy basert på dine konfigurerte terskelverdier) eller 'level' (Tibber API-nivåer: veldig billig/billig/normal/dyr/veldig dyr)."
},
"highlight_best_price": {
"name": "Fremhev beste prisperioder",
"description": "Legg til et halvgjennomsiktig grønt overlegg for å fremheve de beste prisperiodene i diagrammet. Dette gjør det enkelt å visuelt identifisere de optimale tidene for energiforbruk."
}
}
},
"get_chartdata": {
"name": "Hent diagramdata",
"description": "Returnerer prisdata i et enkelt diagramvennlig format kompatibelt med Tibber Core-integrasjonens utdatastruktur. Perfekt for bruk med populære diagramkort som ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card eller den innebygde History Graph Card. Feltnavn og datastruktur kan tilpasses for å matche diagrammets krav.",
"sections": {
"general": {
"name": "Generelt",
"description": "Basisalternativer for henting av diagramdata."
},
"selection": {
"name": "Valg",
"description": "Velg hvilke data som skal inkluderes i utdataene."
},
"filters": {
"name": "Filtre",
"description": "Filtrer data basert på prisnivåer, prisvurderinger eller spesielle perioder."
},
"transformation": {
"name": "Transformer data",
"description": "Transformer datautdataene for bedre diagramkompatibilitet."
},
"format": {
"name": "Format",
"description": "Tilpass utdataformatet."
},
"arrays_of_arrays": {
"name": "Avanserte utdatainnstillinger: Array av arrays",
"description": "Innstillinger for utdataformat ved bruk av array av arrays."
},
"arrays_of_objects": {
"name": "Avanserte utdatainnstillinger: Array av objekter",
"description": "Innstillinger for utdataformat ved bruk av array av objekter."
}
},
"fields": {
"entry_id": {
"name": "Oppførings-ID",
"description": "Konfig-oppførings-ID for Tibber-integrasjonen."
},
"day": {
"name": "Dag",
"description": "Hvilken dag(er) skal det hentes priser for. Du kan velge flere dager. Hvis ikke angitt, returneres et rullerende 2-dagers vindu: i dag+i morgen (når morgendagens data er tilgjengelig) eller i går+i dag (når morgendagens data ikke er tilgjengelig ennå). Dette gir kontinuerlig diagramvisning uten hull."
},
"resolution": {
"name": "Oppløsning",
"description": "Tidsoppløsning for de returnerte dataene. Alternativer: 'interval' (standard, 15-minutters intervaller, 96 datapunkter per dag), 'hourly' (timegjennomsnitt, 24 datapunkter per dag)."
},
"output_format": {
"name": "Utdataformat",
"description": "Utdataformat for de returnerte dataene. Alternativer: 'array_of_objects' (standard, array av objekter med tilpassbare feltnavn), 'array_of_arrays' (array av [tidsstempel, pris]-arrays med avsluttende null-punkt for stepline-diagrammer)."
},
"array_fields": {
"name": "Array-felt",
"description": "Definer hvilke felt som skal inkluderes. Bruk feltnavn i krøllparenteser, adskilt med komma. Tilgjengelige felt: start_time, price_per_kwh, level, rating_level, average. Felt vil automatisk aktiveres selv om include_*-alternativene ikke er satt. La stå tom for standard (kun tidsstempel og pris)."
},
"subunit_currency": {
"name": "Underenhet valuta",
"description": "Returner priser i underenhet valutaenheter (øre for NOK/SEK, cent for EUR) i stedet for basisvalutaenheter. Deaktivert som standard."
},
"round_decimals": {
"name": "Rund desimaler",
"description": "Antall desimalplasser å runde priser til (0-10). Hvis ikke angitt, brukes standard presisjon (4 desimaler for basisvaluta, 2 for underenhet valuta)."
},
"include_level": {
"name": "Inkluder prisnivå",
"description": "Inkluder Tibber-prisnivåfeltet (veldig billig/billig/normal/dyr/veldig dyr) i hvert datapunkt."
},
"include_rating_level": {
"name": "Inkluder prisvurdering",
"description": "Inkluder det beregnede prisvurderingsfeltet (lav/normal/høy) basert på dine konfigurerte terskler i hvert datapunkt."
},
"include_average": {
"name": "Inkluder gjennomsnitt",
"description": "Inkluder daglig gjennomsnittspris i hvert datapunkt for sammenligning."
},
"level_filter": {
"name": "Prisnivåfilter",
"description": "Filtrer intervaller for å bare inkludere spesifikke Tibber-prisnivåer (veldig billig/billig/normal/dyr/veldig dyr). Hvis ikke angitt, inkluderes alle nivåer."
},
"rating_level_filter": {
"name": "Prisvurderingsfilter",
"description": "Filtrer intervaller for å inkludere bare spesifikke prisvurderinger (lav/normal/høy). Hvis ikke spesifisert, inkluderes alle vurderinger."
},
"period_filter": {
"name": "Periodefilter",
"description": "Filtrer intervaller for å inkludere kun de innenfor Beste pris- eller Topp pris-perioder. Alternativer: 'best_price' (kun intervaller i Beste pris-perioder), 'peak_price' (kun intervaller i Topp pris-perioder). Hvis ikke spesifisert, inkluderes alle intervaller. Bruker forhåndsberegnede periodedata fra binære sensorer."
},
"insert_nulls": {
"name": "Sett inn NULL-verdier",
"description": "Kontroller innsetting av NULL-verdier for filtrerte data. 'none' (standard): Ingen NULL-verdier, bare matchende intervaller. 'segments': Legg til NULL-punkter ved segmentgrenser for rene hull i diagrammer (anbefalt for trinnlinjediagrammer). 'all': Sett inn NULL for alle tidsstempler der filteret ikke samsvarer (nyttig for kontinuerlig tidsserievisualisering)."
},
"connect_segments": {
"name": "Koble segmenter",
"description": "[KUN MED 'Sett inn NULL-verdier'] Når aktivert, legges tilkoblingspunkter til ved segmentgrenser for å visuelt koble ulike prisnivå-segmenter i trinnlinjediagrammer. Når prisen går NED, legges et punkt med lavere pris til på slutten av gjeldende segment. Når prisen går OPP, legges et holdepunkt til før hullet. Dette skaper jevne visuelle overganger mellom segmenter i stedet for brå hull."
},
"add_trailing_null": {
"name": "Legg til avsluttende null-punkt",
"description": "Legg til et siste datapunkt med nullverdier (unntatt tidsstempel) på slutten. Noen diagrambiblioteker trenger dette for å forhindre ekstrapolering/interpolering til visningsportens kant ved bruk av trinnlinje-rendering. La være deaktivert med mindre diagrammet ditt krever det."
},
"start_time_field": {
"name": "Starttid-feltnavn",
"description": "Egendefinert navn for starttid-feltet i utdata. Standard er 'start_time' hvis ikke angitt."
},
"end_time_field": {
"name": "Sluttid-feltnavn",
"description": "Egendefinert navn for sluttid-feltet i utdata. Standard er 'end_time' hvis ikke angitt. Brukes kun med period_filter."
},
"price_field": {
"name": "Prisfelt-navn",
"description": "Tilpasset navn for prisfeltet i utdata. Standard er 'price_per_kwh'."
},
"level_field": {
"name": "Prisnivåfelt-navn",
"description": "Tilpasset navn for prisnivåfeltet i utdata. Standard er 'level'. Brukes bare når include_level er aktivert."
},
"rating_level_field": {
"name": "Prisvurderingsfelt-navn",
"description": "Tilpasset navn for prisvurderingsfeltet i utdata. Standard er 'rating_level'. Brukes bare når include_rating_level er aktivert."
},
"average_field": {
"name": "Gjennomsnittsfelt-navn",
"description": "Tilpasset navn for gjennomsnittsfeltet i utdata. Standard er 'average'. Brukes bare når include_average er aktivert."
},
"metadata": {
"name": "Metadata",
"description": "Kontroller metadata-inkludering i svaret. 'include' (standard): Returnerer både diagramdata og metadata med prisstatistikk, valutainformasjon, Y-akse forslag og tidsperiode. 'only': Returnerer bare metadata uten å behandle diagramdata (raskt, nyttig for dynamisk Y-akse konfigurasjon). 'none': Returnerer bare diagramdata uten metadata."
},
"data_key": {
"name": "Datanøkkel",
"description": "Tilpasset navn for datanøkkelen på toppnivå i svaret. Standard er 'data' hvis ikke angitt."
}
}
},
"refresh_user_data": {
"name": "Oppdater brukerdata",
"description": "Tvinger en oppdatering av brukerdataene (hjem, profilinformasjon) fra Tibber API. Dette kan være nyttig etter å ha gjort endringer i Tibber-kontoen din eller ved feilsøking av tilkoblingsproblemer.",
"fields": {
"entry_id": {
"name": "Oppførings-ID",
"description": "Konfig-oppførings-ID for Tibber-integrasjonen."
}
}
}
},
"selector": {
"account_choice": {
"options": {
"new_token": "Legg til ny Tibber-konto med API-token"
}
},
"day": {
"options": {
"yesterday": "I går",
"today": "I dag",
"tomorrow": "I morgen",
"rolling_window": "Rullerende vindu",
"rolling_window_autozoom": "Rullerende vindu (Auto-Zoom)"
}
},
"resolution": {
"options": {
"interval": "Intervall (15 min)",
"hourly": "Hver time"
}
},
"output_format": {
"options": {
"array_of_objects": "Array av objekter",
"array_of_arrays": "Array av arrays"
}
},
"level_type": {
"options": {
"rating_level": "Vurderingsnivå (lav/normal/høy)",
"level": "Tibber-nivå (veldig billig til veldig dyr)"
}
},
"level_filter": {
"options": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"rating_level_filter": {
"options": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"insert_nulls": {
"options": {
"none": "Ingen",
"segments": "Segmenter",
"all": "Alle"
}
},
"period_filter": {
"options": {
"best_price": "Beste prisperioder",
"peak_price": "Topp prisperioder"
}
},
"metadata": {
"options": {
"include": "Inkluder (data + metadata)",
"only": "Kun metadata",
"none": "Ingen (kun data)"
}
},
"volatility": {
"options": {
"low": "Lav",
"moderate": "Moderat",
"high": "Høy",
"very_high": "Svært høy"
}
},
"current_interval_price_level": {
"options": {
"any": "Alle",
"very_cheap": "Svært billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Svært dyr"
}
},
"currency_display_mode": {
"options": {
"base": "Basisvaluta (€, kr)",
"subunit": "Underenhet valuta (ct, øre)"
}
},
"average_sensor_display": {
"options": {
"median": "Median",
"mean": "Aritmetisk gjennomsnitt"
}
}
},
"title": "Tibber Prisinformasjon & Vurderinger"
}