hass.tibber_prices/custom_components/tibber_prices/translations/nb.json
Julian Pawlowski 76dc488bb5 feat(sensors): add momentum-based trend detection with two new sensors
Added intelligent price trend analysis combining historical momentum
(weighted 1h lookback) with future outlook for more accurate trend
recognition. Introduced two complementary sensors for comprehensive
trend monitoring.

New sensors:
- current_price_trend: Shows active trend direction with duration
- next_price_trend_change: Predicts when trend will reverse

Momentum analysis (historical perspective):
- Weighted 1h lookback (4 × 15-min intervals)
- Linear weight progression [0.5, 0.75, 1.0, 1.25]
- ±3% threshold for momentum classification
- Recognizes ongoing trends earlier than future-only analysis

Two-phase trend calculation:
- Phase 1: Calculate momentum from weighted trailing average
- Phase 2: Validate with volatility-adaptive future comparison
- Combines both for final trend determination (rising/falling/stable)
- Centralized in _calculate_trend_info() with 60s cache

Volatility-adaptive thresholds:
- Existing trend sensors (1h-12h) now use adaptive thresholds
- calculate_price_trend() adjusted by market volatility:
  * LOW volatility (<15% CV): factor 0.6 → more sensitive (e.g., 3%→1.8%)
  * MODERATE volatility (15-30%): factor 1.0 → baseline (3%)
  * HIGH volatility (≥30%): factor 1.4 → less sensitive (e.g., 3%→4.2%)
- Uses same coefficient of variation as volatility sensors
- Ensures mathematical consistency across integration

Default threshold reduction:
- Rising/falling thresholds: 5% → 3% (more responsive)
- Momentum-based detection enables lower thresholds without noise
- Adaptive adjustment compensates during high volatility

Architectural improvements:
- Centralized calculation: Single source of truth for both sensors
- Eliminates Henne-Ei problem (duplicate calculations)
- 60-second cache per coordinator update
- Shared helper methods: _calculate_momentum(), _combine_momentum_with_future()

Translation updates (all 5 languages):
- Documented momentum feature in custom_translations (de/en/nb/nl/sv)
- Explained "recognizes ongoing trends earlier" advantage
- Added sensor names and state options to standard translations
- Updated volatility threshold descriptions (clarify usage by trend sensors)

Files changed:
- custom_components/tibber_prices/sensor/core.py (930 lines added)
  * New: _calculate_momentum(), _combine_momentum_with_future()
  * New: _calculate_trend_info() (centralized with cache)
  * New: _get_current_trend_value(), _get_next_trend_change_value()
  * Modified: _get_price_trend_value() (volatility-adaptive thresholds)
- custom_components/tibber_prices/sensor/definitions.py
  * Added: current_price_trend (ENUM sensor)
  * Added: next_price_trend_change (TIMESTAMP sensor)
- custom_components/tibber_prices/sensor/attributes.py
  * New: _add_cached_trend_attributes() helper
  * Support for current_trend_attributes, trend_change_attributes
- custom_components/tibber_prices/price_utils.py (178 lines added)
  * New: _calculate_lookahead_volatility_factor()
  * Modified: calculate_price_trend() with volatility adjustment
  * Added: VOLATILITY_FACTOR_* constants (0.6/1.0/1.4)
- custom_components/tibber_prices/entity_utils/icons.py
  * Added: Dynamic icon handling for next_price_trend_change
- custom_components/tibber_prices/const.py
  * Changed: DEFAULT_PRICE_TREND_THRESHOLD_RISING/FALLING (5→3%)
- custom_components/tibber_prices/translations/*.json (5 files)
  * Added: Sensor names, state options, descriptions
- custom_components/tibber_prices/custom_translations/*.json (5 files)
  * Added: Long descriptions with momentum feature explanation

Impact: Users get significantly more accurate trend detection that
understands they're ALREADY in a trend, not just predicting future
changes. Momentum-based approach recognizes ongoing movements 15-60
minutes earlier. Adaptive thresholds prevent false signals during
volatile periods. Two complementary sensors enable both status display
(current trend) and event-based automation (when will it change).
Perfect for use cases like "charge EV when next trend change shows
falling prices" or dashboard badges showing "Rising for 2.5h".
2025-11-16 12:49:43 +00:00

699 lines
30 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

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": {
"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."
},
"abort": {
"already_configured": "Integrasjonen er allerede konfigurert",
"entry_not_found": "Tibber-konfigurasjonsoppføring ikke funnet.",
"setup_complete": "Oppsett fullført! Du kan endre flere innstillinger for Tibber-priser i integrasjonens alternativer etter å ha lukket denne dialogen.",
"reauth_successful": "Autentisering vellykket. Integrasjonen er oppdatert med det nye tilgangstokenet."
}
},
"common": {
"step_progress": "Trinn {step_num} av {total_steps}"
},
"config_subentries": {
"home": {
"initiate_flow": {
"user": "Legg til Tibber-hjem"
},
"title": "Legg til Tibber-hjem",
"step": {
"user": {
"title": "Legg til Tibber-hjem",
"description": "Velg et hjem å legge til i din Tibber-integrasjon.\n\n**Merk:** Etter å ha lagt til dette hjemmet, kan du legge til flere hjem fra integrasjonens kontekstmeny ved å velge \"Legg til Tibber-hjem\".",
"data": {
"home_id": "Hjem"
}
}
},
"error": {
"api_error": "Kunne ikke hente hjem fra Tibber API"
},
"abort": {
"no_parent_entry": "Overordnet oppføring ikke funnet",
"no_access_token": "Ingen tilgangstoken tilgjengelig",
"home_not_found": "Valgt hjem ikke funnet",
"api_error": "Kunne ikke hente hjem fra Tibber API",
"no_available_homes": "Ingen flere hjem tilgjengelig for å legge til. Alle hjem fra din Tibber-konto er allerede lagt til."
}
}
},
"options": {
"step": {
"init": {
"title": "Generelle innstillinger",
"description": "{step_progress}\n\nKonfigurer generelle innstillinger for Tibber Prisinformasjon & Vurderinger.\n\nBruker: {user_login}",
"data": {
"extended_descriptions": "Vis utvidede beskrivelser i entitetsattributter"
},
"submit": "Neste til steg 2"
},
"current_interval_price_rating": {
"title": "Prisvurderingsterskler",
"description": "{step_progress}\n\nKonfigurer terskler for prisvurderingsnivåer (lav/normal/høy) basert på sammenligning med 24-timers glidende gjennomsnitt.",
"data": {
"price_rating_threshold_low": "Lav vurderingsterskel (% under glidende gjennomsnitt)",
"price_rating_threshold_high": "Høy vurderingsterskel (% over glidende gjennomsnitt)"
},
"submit": "Neste til steg 3"
},
"best_price": {
"title": "Innstillinger for beste prisperiode",
"description": "{step_progress}\n\nKonfigurer innstillinger for binærsensoren Beste prisperiode. Denne sensoren er aktiv i perioder med de laveste strømprisene.",
"data": {
"best_price_min_period_length": "Minimum periodelengde",
"best_price_flex": "Fleksibilitet: Maksimum % over minimumspris",
"best_price_min_distance_from_avg": "Minimumsavstand: Påkrevd % under daglig gjennomsnitt",
"best_price_max_level": "Prisnivåfilter (valgfritt)",
"best_price_max_level_gap_count": "Gaptoleranse for nivåfilter",
"enable_min_periods_best": "Prøv å oppnå minimum antall perioder",
"min_periods_best": "Minimum antall perioder",
"relaxation_step_best": "Avslappingstrinn",
"relaxation_attempts_best": "Antall forsøk (fleksnivåer)"
},
"data_description": {
"best_price_max_level": "Vis kun beste prisperioder hvis de inneholder intervaller med prisnivåer ≤ valgt verdi. For eksempel: å velge 'Billig' betyr at perioden må ha minst ett '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å.",
"enable_min_periods_best": "Når aktivert vil filtrene gradvis bli lempeligere hvis det ikke blir funnet nok perioder. Dette forsøker å nå ønsket minimum antall perioder, noe som kan føre til at mindre optimale tidsrom blir markert som beste-pris-perioder.",
"min_periods_best": "Minimum antall beste-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_step_best": "Prosentandel av den opprinnelige fleksibilitetsterskealen som legges til per avslappingstrinn. For eksempel: med 15% fleksibilitet og 25% trinnstørrelse vil filtrene prøve 15%, 18,75%, 22,5%, osv. Høyere verdier betyr raskere avslapping men mindre presisjon.",
"relaxation_attempts_best": "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 perioder, men tar litt lengre tid.",
"best_price_max_level_gap_count": "Maksimalt antall påfølgende intervaller som kan avvike med nøyaktig ett nivåtrinn fra det nødvendige nivået. For eksempel: med 'Billig' filter og gapantall 1, aksepteres sekvensen 'BILLIG, BILLIG, NORMAL, BILLIG' (NORMAL er ett trinn over BILLIG). Dette forhindrer at perioder blir delt opp av tilfeldige nivåavvik. Standard: 0 (streng filtrering, ingen toleranse)."
},
"submit": "Neste til steg 5"
},
"peak_price": {
"title": "Innstillinger for topprisperiode",
"description": "{step_progress}\n\nKonfigurer innstillinger for binærsensoren Topprisperiode. Denne sensoren er aktiv i perioder med de høyeste strømprisene.",
"data": {
"peak_price_min_period_length": "Minimum periodelengde",
"peak_price_flex": "Fleksibilitet: Maksimum % under maksimumspris (negativ verdi)",
"peak_price_min_distance_from_avg": "Minimumsavstand: Påkrevd % over daglig gjennomsnitt",
"peak_price_min_level": "Prisnivåfilter (valgfritt)",
"peak_price_max_level_gap_count": "Gaptoleranse for nivåfilter",
"enable_min_periods_peak": "Prøv å oppnå minimum antall perioder",
"min_periods_peak": "Minimum antall perioder",
"relaxation_step_peak": "Avslappingstrinn",
"relaxation_attempts_peak": "Antall forsøk (fleksnivåer)"
},
"data_description": {
"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 ett '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å.",
"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_step_peak": "Prosentandel av den opprinnelige fleksibilitetsterskealen som legges til per avslappingstrinn. For eksempel: med -15% fleksibilitet og 25% trinnstørrelse vil filtrene prøve -15%, -18,75%, -22,5%, osv. Høyere verdier betyr raskere avslapping men mindre presisjon.",
"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.",
"peak_price_max_level_gap_count": "Maksimalt antall påfølgende intervaller som kan avvike med nøyaktig ett nivåtrinn fra det nødvendige nivået. For eksempel: med 'Dyr' filter og gapantall 2, aksepteres sekvensen 'DYR, NORMAL, NORMAL, DYR' (NORMAL er ett trinn under DYR). Dette forhindrer at perioder blir delt opp av tilfeldige nivåavvik. Standard: 0 (streng filtrering, ingen toleranse)."
},
"submit": "Neste til steg 6"
},
"price_trend": {
"title": "Pristrendterskler",
"description": "{step_progress}\n\nKonfigurer 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.",
"data": {
"price_trend_threshold_rising": "Stigende terskel (% over nåværende pris)",
"price_trend_threshold_falling": "Fallende terskel (% under nåværende pris, negativ verdi)"
},
"submit": "Fullfør konfigurasjon"
},
"volatility": {
"title": "Volatilitet Terskler",
"description": "{step_progress}\n\nKonfigurer 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)",
"data": {
"volatility_threshold_moderate": "Moderat terskel (VK ≥ denne %, f.eks. 15)",
"volatility_threshold_high": "Høy terskel (VK ≥ denne %, f.eks. 30)",
"volatility_threshold_very_high": "Veldig høy terskel (VK ≥ denne %, f.eks. 50)"
},
"submit": "Neste til steg 4"
}
},
"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."
},
"abort": {
"entry_not_found": "Tibber-konfigurasjonsoppføring ikke funnet."
}
},
"entity": {
"sensor": {
"current_interval_price": {
"name": "Nåværende strømpris"
},
"current_interval_price_major": {
"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_timestamp": {
"name": "Prisdata Utløp"
},
"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"
},
"price_forecast": {
"name": "Prisprognose"
},
"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"
}
}
},
"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."
}
},
"services": {
"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": {
"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"
}
}
},
"title": "Tibber Prisinformasjon & Vurderinger"
}