mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-29 21:03:40 +00:00
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
1147 lines
65 KiB
JSON
1147 lines
65 KiB
JSON
{
|
||
"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 ett nytt 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 https://developer.tibber.com.",
|
||
"data": {
|
||
"access_token": "API-åtkomsttoken"
|
||
},
|
||
"submit": "Validera token"
|
||
},
|
||
"user": {
|
||
"description": "Konfigurera Tibber Prisinformation & Betyg.\n\nFör att generera en API-åtkomsttoken, besök https://developer.tibber.com.",
|
||
"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": "Autentisera Tibber Prisintegrationen igen",
|
||
"description": "Åtkomsttoken för Tibber är inte längre giltig. Vänligen 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 https://developer.tibber.com.",
|
||
"data": {
|
||
"access_token": "API-åtkomsttoken"
|
||
},
|
||
"submit": "Uppdatera token"
|
||
}
|
||
},
|
||
"error": {
|
||
"auth": "Tibber-åtkomsttoken är ogiltig.",
|
||
"connection": "Kunde inte ansluta till Tibber. Vänligen kontrollera din internetanslutning.",
|
||
"unknown": "Oväntat fel",
|
||
"cannot_connect": "Kunde inte ansluta",
|
||
"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 endast 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 gått ut. Endast hem med aktiva eller framtida elavtal kan läggas till i Home Assistant.",
|
||
"future_subscription_warning": "Obs: Tibber-avtalet för detta hem har inte startat än. Funktionaliteten kan vara begränsad tills avtalet blir aktivt.",
|
||
"invalid_yaml_syntax": "Ogiltig YAML-syntax. Kontrollera indragning, kolon och specialtecken.",
|
||
"invalid_yaml_structure": "YAML måste vara en ordbok/objekt (nyckel: värde-par), inte en lista eller ren text.",
|
||
"service_call_failed": "Tjänsteanropsvalidering misslyckades: {error_detail}",
|
||
"missing_entry_id": "Post-ID krävs men tillhandahölls inte.",
|
||
"invalid_entry_id": "Ogiltig post-ID eller post hittades inte.",
|
||
"missing_home_id": "Hem-ID saknas från konfigurationsposten.",
|
||
"user_data_not_available": "Användardata är inte tillgänglig. Uppdatera användardata först.",
|
||
"price_fetch_failed": "Kunde inte hämta prisdata. Kontrollera loggarna för detaljer."
|
||
},
|
||
"abort": {
|
||
"already_configured": "Alla tillgängliga Tibber-hem är redan konfigurerade. Varje hem kan endast konfigureras en gång.",
|
||
"entry_not_found": "Tibber-konfigurationspost hittades inte.",
|
||
"setup_complete": "Installation klar! Du kan ändra ytterligare alternativ för Tibber Prices i integrationens alternativ efter att ha stängt denna dialog.",
|
||
"reauth_successful": "Omautentisering lyckades. Integrationen har uppdaterats med den nya åtkomsttoken."
|
||
}
|
||
},
|
||
"common": {
|
||
"step_progress": "{step_num} / {total_steps}"
|
||
},
|
||
"config_subentries": {
|
||
"home": {
|
||
"entry_type": "Tidsresevy",
|
||
"initiate_flow": {
|
||
"user": "Skapa tidsresevy"
|
||
},
|
||
"title": "Skapa tidsresevy",
|
||
"step": {
|
||
"user": {
|
||
"title": "Välj konfigurationspost",
|
||
"description": "Välj konfigurationsposten som du vill skapa en tidsresevy för.\n\n**Tidsresevyer** låter dig se historiska 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 \"yesterday\"-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 att resa tillbaka i tiden. Skjutreglage område: 0 till 374 dagar (≈1 år). Rekommenderat: ≥2 dagar för att undvika konflikter med \"yesterday\"-entiteter.",
|
||
"time_offset": "Valfri finjustering: Lägg till timmar och/eller minuter till dagförskjutningen. Tiden subtraheras automatiskt (res längre tillbaka). Obs: Sekunder ignoreras - endast minutbaserad precision 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 att resa tillbaka i tiden. Skjutreglage område: 0 till 374 dagar (≈1 år). Rekommenderat: ≥2 dagar för att undvika konflikter med \"yesterday\"-entiteter.",
|
||
"time_offset": "Valfri finjustering: Lägg till timmar och/eller minuter till dagförskjutningen. Tiden subtraheras automatiskt (res längre tillbaka). Obs: Sekunder ignoreras - endast minutbaserad precision stöds."
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"no_time_offset": "Minst ett tidsförskjutningsvärde måste vara negativt (endast historiska data)."
|
||
},
|
||
"abort": {
|
||
"already_configured": "**En tidsresevy med denna exakta tidsförskjutning existerar redan.**\n\nVälj en annan förskjutning.",
|
||
"no_main_entries": "Inga huvudkonfigurationsposter hittades. Lägg först till ett Tibber-hem.",
|
||
"parent_entry_not_found": "Vald konfigurationspost hittades inte."
|
||
}
|
||
}
|
||
},
|
||
"options": {
|
||
"step": {
|
||
"init": {
|
||
"title": "⚙️ Allmänna inställningar",
|
||
"description": "_{step_progress}_\n\n**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"
|
||
},
|
||
"data_description": {
|
||
"extended_descriptions": "Styr om entitetsattribut inkluderar detaljerade förklaringar och användningstips.\n\n• Inaktiverad (standard): Bara kort beskrivning\n• Aktiverad: Detaljerad förklaring + praktiska användningsexempel\n\nExempel:\nInaktiverad = 1 attribut\nAktiverad = 2 extra attribut"
|
||
},
|
||
"submit": "Fortsätt →"
|
||
},
|
||
"display_settings": {
|
||
"title": "💱 Valutavisningsinställningar",
|
||
"description": "_{step_progress}_\n\n**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• **Underenhet** (ct/kWh, öre/kWh): Större värden (t.ex. 25,00 ct/kWh) - skillnader redan synliga från 1:a decimalen\n\nStandard beror på din valuta:\n• EUR → Underenhet (cent) - tysk/nederländsk preferens\n• NOK/SEK/DKK → Basvaluta (kronor) - skandinavisk preferens\n• USD/GBP → Basvaluta\n\n**💡 Tips:** Vid val av underenhet kan du aktivera den extra sensorn \"Nuvarande elpris (Energipanel)\" (inaktiverad som standard)."
|
||
},
|
||
"submit": "Fortsätt →"
|
||
},
|
||
"current_interval_price_rating": {
|
||
"title": "📊 Prisvärderingströsklar",
|
||
"description": "_{step_progress}_\n\n**Konfigurera trösklar för prisvärderingsnivåer (låg/normal/hög) baserat på jämförelse med rullande 24-timmars genomsnitt.**\n\n---",
|
||
"sections": {
|
||
"price_rating_thresholds": {
|
||
"name": "Prisvärderingströsklar",
|
||
"description": "Definiera prisvärderingsnivåer.",
|
||
"data": {
|
||
"price_rating_threshold_low": "Låg tröskel",
|
||
"price_rating_threshold_high": "Hög tröskel"
|
||
},
|
||
"data_description": {
|
||
"price_rating_threshold_low": "Procent under det rullande 24-timmars genomsnittet som det aktuella priset måste vara för att kvalificera som 'låg' värdering. Exempel: 5 betyder minst 5% under genomsnitt. Sensorer med denna värdering indikerar gynnsamma tidsfönster. Standard: 5%",
|
||
"price_rating_threshold_high": "Procent över det rullande 24-timmars genomsnittet som det aktuella priset måste vara för att kvalificera som 'hög' värdering. Exempel: 10 betyder minst 10% över genomsnitt. Sensorer med denna värdering varnar för dyra tidsfönster. Standard: 10%"
|
||
}
|
||
}
|
||
},
|
||
"submit": "Fortsätt →"
|
||
},
|
||
"best_price": {
|
||
"title": "💚 Bästa Pris Period Inställningar",
|
||
"description": "_{step_progress}_\n\nKonfigurera inställningar för **Bästa Pris Period** binär sensor. Denna sensor är aktiv under perioder med de lägsta elpriserna.\n\n---",
|
||
"sections": {
|
||
"period_settings": {
|
||
"name": "Periodinställningar",
|
||
"description": "Konfigurera periodlängd och prisnivåbegränsningar.",
|
||
"data": {
|
||
"best_price_min_period_length": "Minimal periodlängd",
|
||
"best_price_max_level": "Prisnivåfilter",
|
||
"best_price_max_level_gap_count": "Gaptolerens"
|
||
},
|
||
"data_description": {
|
||
"best_price_min_period_length": "Minsta varaktighet för att en period ska räknas som 'bästa pris'. Längre perioder är mer praktiska för att köra hushållsmaskiner som diskmaskiner eller värmepumpar. Bästa pris-perioder kräver minst 60 minuter (jämfört med 30 minuter för topppris-varningar) eftersom de ska ge meningsfulla tidsfönster för förbrukningsplanering, inte bara kortvariga möjligheter.",
|
||
"best_price_max_level": "Visa endast bästa pris-perioder om de innehåller intervall med prisnivåer ≤ valt värde. Till exempel måste perioden om du väljer '**Billigt**' 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 på varandra följande intervaller som får avvika med exakt ett nivåsteg från det erforderliga nivået. Till exempel: med '**Billigt**' filter och gapantal 1 accepteras sekvensen '**Billigt**, **Billigt**, **Normal**, **Billigt**' (**Normal** är ett steg över **Billigt**). Detta förhindrar att perioder delas upp av tillfälliga nivåavvikelser. **Obs:** Gaptoleransen kräver perioder ≥90 minuter (6 intervaller) för att detektera avvikare effektivt. Standard: 0 (strikt filtrering, ingen tolerans)."
|
||
}
|
||
},
|
||
"flexibility_settings": {
|
||
"name": "Flexibilitetsinställningar",
|
||
"description": "Konfigurera prisjämförelsegränser och filtrering.",
|
||
"data": {
|
||
"best_price_flex": "Flexibilitet",
|
||
"best_price_min_distance_from_avg": "Minimiavstånd"
|
||
},
|
||
"data_description": {
|
||
"best_price_flex": "Maximalt över dagens minimumpris där intervaller fortfarande kvalificerar som 'bästa pris'. Rekommenderat: 15-20 med avslappning aktiverad (standard), eller 25-35 utan avslappning. Maximum: 50 (hård gräns för tillförlitlig periodigkänning).",
|
||
"best_price_min_distance_from_avg": "Säkerställer att perioder är betydligt billigare än dagsgenomsnittet, inte bara marginellt under det. Detta filtrerar brus och förhindrar att något-under-genomsnittet perioder markeras som 'bästa pris' på dagar med platta priser. Högre värden = striktare filtrering (endast riktigt billiga perioder kvalificerar). Standard: 5 betyder att perioder måste vara minst 5% under dagsgenomsnittet."
|
||
}
|
||
},
|
||
"relaxation_and_target_periods": {
|
||
"name": "Avslappning & Målperioder",
|
||
"description": "Konfigurera automatisk filteravslappning och målperiodantal. Aktivera 'Nå minimiantal' för att aktivera avslappning.",
|
||
"data": {
|
||
"enable_min_periods_best": "Nå minimiantal",
|
||
"min_periods_best": "Minimiperioder",
|
||
"relaxation_attempts_best": "Avslappningsförsök"
|
||
},
|
||
"data_description": {
|
||
"enable_min_periods_best": "När den är aktiverad kommer filter gradvis att slappas av om inte tillräckligt många perioder hittas. Detta försöker nå det önskade minimiantal perioder, vilket kan inkludera mindre optimala tidsfönster som bästa pris-perioder.",
|
||
"min_periods_best": "Minimiantal bästa pris-perioder att sikta på per dag. Filter kommer att slappas av steg för steg för att försöka nå detta antal. Endast aktivt när 'Nå 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 bearbetningstid."
|
||
}
|
||
}
|
||
},
|
||
"submit": "Fortsätt →"
|
||
},
|
||
"peak_price": {
|
||
"title": "🔴 Topppris Period Inställningar",
|
||
"description": "_{step_progress}_\n\nKonfigurera inställningar för **Topppris Period** binär sensor. Denna sensor är aktiv under perioder med de högsta elpriserna.\n\n---",
|
||
"sections": {
|
||
"period_settings": {
|
||
"name": "Periodinställningar",
|
||
"description": "Konfigurera periodlängd och prisnivåbegränsningar.",
|
||
"data": {
|
||
"peak_price_min_period_length": "Minimal periodlängd",
|
||
"peak_price_min_level": "Prisnivåfilter",
|
||
"peak_price_max_level_gap_count": "Gaptolerens"
|
||
},
|
||
"data_description": {
|
||
"peak_price_min_period_length": "Minsta varaktighet för att en period ska räknas som 'toppris'. Topppris-varningar är tillåtna för kortare perioder (minst 30 minuter 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örbruksplanering.",
|
||
"peak_price_min_level": "Visa endast topprisperioder om de innehåller intervall med prisnivåer ≥ valt värde. Till exempel måste perioden om du väljer '**Dyrt**' ha minst ett '**Dyrt**' eller '**Mycket dyrt**' intervall. Detta säkerställer att 'toppris'-perioder inte bara är relativt dyra för dagen, utan faktiskt dyra i absoluta termer (inte bara 'lite dyrare än genomsnittet på en billig dag').",
|
||
"peak_price_max_level_gap_count": "Maximalt antal på varandra följande intervaller som får avvika med exakt ett nivåsteg från det erforderliga nivået. Till exempel: med '**Dyrt**' filter och gapantal 1 accepteras sekvensen '**Dyrt**, **Dyrt**, **Normal**, **Dyrt**' (**Normal** är ett steg under **Dyrt**). Detta förhindrar att perioder delas upp av tillfälliga nivåavvikelser. **Obs:** Gaptoleransen kräver perioder ≥90 minuter (6 intervaller) för att detektera avvikelser effektivt. Standard: 0 (strikt filtrering, ingen tolerans)."
|
||
}
|
||
},
|
||
"flexibility_settings": {
|
||
"name": "Flexibilitetsinställningar",
|
||
"description": "Konfigurera prisjämförelsekriterer och filtrering.",
|
||
"data": {
|
||
"peak_price_flex": "Flexibilitet",
|
||
"peak_price_min_distance_from_avg": "Minimiavstånd"
|
||
},
|
||
"data_description": {
|
||
"peak_price_flex": "Maximalt under dagens maximumpris där intervaller fortfarande kvalificerar som 'toppris'. Rekommendation: -15 till -20 med avslappning aktiverad (standard), eller -25 till -35 utan avslappning. Maximum: -50 (hård gräns för tillförlitlig periodigkänning). Observera: Negativa värden anger 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 brus och förhindrar att något-över-genomsnittet perioder markeras som 'toppris' på dagar med platta priser. Högre värden = striktare filtrering (endast riktigt dyra perioder kvalificerar). Standard: 5 betyder att perioder måste vara minst 5% över dagsgenomsnittet."
|
||
}
|
||
},
|
||
"relaxation_and_target_periods": {
|
||
"name": "Avslappning & målperioder",
|
||
"description": "Konfigurera automatisk filteravslappning och målperioder. Aktivera 'Försök uppnå minsta antal perioder' för att aktivera avslappning.",
|
||
"data": {
|
||
"enable_min_periods_peak": "Försök uppnå minsta antal perioder",
|
||
"min_periods_peak": "Minsta antal perioder",
|
||
"relaxation_attempts_peak": "Antal avslappningsförsök"
|
||
},
|
||
"data_description": {
|
||
"enable_min_periods_peak": "När aktiverad kommer filtren att gradvis luckras upp om inte tillräckligt många perioder hittas. Detta försöker uppnå det önskade minsta antalet perioder för att säkerställa att du blir varnad för dyra perioder även på dagar med ovanliga prismönster.",
|
||
"min_periods_peak": "Minsta antal topprisperioder att sträva efter per dag. Filtren kommer att luckras upp steg för steg för att försöka uppnå detta antal. Endast aktiv när 'Försök uppnå minsta antal perioder' är aktiverad. Standard: 1",
|
||
"relaxation_attempts_peak": "Hur många gånger avslappningslogiken får försöka hitta nya kombinationer av flex och filter. Öka detta när topperioderna är svåra att hitta på grund av platta eller mycket volatila dagar. Fler försök ger större chans att hitta perioder men kräver lite mer beräkningstid."
|
||
}
|
||
}
|
||
},
|
||
"submit": "Fortsätt →"
|
||
},
|
||
"price_trend": {
|
||
"title": "📈 Pristrendtrösklar",
|
||
"description": "_{step_progress}_\n\n**Konfigurera trösklar för pristrendsensorer. Dessa sensorer jämför det aktuella priset med genomsnittet av de nästa N timmarna för att avgöra om priserna stiger, faller eller är stabila.**\n\n---",
|
||
"sections": {
|
||
"price_trend_thresholds": {
|
||
"name": "Pristrendtrösklar",
|
||
"description": "Definiera pristrendnivåer.",
|
||
"data": {
|
||
"price_trend_threshold_rising": "Stigande tröskel",
|
||
"price_trend_threshold_falling": "Fallande tröskel"
|
||
},
|
||
"data_description": {
|
||
"price_trend_threshold_rising": "Procent för genomsnittlig prisökning per timme som kvalificerar trenden som 'stigande'. Exempel: 5 betyder minst 5% ökning per timme. Sensorer med denna trend indikerar att priserna kommer att stiga snabbt. Standard: 5%",
|
||
"price_trend_threshold_falling": "Procent för genomsnittlig prisminskning per timme som kvalificerar trenden som 'fallande'. Exempel: -5 betyder minst 5% minskning per timme. Sensorer med denna trend indikerar att priserna kommer att falla snabbt. Standard: -5%"
|
||
}
|
||
}
|
||
},
|
||
"submit": "Fortsätt →"
|
||
},
|
||
"volatility": {
|
||
"title": "💨 Volatilitetströsklar",
|
||
"description": "_{step_progress}_\n\n**Konfigurera trösklar för volatilitetsklassificering. Volatilitet mäter relativ prisvariation med hjälp av variationskoefficienten (VK = standardavvikelse / medelvärde × 100%). Dessa trösklar är procentvärden som fungerar över alla prisnivåer.**\n\nAnvänds av:\n• Volatilitetssensorer (klassificering)\n• Trendsensorer (adaptiv tröskel justering: <måttlig = mer känslig, ≥hög = mindre känslig)\n\n---",
|
||
"sections": {
|
||
"volatility_thresholds": {
|
||
"name": "Volatilitetströsklar",
|
||
"description": "Definiera volatilitetsklassificeringsignivåer.",
|
||
"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": "Gränsvärde för standardavvikelse (% av genomsnitt) för att klassificera prisvariation som 'måttlig'. Exempel: 10 betyder standardavvikelse ≥ 10% av genomsnitt. Detta indikerar ökad prisinstabilitet. Standard: 10%",
|
||
"volatility_threshold_high": "Gränsvärde för standardavvikelse (% av genomsnitt) för att klassificera prisvariation som 'hög'. Exempel: 20 betyder standardavvikelse ≥ 20% av genomsnitt. Detta indikerar betydande prissvingningar. Standard: 20%",
|
||
"volatility_threshold_very_high": "Gränsvärde för standardavvikelse (% av genomsnitt) för att klassificera prisvariation som 'mycket hög'. Exempel: 30 betyder standardavvikelse ≥ 30% av genomsnitt. Detta indikerar extrem prisinstabilitet. Standard: 30%"
|
||
}
|
||
}
|
||
},
|
||
"submit": "Fortsätt →"
|
||
},
|
||
"chart_data_export": {
|
||
"title": "📊 Diagram-dataexport Sensor",
|
||
"description": "_{step_progress}_\n\nDiagram-dataexport-sensorn tillhandahåller prisdata som sensorattribut.\n\n⚠️ **Observera:** Denna sensor är en legacy-funktion för kompatibilitet med äldre verktyg.\n\n**Rekommenderat för nya installationer:** Använd `tibber_prices.get_chartdata` **tjänsten direkt** - den är mer flexibel, effektiv och det moderna Home Assistant-tillvägagångssättet.\n\n**När denna sensor är meningsfull:**\n\n✅ Ditt dashboardverktyg kan **endast** läsa attribut (inga tjänsteanrop)\n✅ Du behöver statiska data som uppdateras automatiskt\n❌ **Inte för automationer:** Använd `tibber_prices.get_chartdata` direkt där - mer flexibel och effektiv!\n\n---\n\n**Aktivera sensorn:**\n\n1. Öppna **Inställningar → Enheter och tjänster → Tibber Prices**\n2. Välj ditt hem → Hitta **'Diagramdataexport'** (Diagnostik-sektionen)\n3. **Aktivera sensorn** (inaktiverad som standard)\n\n**Konfiguration (valfritt):**\n\nStandardinställningar fungerar direkt (idag+imorgon, 15-minuters intervaller, endast priser).\n\nFör anpassning, lägg till 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**Alla parametrar:** Se `tibber_prices.get_chartdata` tjänstdokumentation",
|
||
"submit": "Slutför ✓"
|
||
}
|
||
},
|
||
"error": {
|
||
"auth": "Tibber-åtkomsttoken är ogiltig.",
|
||
"connection": "Kunde inte ansluta till Tibber. Vänligen kontrollera din internetanslutning.",
|
||
"unknown": "Ett oväntat fel inträffade. Vänligen kontrollera loggarna för detaljer.",
|
||
"cannot_connect": "Kunde inte ansluta",
|
||
"invalid_access_token": "Ogiltig åtkomsttoken",
|
||
"different_home": "Åtkomsttoken är inte giltig för hem-ID:t som denna integration är konfigurerad för.",
|
||
"invalid_flex": "Flexibilitetsprocent måste vara mellan -50% och +50%",
|
||
"invalid_best_price_distance": "Avståndsprocent måste vara mellan -50% och 0% (negativ = under genomsnitt)",
|
||
"invalid_peak_price_distance": "Avståndsprocent måste vara mellan 0% och 50% (positiv = över genomsnitt)",
|
||
"invalid_min_periods": "Minsta antal perioder måste vara mellan 1 och 10",
|
||
"invalid_period_length": "Periodlängden måste vara minst 15 minuter (multiplar av 15).",
|
||
"invalid_gap_count": "Gaptolerans måste vara mellan 0 och 8",
|
||
"invalid_relaxation_attempts": "Avslappningsförsök måste vara mellan 1 och 12",
|
||
"invalid_price_rating_low": "Låg prisklassificeringströskel måste vara mellan -50% och -5%",
|
||
"invalid_price_rating_high": "Hög prisklassificeringströ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%"
|
||
},
|
||
"abort": {
|
||
"entry_not_found": "Tibber-konfigurationspost hittades inte."
|
||
}
|
||
},
|
||
"entity": {
|
||
"sensor": {
|
||
"current_interval_price": {
|
||
"name": "Nuvarande elpris"
|
||
},
|
||
"current_interval_price_base": {
|
||
"name": "Nuvarande elpris (Energipanel)"
|
||
},
|
||
"next_interval_price": {
|
||
"name": "Nästa elpris"
|
||
},
|
||
"previous_interval_price": {
|
||
"name": "Föregående elpris"
|
||
},
|
||
"current_hour_average_price": {
|
||
"name": "⌀ Timpris nuvarande"
|
||
},
|
||
"next_hour_average_price": {
|
||
"name": "⌀ Timpris nästa"
|
||
},
|
||
"current_interval_price_level": {
|
||
"name": "Nuvarande prisnivå",
|
||
"state": {
|
||
"very_cheap": "Mycket billigt",
|
||
"cheap": "Billigt",
|
||
"normal": "Normal",
|
||
"expensive": "Dyrt",
|
||
"very_expensive": "Mycket dyrt"
|
||
}
|
||
},
|
||
"next_interval_price_level": {
|
||
"name": "Nästa prisnivå",
|
||
"state": {
|
||
"very_cheap": "Mycket billigt",
|
||
"cheap": "Billigt",
|
||
"normal": "Normal",
|
||
"expensive": "Dyrt",
|
||
"very_expensive": "Mycket dyrt"
|
||
}
|
||
},
|
||
"previous_interval_price_level": {
|
||
"name": "Föregående prisnivå",
|
||
"state": {
|
||
"very_cheap": "Mycket billigt",
|
||
"cheap": "Billigt",
|
||
"normal": "Normal",
|
||
"expensive": "Dyrt",
|
||
"very_expensive": "Mycket dyrt"
|
||
}
|
||
},
|
||
"current_hour_price_level": {
|
||
"name": "Nuvarande timprisnivå",
|
||
"state": {
|
||
"very_cheap": "Mycket billigt",
|
||
"cheap": "Billigt",
|
||
"normal": "Normal",
|
||
"expensive": "Dyrt",
|
||
"very_expensive": "Mycket dyrt"
|
||
}
|
||
},
|
||
"next_hour_price_level": {
|
||
"name": "Nästa timprisnivå",
|
||
"state": {
|
||
"very_cheap": "Mycket billigt",
|
||
"cheap": "Billigt",
|
||
"normal": "Normal",
|
||
"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": "Prisnivå igår",
|
||
"state": {
|
||
"very_cheap": "Mycket billigt",
|
||
"cheap": "Billigt",
|
||
"normal": "Normalt",
|
||
"expensive": "Dyrt",
|
||
"very_expensive": "Mycket dyrt"
|
||
}
|
||
},
|
||
"today_price_level": {
|
||
"name": "Prisnivå idag",
|
||
"state": {
|
||
"very_cheap": "Mycket billigt",
|
||
"cheap": "Billigt",
|
||
"normal": "Normalt",
|
||
"expensive": "Dyrt",
|
||
"very_expensive": "Mycket dyrt"
|
||
}
|
||
},
|
||
"tomorrow_price_level": {
|
||
"name": "Prisnivå imorgon",
|
||
"state": {
|
||
"very_cheap": "Mycket billigt",
|
||
"cheap": "Billigt",
|
||
"normal": "Normalt",
|
||
"expensive": "Dyrt",
|
||
"very_expensive": "Mycket dyrt"
|
||
}
|
||
},
|
||
"yesterday_price_rating": {
|
||
"name": "Prisvärdering igår",
|
||
"state": {
|
||
"low": "Låg",
|
||
"normal": "Normal",
|
||
"high": "Hög"
|
||
}
|
||
},
|
||
"today_price_rating": {
|
||
"name": "Prisvärdering idag",
|
||
"state": {
|
||
"low": "Låg",
|
||
"normal": "Normal",
|
||
"high": "Hög"
|
||
}
|
||
},
|
||
"tomorrow_price_rating": {
|
||
"name": "Prisvärdering imorgon",
|
||
"state": {
|
||
"low": "Låg",
|
||
"normal": "Normal",
|
||
"high": "Hög"
|
||
}
|
||
},
|
||
"trailing_price_average": {
|
||
"name": "⌀ Pris rullande 24t"
|
||
},
|
||
"leading_price_average": {
|
||
"name": "⌀ Pris framåtblickande 24t"
|
||
},
|
||
"trailing_price_min": {
|
||
"name": "Rullande 24t minimumpris"
|
||
},
|
||
"trailing_price_max": {
|
||
"name": "Rullande 24t maximumpris"
|
||
},
|
||
"leading_price_min": {
|
||
"name": "Framåtblickande 24t minimumpris"
|
||
},
|
||
"leading_price_max": {
|
||
"name": "Framåtblickande 24t maximumpris"
|
||
},
|
||
"current_interval_price_rating": {
|
||
"name": "Nuvarande prisvärdering",
|
||
"state": {
|
||
"low": "Låg",
|
||
"normal": "Normal",
|
||
"high": "Hög"
|
||
}
|
||
},
|
||
"next_interval_price_rating": {
|
||
"name": "Nästa prisvärdering",
|
||
"state": {
|
||
"low": "Låg",
|
||
"normal": "Normal",
|
||
"high": "Hög"
|
||
}
|
||
},
|
||
"previous_interval_price_rating": {
|
||
"name": "Föregående prisvärdering",
|
||
"state": {
|
||
"low": "Låg",
|
||
"normal": "Normal",
|
||
"high": "Hög"
|
||
}
|
||
},
|
||
"current_hour_price_rating": {
|
||
"name": "Nuvarande timprisvärdering",
|
||
"state": {
|
||
"low": "Låg",
|
||
"normal": "Normal",
|
||
"high": "Hög"
|
||
}
|
||
},
|
||
"next_hour_price_rating": {
|
||
"name": "Nästa timprisvärdering",
|
||
"state": {
|
||
"low": "Låg",
|
||
"normal": "Normal",
|
||
"high": "Hög"
|
||
}
|
||
},
|
||
"next_avg_1h": {
|
||
"name": "⌀ Pris nästa 1t"
|
||
},
|
||
"next_avg_2h": {
|
||
"name": "⌀ Pris nästa 2t"
|
||
},
|
||
"next_avg_3h": {
|
||
"name": "⌀ Pris nästa 3t"
|
||
},
|
||
"next_avg_4h": {
|
||
"name": "⌀ Pris nästa 4t"
|
||
},
|
||
"next_avg_5h": {
|
||
"name": "⌀ Pris nästa 5t"
|
||
},
|
||
"next_avg_6h": {
|
||
"name": "⌀ Pris nästa 6t"
|
||
},
|
||
"next_avg_8h": {
|
||
"name": "⌀ Pris nästa 8t"
|
||
},
|
||
"next_avg_12h": {
|
||
"name": "⌀ Pris nästa 12t"
|
||
},
|
||
"price_trend_1h": {
|
||
"name": "Pristrend (1t)",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_2h": {
|
||
"name": "Pristrend (2t)",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_3h": {
|
||
"name": "Pristrend (3t)",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_4h": {
|
||
"name": "Pristrend (4t)",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_5h": {
|
||
"name": "Pristrend (5t)",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_6h": {
|
||
"name": "Pristrend (6t)",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_8h": {
|
||
"name": "Pristrend (8t)",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"price_trend_12h": {
|
||
"name": "Pristrend (12t)",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"current_price_trend": {
|
||
"name": "Nuvarande pristrend",
|
||
"state": {
|
||
"rising": "Stigande",
|
||
"falling": "Fallande",
|
||
"stable": "Stabil"
|
||
}
|
||
},
|
||
"next_price_trend_change": {
|
||
"name": "Nästa trendförändring"
|
||
},
|
||
"daily_rating": {
|
||
"name": "Daglig prisvärdering"
|
||
},
|
||
"monthly_rating": {
|
||
"name": "Månatlig prisvärdering"
|
||
},
|
||
"data_lifecycle_status": {
|
||
"name": "Datalivscykel-status",
|
||
"state": {
|
||
"cached": "Cachad",
|
||
"fresh": "Färsk",
|
||
"refreshing": "Uppdaterar",
|
||
"searching_tomorrow": "Söker morgondagens data",
|
||
"turnover_pending": "Midnattskifte väntar",
|
||
"error": "Fel"
|
||
}
|
||
},
|
||
"today_volatility": {
|
||
"name": "Volatilitet idag",
|
||
"state": {
|
||
"low": "Låg",
|
||
"moderate": "Måttlig",
|
||
"high": "Hög",
|
||
"very_high": "Mycket Hög"
|
||
}
|
||
},
|
||
"tomorrow_volatility": {
|
||
"name": "Volatilitet imorgon",
|
||
"state": {
|
||
"low": "Låg",
|
||
"moderate": "Måttlig",
|
||
"high": "Hög",
|
||
"very_high": "Mycket Hög"
|
||
}
|
||
},
|
||
"next_24h_volatility": {
|
||
"name": "Volatilitet nästa 24t",
|
||
"state": {
|
||
"low": "Låg",
|
||
"moderate": "Måttlig",
|
||
"high": "Hög",
|
||
"very_high": "Mycket Hög"
|
||
}
|
||
},
|
||
"today_tomorrow_volatility": {
|
||
"name": "Volatilitet idag+imorgon",
|
||
"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": "Bostadstyp",
|
||
"state": {
|
||
"apartment": "Lägenhet",
|
||
"rowhouse": "Radhus",
|
||
"house": "Hus",
|
||
"cottage": "Stuga"
|
||
}
|
||
},
|
||
"home_size": {
|
||
"name": "Boyta"
|
||
},
|
||
"main_fuse_size": {
|
||
"name": "Huvudsäkring"
|
||
},
|
||
"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": "Varmvattenberedare",
|
||
"central_heating": "Centralvärme",
|
||
"district_heating": "Fjärrvärme",
|
||
"district": "Fjärrvärme",
|
||
"electric_boiler": "Elektrisk varmvattenberedare",
|
||
"electricity": "Elektricitet",
|
||
"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": "Uppskattat årsförbrukning"
|
||
},
|
||
"subscription_status": {
|
||
"name": "Abonnemangsstatus",
|
||
"state": {
|
||
"running": "Aktiv",
|
||
"ended": "Avslutad",
|
||
"pending": "Väntar",
|
||
"unknown": "Okänd"
|
||
}
|
||
},
|
||
"chart_data_export": {
|
||
"name": "Diagramdataexport",
|
||
"state": {
|
||
"pending": "Väntar",
|
||
"ready": "Redo",
|
||
"error": "Fel"
|
||
}
|
||
},
|
||
"chart_metadata": {
|
||
"name": "Diagrammetadata",
|
||
"state": {
|
||
"pending": "Väntar",
|
||
"ready": "Redo",
|
||
"error": "Fel"
|
||
}
|
||
}
|
||
},
|
||
"binary_sensor": {
|
||
"peak_price_period": {
|
||
"name": "Toppris-period"
|
||
},
|
||
"best_price_period": {
|
||
"name": "Bästa pris-period"
|
||
},
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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 via Tibber-integrationskonfigurationen."
|
||
},
|
||
"homes_removed": {
|
||
"title": "Tibber-hem borttagna",
|
||
"description": "Vi upptäckte att {count} hem har tagits bort från ditt Tibber-konto: {homes}. Vänligen granska din Tibber-integrationskonfiguration."
|
||
},
|
||
"tomorrow_data_missing": {
|
||
"title": "Prisdata för imorgon saknas för {home_name}",
|
||
"description": "Elprisdata för imorgon ä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 inte publicerat morgondagens priser ännu\n- Tillfälliga API-problem\n- Din elleverantör har inte skickat in priser till Tibber\n\nDetta problem kommer att lösas automatiskt när morgondagens data blir tillgänglig. Om detta fortsätter efter 20:00, vänligen kontrollera Tibber-appen eller kontakta Tibber-support."
|
||
},
|
||
"rate_limit_exceeded": {
|
||
"title": "API-hastighetsgräns överskriden för {home_name}",
|
||
"description": "Tibber-API:et har hastighetsbegränsat denna integration efter {error_count} på varandra följande 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 kommer att lösas när hastighetsgränsen löper ut.\n\nOm detta fortsätter i flera timmar, överväg:\n- Att kontrollera om flera Home Assistant-instanser använder samma API-token\n- Att verifiera att inga andra applikationer använder din Tibber-API-token mycket\n- Att minska uppdateringsfrekvensen om du har anpassat den"
|
||
},
|
||
"home_not_found": {
|
||
"title": "Hemmet {home_name} hittades inte i Tibber-kontot",
|
||
"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\nVänligen ta 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 och tjänster → Tibber Prices och ta bort {home_name}-konfigurationen."
|
||
}
|
||
},
|
||
"services": {
|
||
"get_price": {
|
||
"name": "Hämta prisdata",
|
||
"description": "Hämta prisdata för ett specifikt tidsintervall med automatisk routing. Utvecklings- och testtjänst för price_info_for_range API-funktionen. Använder automatiskt PRICE_INFO, PRICE_INFO_RANGE eller båda baserat på tidsintervallgränsen.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Post-ID",
|
||
"description": "Konfigurationspost-ID för Tibber-integrationen."
|
||
},
|
||
"start_time": {
|
||
"name": "Starttid",
|
||
"description": "Start av tidsintervallet (inklusiv, tidszonskänslig)."
|
||
},
|
||
"end_time": {
|
||
"name": "Sluttid",
|
||
"description": "Slut av tidsintervallet (exklusiv, tidszonskänslig)."
|
||
}
|
||
}
|
||
},
|
||
"get_apexcharts_yaml": {
|
||
"name": "Hämta ApexCharts-kort YAML",
|
||
"description": "⚠️ VIKTIGT: Denna tjänst genererar en GRUNDLÄGGANDE EXEMPEL-konfiguration för ApexCharts-kort som utgångspunkt. Det är INTE en komplett lösning för alla ApexCharts-funktioner. Denna integration är i första hand en DATALEVERANTÖR. Den genererade YAML demonstrerar hur du använder `get_chartdata`-tjänsten för att hämta prisdata. På grund av den segmenterade naturen hos våra 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 för dina specifika behov, men förstå att omfattande ApexCharts-konfigurationsstöd ligger utanför ramen för denna integration. Gemenskapsbidrag med förbättrade konfigurationer är alltid uppskattade - om du hittar en bättre inställning som fungerar, dela den gärna så att alla kan dra nytta av det! För direkt dataåtkomst för att bygga dina egna diagram, använd `get_chartdata`-tjänsten istället.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Post-ID",
|
||
"description": "Konfigurationspost-ID för Tibber-integrationen."
|
||
},
|
||
"day": {
|
||
"name": "Dag",
|
||
"description": "Vilken dag som ska visualiseras (standard: Rullande fönster). Fasta dagalternativ (Igår/Idag/Imorgon) visar 24t-spann utan extra beroenden. Dynamiska alternativ kräver config-template-card: Rullande fönster skapar ett fast 48t-fönster som automatiskt växlar mellan igår+idag och idag+imorgon baserat på datatillgänglighet. Rullande fönster (Auto-Zoom) beter sig likadant men zoomar dessutom automatiskt in (2t tillbakablick + återstående tid till midnatt, graph_span minskar varje kvart)."
|
||
},
|
||
"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 billig/billig/normal/dyr/mycket dyr)."
|
||
},
|
||
"highlight_best_price": {
|
||
"name": "Markera bästa prisperioder",
|
||
"description": "Lägg till ett halvgenomskinligt grönt överlägg 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."
|
||
}
|
||
}
|
||
},
|
||
"get_chartdata": {
|
||
"name": "Hämta diagramdata",
|
||
"description": "Returnerar prisdata i ett enkelt diagramvänligt format kompatibelt med Tibber Core-integrationens outputstruktur. Perfekt för användning med populära diagramkort som ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card eller den inbyggda History Graph Card. Fältnamn och datastruktur kan anpassas för att matcha diagrammets krav.",
|
||
"sections": {
|
||
"general": {
|
||
"name": "Allmänt",
|
||
"description": "Grundalternativ för hämtning av diagramdata."
|
||
},
|
||
"selection": {
|
||
"name": "Val",
|
||
"description": "Välj vilka data som ska inkluderas i utdatan."
|
||
},
|
||
"filters": {
|
||
"name": "Filter",
|
||
"description": "Filtrera data baserat på prisnivåer, prisvärderingar eller speciella perioder."
|
||
},
|
||
"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 arrayer",
|
||
"description": "Inställningar för utdataformat vid användning av array av arrayer."
|
||
},
|
||
"arrays_of_objects": {
|
||
"name": "Avancerade utdatainställningar: Array av objekt",
|
||
"description": "Inställningar för utdataformat vid användning av array av objekt."
|
||
}
|
||
},
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Post-ID",
|
||
"description": "Konfigurationspost-ID för Tibber-integrationen."
|
||
},
|
||
"day": {
|
||
"name": "Dag",
|
||
"description": "Vilken dag(ar) ska priser hämtas för. Du kan välja flera dagar. Om inte angivet, returneras ett rullande 2-dagars fönster: idag+imorgon (när morgondagens data är tillgänglig) eller igår+idag (när morgondagens data inte är tillgänglig ännu). Detta ger kontinuerlig diagramvisning utan luckor."
|
||
},
|
||
"resolution": {
|
||
"name": "Upplösning",
|
||
"description": "Tidsupplösning för returnerade data. Alternativ: 'interval' (standard, 15-minuters intervaller, 96 datapunkter per dag), 'hourly' (timgenomsnitt, 24 datapunkter per dag)."
|
||
},
|
||
"output_format": {
|
||
"name": "Utdataformat",
|
||
"description": "Utdataformat för returnerade data. Alternativ: 'array_of_objects' (standard, array av objekt med anpassningsbara fältnamn), 'array_of_arrays' (array av [tidsstämpel, pris]-arrayer med avslutande null-punkt för stepline-diagram)."
|
||
},
|
||
"array_fields": {
|
||
"name": "Array-fält",
|
||
"description": "Definiera vilka fält som ska inkluderas. Använd fältnamn inom måsvingar, separerade med kommatecken. Tillgängliga fält: start_time, price_per_kwh, level, rating_level, average. Fält aktiveras automatiskt även om include_*-alternativ inte är inställda. Lämna tomt för standard (endast tidsstämpel och pris)."
|
||
},
|
||
"subunit_currency": {
|
||
"name": "Underenhet valuta",
|
||
"description": "Returnera priser i underenhet valutaenheter (öre för SEK/NOK, cent för EUR) istället för basvalutaenheter. Inaktiverad som standard."
|
||
},
|
||
"round_decimals": {
|
||
"name": "Avrunda decimaler",
|
||
"description": "Antal decimaler att avrunda priser till (0-10). Om inte angivet används standardprecision (4 decimaler för basvaluta, 2 för underenhet valuta)."
|
||
},
|
||
"include_level": {
|
||
"name": "Inkludera prisnivå",
|
||
"description": "Inkludera Tibber-prisnivåfältet (mycket billigt/billigt/normal/dyrt/mycket dyrt) i varje datapunkt."
|
||
},
|
||
"include_rating_level": {
|
||
"name": "Inkludera prisvärdering",
|
||
"description": "Inkludera det beräknade prisvärderingsfältet (låg/normal/hög) baserat på dina konfigurerade trösklar i varje datapunkt."
|
||
},
|
||
"include_average": {
|
||
"name": "Inkludera genomsnitt",
|
||
"description": "Inkludera dagligt genomsnittspris i varje datapunkt för jämförelse."
|
||
},
|
||
"level_filter": {
|
||
"name": "Prisnivåfilter",
|
||
"description": "Filtrera intervaller för att endast inkludera specifika Tibber-prisnivåer (mycket billigt/billigt/normal/dyrt/mycket dyrt). Om inget anges inkluderas alla nivåer."
|
||
},
|
||
"rating_level_filter": {
|
||
"name": "Prisvärderingsfilter",
|
||
"description": "Filtrera intervall för att endast inkludera specifika prisvärderingar (låg/normal/hög). Om inte angivet inkluderas alla värderingar."
|
||
},
|
||
"period_filter": {
|
||
"name": "Periodfilter",
|
||
"description": "Filtrera intervall för att endast inkludera de inom Bästa pris- eller Topp pris-perioder. Alternativ: 'best_price' (endast intervall i Bästa pris-perioder), 'peak_price' (endast intervall i Topp pris-perioder). Om inte angivet inkluderas alla intervall. 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 intervall. 'segments': Lägg till NULL-punkter vid segmentgränser för rena luckor i diagram (rekommenderas för steglinjediagram). 'all': Infoga NULL för alla tidsstä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 anslutningspunkter till vid segmentgränser för att visuellt ansluta olika prisnivå-segment i steglinjediagram. När priset går NER läggs en punkt med lägre pris till i slutet av nuvarande segment. När priset går UPP läggs en hållpunkt till före luckan. Detta skapar mjuka 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 nullvärden (utom tidsstämpel) i slutet. Vissa diagrambibliotek behöver detta för att förhindra extrapolering/interpolering till visningsportens kant vid användning av trappstegsrendering. Lämna inaktiverad om inte ditt diagram kräver det."
|
||
},
|
||
"start_time_field": {
|
||
"name": "Starttid-fältnamn",
|
||
"description": "Anpassat namn för starttid-fältet i utdata. Standard är 'start_time' om inte angivet."
|
||
},
|
||
"end_time_field": {
|
||
"name": "Sluttid-fältnamn",
|
||
"description": "Anpassat namn för sluttid-fältet i utdata. Standard är 'end_time' om inte angivet. Används endast med period_filter."
|
||
},
|
||
"price_field": {
|
||
"name": "Prisfältsnamn",
|
||
"description": "Anpassat namn för prisfältet i utdata. Standard är 'price_per_kwh'."
|
||
},
|
||
"level_field": {
|
||
"name": "Prisnivåfältsnamn",
|
||
"description": "Anpassat namn för prisnivåfältet i utdata. Standard är 'level'. Används endast när include_level är aktiverad."
|
||
},
|
||
"rating_level_field": {
|
||
"name": "Prisvärderingsfältsnamn",
|
||
"description": "Anpassat namn för prisvärderingsfältet i utdata. Standard är 'rating_level'. Används endast när include_rating_level är aktiverad."
|
||
},
|
||
"average_field": {
|
||
"name": "Genomsnittsfältsnamn",
|
||
"description": "Anpassat namn för genomsnittsfältet i utdata. Standard är 'average'. Används endast när include_average är aktiverad."
|
||
},
|
||
"metadata": {
|
||
"name": "Metadata",
|
||
"description": "Styr metadata-inkludering i svaret. 'include' (standard): Returnerar både diagramdata och metadata med prisstatistik, valutainformation, Y-axelförslag och tidsperiod. 'only': Returnerar endast metadata utan att bearbeta diagramdata (snabbt, användbart för dynamisk Y-axel konfiguration). 'none': Returnerar endast diagramdata utan metadata."
|
||
},
|
||
"data_key": {
|
||
"name": "Datanyckel",
|
||
"description": "Anpassat namn för datanyckeln på toppnivå i svaret. Standard är 'data' om inte angivet."
|
||
}
|
||
}
|
||
},
|
||
"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": "Post-ID",
|
||
"description": "Konfigurationspost-ID för Tibber-integrationen."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"selector": {
|
||
"account_choice": {
|
||
"options": {
|
||
"new_token": "Lägg till nytt Tibber-konto med API-token"
|
||
}
|
||
},
|
||
"day": {
|
||
"options": {
|
||
"yesterday": "Igår",
|
||
"today": "Idag",
|
||
"tomorrow": "Imorgon",
|
||
"rolling_window": "Rullande fönster",
|
||
"rolling_window_autozoom": "Rullande 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 arrayer"
|
||
}
|
||
},
|
||
"level_type": {
|
||
"options": {
|
||
"rating_level": "Betygsättningsnivå (låg/normal/hög)",
|
||
"level": "Tibber-nivå (mycket billig till mycket dyr)"
|
||
}
|
||
},
|
||
"level_filter": {
|
||
"options": {
|
||
"very_cheap": "Mycket billig",
|
||
"cheap": "Billig",
|
||
"normal": "Normal",
|
||
"expensive": "Dyr",
|
||
"very_expensive": "Mycket dyr"
|
||
}
|
||
},
|
||
"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": "Topp prisperioder"
|
||
}
|
||
},
|
||
"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": "Underenhet valuta (ct, öre)"
|
||
}
|
||
},
|
||
"average_sensor_display": {
|
||
"options": {
|
||
"median": "Median",
|
||
"mean": "Aritmetiskt medelvärde"
|
||
}
|
||
}
|
||
},
|
||
"title": "Tibber Prisinformation & Betyg"
|
||
}
|