mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-30 13:23:41 +00:00
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".
699 lines
31 KiB
JSON
699 lines
31 KiB
JSON
{
|
||
"config": {
|
||
"step": {
|
||
"user": {
|
||
"description": "Stel Tibber Prijsinformatie & Beoordelingen in.\n\nOm een API-toegangstoken te genereren, bezoek https://developer.tibber.com.",
|
||
"data": {
|
||
"access_token": "API-toegangstoken"
|
||
},
|
||
"submit": "Token valideren"
|
||
},
|
||
"select_home": {
|
||
"description": "Selecteer een huis om prijsinformatie en beoordelingen op te halen.",
|
||
"data": {
|
||
"home_id": "Huis"
|
||
},
|
||
"title": "Kies een huis",
|
||
"submit": "Huis selecteren"
|
||
},
|
||
"finish": {
|
||
"description": "Selecteer een huis om prijsinformatie en beoordelingen op te halen.",
|
||
"data": {
|
||
"home_id": "Huis-ID"
|
||
},
|
||
"title": "Kies een huis",
|
||
"submit": "Huis selecteren"
|
||
},
|
||
"reauth_confirm": {
|
||
"title": "Tibber Prijs-integratie opnieuw authenticeren",
|
||
"description": "Het toegangstoken voor Tibber is niet langer geldig. Voer een nieuw API-toegangstoken in om deze integratie te blijven gebruiken.\n\nOm een nieuw API-toegangstoken te genereren, bezoek https://developer.tibber.com.",
|
||
"data": {
|
||
"access_token": "API-toegangstoken"
|
||
},
|
||
"submit": "Token bijwerken"
|
||
}
|
||
},
|
||
"error": {
|
||
"auth": "Het Tibber-toegangstoken is ongeldig.",
|
||
"connection": "Kan geen verbinding maken met Tibber. Controleer je internetverbinding.",
|
||
"unknown": "Onverwachte fout",
|
||
"cannot_connect": "Verbinding mislukt",
|
||
"invalid_access_token": "Ongeldig toegangstoken",
|
||
"missing_homes": "Het nieuwe toegangstoken heeft geen toegang tot alle geconfigureerde huizen. Gebruik een toegangstoken dat toegang heeft tot dezelfde Tibber-huizen."
|
||
},
|
||
"abort": {
|
||
"already_configured": "Integratie is al geconfigureerd",
|
||
"entry_not_found": "Tibber-configuratie-item niet gevonden.",
|
||
"setup_complete": "Installatie voltooid! Je kunt aanvullende opties voor Tibber-prijzen wijzigen in de integratie-opties na het sluiten van dit dialoogvenster.",
|
||
"reauth_successful": "Herauthenticatie succesvol. De integratie is bijgewerkt met het nieuwe toegangstoken."
|
||
}
|
||
},
|
||
"common": {
|
||
"step_progress": "Stap {step_num} van {total_steps}"
|
||
},
|
||
"config_subentries": {
|
||
"home": {
|
||
"initiate_flow": {
|
||
"user": "Tibber-huis toevoegen"
|
||
},
|
||
"title": "Tibber-huis toevoegen",
|
||
"step": {
|
||
"user": {
|
||
"title": "Tibber-huis toevoegen",
|
||
"description": "Selecteer een huis om toe te voegen aan je Tibber-integratie.\n\n**Opmerking:** Na het toevoegen van dit huis kun je extra huizen toevoegen via het contextmenu van de integratie door \"Tibber-huis toevoegen\" te selecteren.",
|
||
"data": {
|
||
"home_id": "Huis"
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"api_error": "Ophalen van huizen van Tibber API mislukt"
|
||
},
|
||
"abort": {
|
||
"no_parent_entry": "Bovenliggend item niet gevonden",
|
||
"no_access_token": "Geen toegangstoken beschikbaar",
|
||
"home_not_found": "Geselecteerd huis niet gevonden",
|
||
"api_error": "Ophalen van huizen van Tibber API mislukt",
|
||
"no_available_homes": "Geen extra huizen beschikbaar om toe te voegen. Alle huizen van je Tibber-account zijn al toegevoegd."
|
||
}
|
||
}
|
||
},
|
||
"options": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Algemene instellingen",
|
||
"description": "{step_progress}\n\nConfigureer algemene instellingen voor Tibber Prijsinformatie & Beoordelingen.\n\nGebruiker: {user_login}",
|
||
"data": {
|
||
"extended_descriptions": "Uitgebreide beschrijvingen tonen in entiteitsattributen"
|
||
},
|
||
"submit": "Volgende naar stap 2"
|
||
},
|
||
"current_interval_price_rating": {
|
||
"title": "Prijsbeoordelingsdrempels",
|
||
"description": "{step_progress}\n\nConfigureer drempels voor prijsbeoordelingsniveaus (laag/normaal/hoog) op basis van vergelijking met het voortschrijdend 24-uurs gemiddelde.",
|
||
"data": {
|
||
"price_rating_threshold_low": "Lage beoordelingsdrempel (% onder voortschrijdend gemiddelde)",
|
||
"price_rating_threshold_high": "Hoge beoordelingsdrempel (% boven voortschrijdend gemiddelde)"
|
||
},
|
||
"submit": "Volgende naar stap 3"
|
||
},
|
||
"best_price": {
|
||
"title": "Instellingen beste prijsperiode",
|
||
"description": "{step_progress}\n\nConfigureer instellingen voor de Beste Prijsperiode binaire sensor. Deze sensor is actief tijdens perioden met de laagste elektriciteitsprijzen.",
|
||
"data": {
|
||
"best_price_min_period_length": "Minimale periode lengte",
|
||
"best_price_flex": "Flexibiliteit: Maximaal % boven minimumprijs",
|
||
"best_price_min_distance_from_avg": "Minimale afstand: Vereist % onder dagelijks gemiddelde",
|
||
"best_price_max_level": "Prijsniveaufilter (Optioneel)",
|
||
"best_price_max_level_gap_count": "Gaptolerantie voor niveaufilter",
|
||
"enable_min_periods_best": "Probeer minimum aantal periodes te bereiken",
|
||
"min_periods_best": "Minimum aantal periodes",
|
||
"relaxation_step_best": "Ontspanningsstap",
|
||
"relaxation_attempts_best": "Aantal ontspanningspogingen"
|
||
},
|
||
"data_description": {
|
||
"best_price_max_level": "Toon alleen beste prijsperiodes als ze intervallen bevatten met prijsniveaus ≤ geselecteerde waarde. Bijvoorbeeld: selecteren van 'Goedkoop' betekent dat de periode minstens één 'ZEER_GOEDKOOP' of 'GOEDKOOP' interval moet hebben. Dit zorgt ervoor dat 'beste prijs'-periodes niet alleen relatief goedkoop zijn voor de dag, maar daadwerkelijk goedkoop in absolute termen. Selecteer 'Alle' om beste prijzen te tonen ongeacht hun absolute prijsniveau.",
|
||
"enable_min_periods_best": "Wanneer ingeschakeld worden filters geleidelijk versoepeld als er niet genoeg periodes worden gevonden. Dit probeert het gewenste minimum aantal periodes te bereiken om ervoor te zorgen dat je kansen hebt om van lage prijzen te profiteren, zelfs op dagen met ongebruikelijke prijspatronen.",
|
||
"min_periods_best": "Minimum aantal beste prijsperiodes om naar te streven per dag. Filters worden stap voor stap versoepeld om dit aantal te proberen bereiken. Alleen actief wanneer 'Probeer minimum aantal periodes te bereiken' is ingeschakeld. Standaard: 1",
|
||
"relaxation_step_best": "Percentage van de oorspronkelijke flexibiliteitsdrempel om toe te voegen per ontspanningsstap. Bijvoorbeeld: met 15% flexibiliteit en 25% stapgrootte zullen de filters 15%, 18,75%, 22,5%, enz. proberen. Hogere waarden betekenen snellere ontspanning maar minder precisie.",
|
||
"relaxation_attempts_best": "Hoeveel keer de ontspanningslogica filters opnieuw mag proberen. Gebruik hogere waarden om meer variaties te testen als dagen extreem grillig zijn. Hogere aantallen vergen meer rekentijd maar vergroten de kans dat het gewenste minimum aantal periodes wordt gehaald.",
|
||
"best_price_max_level_gap_count": "Maximum aantal opeenvolgende intervallen dat precies één niveaustap mag afwijken van het vereiste niveau. Bijvoorbeeld: met 'Goedkoop' filter en gaptelling 1 wordt de reeks 'GOEDKOOP, GOEDKOOP, NORMAAL, GOEDKOOP' geaccepteerd (NORMAAL is één stap boven GOEDKOOP). Dit voorkomt dat periodes worden opgesplitst door incidentele niveauafwijkingen. Standaard: 0 (strikte filtering, geen tolerantie)."
|
||
},
|
||
"submit": "Volgende naar stap 5"
|
||
},
|
||
"peak_price": {
|
||
"title": "Instellingen piekprijsperiode",
|
||
"description": "{step_progress}\n\nConfigureer instellingen voor de Piekprijsperiode binaire sensor. Deze sensor is actief tijdens perioden met de hoogste elektriciteitsprijzen.",
|
||
"data": {
|
||
"peak_price_min_period_length": "Minimale periode lengte",
|
||
"peak_price_flex": "Flexibiliteit: Maximaal % onder maximumprijs (negatieve waarde)",
|
||
"peak_price_min_distance_from_avg": "Minimale afstand: Vereist % boven dagelijks gemiddelde",
|
||
"peak_price_min_level": "Prijsniveaufilter (Optioneel)",
|
||
"peak_price_max_level_gap_count": "Gaptolerantie voor niveaufilter",
|
||
"enable_min_periods_peak": "Probeer minimum aantal periodes te bereiken",
|
||
"min_periods_peak": "Minimum aantal periodes",
|
||
"relaxation_step_peak": "Ontspanningsstap",
|
||
"relaxation_attempts_peak": "Aantal ontspanningspogingen"
|
||
},
|
||
"data_description": {
|
||
"peak_price_min_level": "Toon alleen piekprijsperiodes als ze intervallen bevatten met prijsniveaus ≥ geselecteerde waarde. Bijvoorbeeld: selecteren van 'Duur' betekent dat de periode minstens één 'DUUR' of 'ZEER_DUUR' interval moet hebben. Dit zorgt ervoor dat 'piekprijs'-periodes niet alleen relatief duur zijn voor de dag, maar daadwerkelijk duur in absolute termen. Selecteer 'Alle' om piekprijzen te tonen ongeacht hun absolute prijsniveau.",
|
||
"enable_min_periods_peak": "Wanneer ingeschakeld worden filters geleidelijk versoepeld als er niet genoeg periodes worden gevonden. Dit probeert het gewenste minimum aantal periodes te bereiken om ervoor te zorgen dat je wordt gewaarschuwd voor dure periodes, zelfs op dagen met ongebruikelijke prijspatronen.",
|
||
"min_periods_peak": "Minimum aantal piekprijsperiodes om naar te streven per dag. Filters worden stap voor stap versoepeld om dit aantal te proberen bereiken. Alleen actief wanneer 'Probeer minimum aantal periodes te bereiken' is ingeschakeld. Standaard: 1",
|
||
"relaxation_step_peak": "Percentage van de oorspronkelijke flexibiliteitsdrempel om toe te voegen per ontspanningsstap. Bijvoorbeeld: met -15% flexibiliteit en 25% stapgrootte zullen de filters -15%, -18,75%, -22,5%, enz. proberen. Hogere waarden betekenen snellere ontspanning maar minder precisie.",
|
||
"relaxation_attempts_peak": "Hoeveel keer de ontspanningslogica filters opnieuw mag proberen. Gebruik meer pogingen wanneer de piekperiodes moeilijk te vinden zijn door vlakke of zeer grillige dagen. Elke extra poging kost wat extra verwerkingstijd maar vergroot de kans dat periodes worden gevonden.",
|
||
"peak_price_max_level_gap_count": "Maximum aantal opeenvolgende intervallen dat precies één niveaustap mag afwijken van het vereiste niveau. Bijvoorbeeld: met 'Duur' filter en gaptelling 2 wordt de reeks 'DUUR, NORMAAL, NORMAAL, DUUR' geaccepteerd (NORMAAL is één stap onder DUUR). Dit voorkomt dat periodes worden opgesplitst door incidentele niveauafwijkingen. Standaard: 0 (strikte filtering, geen tolerantie)."
|
||
},
|
||
"submit": "Volgende naar stap 6"
|
||
},
|
||
"price_trend": {
|
||
"title": "Prijstrenddrempels",
|
||
"description": "{step_progress}\n\nConfigureer drempels voor prijstrendsensoren. Deze sensoren vergelijken de huidige prijs met het gemiddelde van de volgende N uur om te bepalen of prijzen stijgen, dalen of stabiel zijn.",
|
||
"data": {
|
||
"price_trend_threshold_rising": "Stijgende drempel (% boven huidige prijs)",
|
||
"price_trend_threshold_falling": "Dalende drempel (% onder huidige prijs, negatieve waarde)"
|
||
},
|
||
"submit": "Configuratie voltooien"
|
||
},
|
||
"volatility": {
|
||
"title": "Volatiliteit Drempels",
|
||
"description": "{step_progress}\n\nConfigureer drempels voor volatiliteitsclassificatie. Volatiliteit meet relatieve prijsvariatie met behulp van de variatiecoëfficiënt (VC = standaarddeviatie / gemiddelde × 100%). Deze drempels zijn percentagewaarden die werken over alle prijsniveaus.\n\nGebruikt door:\n• Volatiliteitssensoren (classificatie)\n• Trendsensoren (adaptieve drempelaanpassing: <matig = gevoeliger, ≥hoog = minder gevoelig)",
|
||
"data": {
|
||
"volatility_threshold_moderate": "Matige drempel (VC ≥ deze %, bijv. 15)",
|
||
"volatility_threshold_high": "Hoge drempel (VC ≥ deze %, bijv. 30)",
|
||
"volatility_threshold_very_high": "Zeer hoge drempel (VC ≥ deze %, bijv. 50)"
|
||
},
|
||
"submit": "Volgende naar stap 4"
|
||
}
|
||
},
|
||
"error": {
|
||
"auth": "Het Tibber-toegangstoken is ongeldig.",
|
||
"connection": "Kan geen verbinding maken met Tibber. Controleer je internetverbinding.",
|
||
"unknown": "Er is een onverwachte fout opgetreden. Controleer de logboeken voor details.",
|
||
"cannot_connect": "Verbinding mislukt",
|
||
"invalid_access_token": "Ongeldig toegangstoken",
|
||
"different_home": "Het toegangstoken is niet geldig voor de huis-ID waarvoor deze integratie is geconfigureerd."
|
||
},
|
||
"abort": {
|
||
"entry_not_found": "Tibber-configuratie-item niet gevonden."
|
||
}
|
||
},
|
||
"entity": {
|
||
"sensor": {
|
||
"current_interval_price": {
|
||
"name": "Huidige elektriciteitsprijs"
|
||
},
|
||
"current_interval_price_major": {
|
||
"name": "Huidige elektriciteitsprijs (Energie-dashboard)"
|
||
},
|
||
"next_interval_price": {
|
||
"name": "Volgende elektriciteitsprijs"
|
||
},
|
||
"previous_interval_price": {
|
||
"name": "Vorige elektriciteitsprijs"
|
||
},
|
||
"current_hour_average_price": {
|
||
"name": "⌀ Uurprijs huidig"
|
||
},
|
||
"next_hour_average_price": {
|
||
"name": "⌀ Uurprijs volgend"
|
||
},
|
||
"current_interval_price_level": {
|
||
"name": "Huidig prijsniveau",
|
||
"state": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"next_interval_price_level": {
|
||
"name": "Volgend prijsniveau",
|
||
"state": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"previous_interval_price_level": {
|
||
"name": "Vorig prijsniveau",
|
||
"state": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"current_hour_price_level": {
|
||
"name": "Huidig uurprijsniveau",
|
||
"state": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"next_hour_price_level": {
|
||
"name": "Volgend uurprijsniveau",
|
||
"state": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"lowest_price_today": {
|
||
"name": "Laagste prijs vandaag"
|
||
},
|
||
"highest_price_today": {
|
||
"name": "Hoogste prijs vandaag"
|
||
},
|
||
"average_price_today": {
|
||
"name": "⌀ Prijs vandaag"
|
||
},
|
||
"lowest_price_tomorrow": {
|
||
"name": "Laagste prijs morgen"
|
||
},
|
||
"highest_price_tomorrow": {
|
||
"name": "Hoogste prijs morgen"
|
||
},
|
||
"average_price_tomorrow": {
|
||
"name": "⌀ Prijs morgen"
|
||
},
|
||
"yesterday_price_level": {
|
||
"name": "Prijsniveau gisteren",
|
||
"state": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"today_price_level": {
|
||
"name": "Prijsniveau vandaag",
|
||
"state": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"tomorrow_price_level": {
|
||
"name": "Prijsniveau morgen",
|
||
"state": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"yesterday_price_rating": {
|
||
"name": "Prijsbeoordeling gisteren",
|
||
"state": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"today_price_rating": {
|
||
"name": "Prijsbeoordeling vandaag",
|
||
"state": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"tomorrow_price_rating": {
|
||
"name": "Prijsbeoordeling morgen",
|
||
"state": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"trailing_price_average": {
|
||
"name": "⌀ Prijs voortschrijdend 24u"
|
||
},
|
||
"leading_price_average": {
|
||
"name": "⌀ Prijs vooruitlopend 24u"
|
||
},
|
||
"trailing_price_min": {
|
||
"name": "24u-minimumprijs voortschrijdend"
|
||
},
|
||
"trailing_price_max": {
|
||
"name": "24u-maximumprijs voortschrijdend"
|
||
},
|
||
"leading_price_min": {
|
||
"name": "24u-minimumprijs vooruitlopend"
|
||
},
|
||
"leading_price_max": {
|
||
"name": "24u-maximumprijs vooruitlopend"
|
||
},
|
||
"current_interval_price_rating": {
|
||
"name": "Huidige prijsbeoordeling",
|
||
"state": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"next_interval_price_rating": {
|
||
"name": "Volgende prijsbeoordeling",
|
||
"state": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"previous_interval_price_rating": {
|
||
"name": "Vorige prijsbeoordeling",
|
||
"state": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"current_hour_price_rating": {
|
||
"name": "Huidig uurprijsbeoordeling",
|
||
"state": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"next_hour_price_rating": {
|
||
"name": "Volgend uurprijsbeoordeling",
|
||
"state": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"next_avg_1h": {
|
||
"name": "⌀ Prijs volgende 1u"
|
||
},
|
||
"next_avg_2h": {
|
||
"name": "⌀ Prijs volgende 2u"
|
||
},
|
||
"next_avg_3h": {
|
||
"name": "⌀ Prijs volgende 3u"
|
||
},
|
||
"next_avg_4h": {
|
||
"name": "⌀ Prijs volgende 4u"
|
||
},
|
||
"next_avg_5h": {
|
||
"name": "⌀ Prijs volgende 5u"
|
||
},
|
||
"next_avg_6h": {
|
||
"name": "⌀ Prijs volgende 6u"
|
||
},
|
||
"next_avg_8h": {
|
||
"name": "⌀ Prijs volgende 8u"
|
||
},
|
||
"next_avg_12h": {
|
||
"name": "⌀ Prijs volgende 12u"
|
||
},
|
||
"price_trend_1h": {
|
||
"name": "Prijstrend (1u)",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"price_trend_2h": {
|
||
"name": "Prijstrend (2u)",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"price_trend_3h": {
|
||
"name": "Prijstrend (3u)",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"price_trend_4h": {
|
||
"name": "Prijstrend (4u)",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"price_trend_5h": {
|
||
"name": "Prijstrend (5u)",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"price_trend_6h": {
|
||
"name": "Prijstrend (6u)",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"price_trend_8h": {
|
||
"name": "Prijstrend (8u)",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"price_trend_12h": {
|
||
"name": "Prijstrend (12u)",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"current_price_trend": {
|
||
"name": "Huidige prijstrend",
|
||
"state": {
|
||
"rising": "Stijgend",
|
||
"falling": "Dalend",
|
||
"stable": "Stabiel"
|
||
}
|
||
},
|
||
"next_price_trend_change": {
|
||
"name": "Volgende trendwijziging"
|
||
},
|
||
"daily_rating": {
|
||
"name": "Dagelijkse prijsbeoordeling"
|
||
},
|
||
"monthly_rating": {
|
||
"name": "Maandelijkse prijsbeoordeling"
|
||
},
|
||
"data_timestamp": {
|
||
"name": "Prijsgegevens Vervaldatum"
|
||
},
|
||
"today_volatility": {
|
||
"name": "Volatiliteit vandaag",
|
||
"state": {
|
||
"low": "Laag",
|
||
"moderate": "Gematigd",
|
||
"high": "Hoog",
|
||
"very_high": "Zeer Hoog"
|
||
}
|
||
},
|
||
"tomorrow_volatility": {
|
||
"name": "Volatiliteit morgen",
|
||
"state": {
|
||
"low": "Laag",
|
||
"moderate": "Gematigd",
|
||
"high": "Hoog",
|
||
"very_high": "Zeer Hoog"
|
||
}
|
||
},
|
||
"next_24h_volatility": {
|
||
"name": "Volatiliteit volgende 24u",
|
||
"state": {
|
||
"low": "Laag",
|
||
"moderate": "Gematigd",
|
||
"high": "Hoog",
|
||
"very_high": "Zeer Hoog"
|
||
}
|
||
},
|
||
"today_tomorrow_volatility": {
|
||
"name": "Volatiliteit vandaag+morgen",
|
||
"state": {
|
||
"low": "Laag",
|
||
"moderate": "Gematigd",
|
||
"high": "Hoog",
|
||
"very_high": "Zeer Hoog"
|
||
}
|
||
},
|
||
"best_price_end_time": {
|
||
"name": "Beste prijs eindigt"
|
||
},
|
||
"best_price_period_duration": {
|
||
"name": "Beste prijs duur"
|
||
},
|
||
"best_price_remaining_minutes": {
|
||
"name": "Beste prijs resterende tijd"
|
||
},
|
||
"best_price_progress": {
|
||
"name": "Beste prijs voortgang"
|
||
},
|
||
"best_price_next_start_time": {
|
||
"name": "Beste prijs start"
|
||
},
|
||
"best_price_next_in_minutes": {
|
||
"name": "Beste prijs start over"
|
||
},
|
||
"peak_price_end_time": {
|
||
"name": "Piekprijs eindigt"
|
||
},
|
||
"peak_price_period_duration": {
|
||
"name": "Piekprijs duur"
|
||
},
|
||
"peak_price_remaining_minutes": {
|
||
"name": "Piekprijs resterende tijd"
|
||
},
|
||
"peak_price_progress": {
|
||
"name": "Piekprijs voortgang"
|
||
},
|
||
"peak_price_next_start_time": {
|
||
"name": "Piekprijs start"
|
||
},
|
||
"peak_price_next_in_minutes": {
|
||
"name": "Piekprijs start over"
|
||
},
|
||
"price_forecast": {
|
||
"name": "Prijsprognose"
|
||
},
|
||
"home_type": {
|
||
"name": "Woningtype",
|
||
"state": {
|
||
"apartment": "Appartement",
|
||
"rowhouse": "Rijtjeshuis",
|
||
"house": "Huis",
|
||
"cottage": "Vakantiehuis"
|
||
}
|
||
},
|
||
"home_size": {
|
||
"name": "Woonoppervlakte"
|
||
},
|
||
"main_fuse_size": {
|
||
"name": "Hoofdzekering"
|
||
},
|
||
"number_of_residents": {
|
||
"name": "Aantal bewoners"
|
||
},
|
||
"primary_heating_source": {
|
||
"name": "Primaire warmtebron",
|
||
"state": {
|
||
"air2air_heatpump": "Lucht-lucht-warmtepomp",
|
||
"air2water_heatpump": "Lucht-water-warmtepomp",
|
||
"boiler": "Boiler",
|
||
"central_heating": "Centrale verwarming",
|
||
"district_heating": "Stadsverwarming",
|
||
"district": "Stadsverwarming",
|
||
"electric_boiler": "Elektrische boiler",
|
||
"electricity": "Elektriciteit",
|
||
"floor": "Vloerverwarming",
|
||
"gas": "Gas",
|
||
"ground_heatpump": "Bodemwarmtepomp",
|
||
"ground": "Bodemwarmtepomp",
|
||
"oil": "Olie",
|
||
"other": "Anders",
|
||
"waste": "Restwarmte"
|
||
}
|
||
},
|
||
"grid_company": {
|
||
"name": "Netbeheerder"
|
||
},
|
||
"grid_area_code": {
|
||
"name": "Netgebiedcode"
|
||
},
|
||
"price_area_code": {
|
||
"name": "Prijszonecode"
|
||
},
|
||
"consumption_ean": {
|
||
"name": "Verbruiks-EAN"
|
||
},
|
||
"production_ean": {
|
||
"name": "Productie-EAN"
|
||
},
|
||
"energy_tax_type": {
|
||
"name": "Energiebelastingtype"
|
||
},
|
||
"vat_type": {
|
||
"name": "BTW-type"
|
||
},
|
||
"estimated_annual_consumption": {
|
||
"name": "Geschat jaarverbruik"
|
||
},
|
||
"subscription_status": {
|
||
"name": "Abonnementsstatus",
|
||
"state": {
|
||
"running": "Actief",
|
||
"ended": "Beëindigd",
|
||
"pending": "In afwachting",
|
||
"unknown": "Onbekend"
|
||
}
|
||
}
|
||
},
|
||
"binary_sensor": {
|
||
"peak_price_period": {
|
||
"name": "Piekprijs-periode"
|
||
},
|
||
"best_price_period": {
|
||
"name": "Beste prijs-periode"
|
||
},
|
||
"connection": {
|
||
"name": "Tibber API-verbinding"
|
||
},
|
||
"tomorrow_data_available": {
|
||
"name": "Gegevens van morgen beschikbaar"
|
||
},
|
||
"has_ventilation_system": {
|
||
"name": "Heeft ventilatiesysteem"
|
||
},
|
||
"realtime_consumption_enabled": {
|
||
"name": "Realtime verbruik ingeschakeld"
|
||
}
|
||
}
|
||
},
|
||
"issues": {
|
||
"new_homes_available": {
|
||
"title": "Nieuwe Tibber-huizen gedetecteerd",
|
||
"description": "We hebben {count} nieuw(e) huis/huizen op je Tibber-account gedetecteerd: {homes}. Je kunt ze toevoegen aan Home Assistant via de Tibber-integratieconfiguratie."
|
||
},
|
||
"homes_removed": {
|
||
"title": "Tibber-huizen verwijderd",
|
||
"description": "We hebben gedetecteerd dat {count} huis/huizen zijn verwijderd van je Tibber-account: {homes}. Controleer je Tibber-integratieconfiguratie."
|
||
}
|
||
},
|
||
"services": {
|
||
"refresh_user_data": {
|
||
"name": "Gebruikersgegevens vernieuwen",
|
||
"description": "Forceert een vernieuwing van de gebruikersgegevens (huizen, profielinformatie) van de Tibber API. Dit kan handig zijn na het maken van wijzigingen in je Tibber-account of bij het oplossen van verbindingsproblemen.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Item-ID",
|
||
"description": "De config-item-ID voor de Tibber-integratie."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"selector": {
|
||
"volatility": {
|
||
"options": {
|
||
"low": "Laag",
|
||
"moderate": "Matig",
|
||
"high": "Hoog",
|
||
"very_high": "Zeer hoog"
|
||
}
|
||
},
|
||
"current_interval_price_level": {
|
||
"options": {
|
||
"any": "Alle",
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
}
|
||
},
|
||
"title": "Tibber Prijsinformatie & Beoordelingen"
|
||
}
|