mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-30 05:13:40 +00:00
Added optional diagnostic binary sensor that exposes get_chartdata service results as entity attributes for legacy dashboard tools. Key features: - Entity: binary_sensor.tibber_home_NAME_chart_data_export - Configurable via Options Flow Step 7 (YAML parameters) - Calls get_chartdata service with user configuration - Exposes response as attributes for chart cards - Disabled by default (opt-in) - Auto-refreshes on coordinator updates - Manual refresh via homeassistant.update_entity Implementation details: - Added chart_data_export entity description to definitions.py - Implemented state/attribute logic in binary_sensor/core.py - Added YAML configuration schema in schemas.py - Added validation in options_flow.py (Step 7) - Service call validation with detailed error messages - Attribute ordering: metadata first, descriptions next, service data last - Dynamic icon mapping (database-export/database-alert) Translations: - Added chart_data_export_config to all 5 languages - Added Step 7 descriptions with legacy warning - Added invalid_yaml_syntax/invalid_yaml_structure error messages - Added custom_translations for sensor descriptions Documentation: - Added Chart Data Export section to sensors.md - Added comprehensive service guide to services.md - Migration path from sensor to service - Configuration instructions via Options Flow Impact: Provides backward compatibility for dashboard tools that can only read entity attributes (e.g., older ApexCharts versions). New integrations should use tibber_prices.get_chartdata service directly.
882 lines
45 KiB
JSON
882 lines
45 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.",
|
||
"invalid_yaml_syntax": "Ongeldige YAML-syntaxis. Controleer inspringen, dubbele punten en speciale tekens.",
|
||
"invalid_yaml_structure": "YAML moet een woordenboek/object zijn (sleutel: waarde-paren), geen lijst of platte tekst.",
|
||
"service_call_failed": "Service-aanroep validatie mislukt: {error_detail}"
|
||
},
|
||
"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": "Verder naar stap 7"
|
||
},
|
||
"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"
|
||
},
|
||
"chart_data_export": {
|
||
"title": "Grafiek Data Export",
|
||
"description": "{step_progress}\n\n⚠️ **Deze stap is optioneel:** Configureer alleen als je een diagnostische sensor nodig hebt voor oudere dashboardtools die GEEN services kunnen aanroepen.\n\n⚠️ **BELANGRIJK: Legacy-functie**\nDeze sensor bestaat alleen voor achterwaartse compatibiliteit met oudere tools die alleen data kunnen lezen uit entiteitsattributen.\n\n**Voor nieuwe integraties, gebruik de `tibber_prices.get_chartdata` service direct** - deze is flexibeler, efficiënter en de aanbevolen Home Assistant-aanpak.\n\n**Wanneer deze sensor gebruiken:**\n✅ ALLEEN als jouw dashboardtool ALLEEN attributen kan lezen (bijv. oudere versies)\n❌ NIET voor nieuwe integraties - gebruik de service direct\n\n**Wat is deze sensor?**\nEen diagnostische sensor die de `tibber_prices.get_chartdata` service aanroept met jouw YAML-parameters en het resultaat beschikbaar stelt als attributen.\n\n**Hoe te gebruiken:**\n1. Open Instellingen → Apparaten en services → Tibber Prices\n2. Selecteer jouw woning\n3. Vind 'Grafiek Data Export' in de Diagnostiek-sectie\n4. Activeer de sensor (standaard uitgeschakeld)\n5. Gebruik `homeassistant.update_entity` om data handmatig bij te werken\n\n**Configuratiehandleiding:**\n1. Test je service-aanroep in Ontwikkelaarstools → Services → `tibber_prices.get_chartdata`\n2. Kopieer de YAML uit de `data:` sectie (zonder `entry_id`)\n3. Plak het hieronder (gebruik Shift+Enter of Ctrl+Enter voor nieuwe regels)\n\n**Voorbeeld YAML:**\n```yaml\nday:\n - today\n - tomorrow\ninclude_level: true\ninclude_rating_level: true\n```\n\n**Opmerking:** Laat leeg of sla deze stap over als je de service direct gebruikt (aanbevolen).",
|
||
"data": {
|
||
"chart_data_config": "Serviceconfiguratie (YAML)"
|
||
},
|
||
"data_description": {
|
||
"chart_data_config": "YAML-configuratie voor `get_chartdata` service. Ondersteunde parameters: day (lijst met yesterday/today/tomorrow), resolution (interval/hourly), output_format, include_level, include_rating_level, include_average, en nog veel meer. Zie servicedocumentatie voor volledige lijst. Laat leeg om standaardinstellingen te gebruiken (today, interval resolution, array of objects)."
|
||
},
|
||
"submit": "Configuratie voltooien"
|
||
}
|
||
},
|
||
"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"
|
||
},
|
||
"chart_data_export": {
|
||
"name": "Grafiek Data Export"
|
||
}
|
||
}
|
||
},
|
||
"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": {
|
||
"get_apexcharts_yaml": {
|
||
"name": "ApexCharts-kaart YAML ophalen",
|
||
"description": "Retourneert een kant-en-klaar YAML-fragment voor een ApexCharts-kaart die Tibber-prijzen voor de geselecteerde dag visualiseert. Gebruik dit om eenvoudig een vooraf geconfigureerd diagram aan je dashboard toe te voegen. De YAML gebruikt de get_chartdata-service voor gegevens.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Invoer-ID",
|
||
"description": "Het configuratie-invoer-ID voor de Tibber-integratie."
|
||
},
|
||
"day": {
|
||
"name": "Dag",
|
||
"description": "Welke dag gevisualiseerd moet worden (gisteren, vandaag of morgen)."
|
||
},
|
||
"level_type": {
|
||
"name": "Niveautype",
|
||
"description": "Selecteer welke prijsniveauclassificatie gevisualiseerd moet worden: 'rating_level' (laag/normaal/hoog op basis van jouw geconfigureerde drempelwaarden) of 'level' (Tibber API-niveaus: zeer goedkoop/goedkoop/normaal/duur/zeer duur)."
|
||
}
|
||
}
|
||
},
|
||
"get_chartdata": {
|
||
"name": "Haal grafiekgegevens op",
|
||
"description": "Geeft prijsgegevens terug in een eenvoudig grafiekvriendelijk formaat compatibel met de Tibber Core-integratie outputstructuur. Perfect voor gebruik met populaire grafiekkaarten zoals ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card of de ingebouwde History Graph Card. Veldnamen en gegevensstructuur kunnen worden aangepast aan de vereisten van je grafiek.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Item-ID",
|
||
"description": "De config-item-ID voor de Tibber-integratie."
|
||
},
|
||
"day": {
|
||
"name": "Dag",
|
||
"description": "Voor welke dag(en) moeten prijzen worden opgehaald. Je kunt meerdere dagen selecteren. Als niet opgegeven, worden alle beschikbare gegevens geretourneerd (vandaag + morgen indien beschikbaar)."
|
||
},
|
||
"resolution": {
|
||
"name": "Resolutie",
|
||
"description": "Tijdsresolutie voor de geretourneerde gegevens. Opties: 'interval' (standaard, 15-minuten intervallen, 96 datapunten per dag), 'hourly' (uurgemiddelden, 24 datapunten per dag)."
|
||
},
|
||
"output_format": {
|
||
"name": "Uitvoerformaat",
|
||
"description": "Uitvoerformaat voor de geretourneerde gegevens. Opties: 'array_of_objects' (standaard, array van objecten met aanpasbare veldnamen), 'array_of_arrays' (array van [tijdstempel, prijs]-arrays met afsluitend null-punt voor stepline-grafieken)."
|
||
},
|
||
"array_fields": {
|
||
"name": "Array-velden (alleen Array van arrays)",
|
||
"description": "[ALLEEN VOOR Array van arrays FORMAAT] Definieer welke velden moeten worden opgenomen. Gebruik veldnamen tussen accolades, gescheiden door komma's. Beschikbare velden: start_time, price_per_kwh, level, rating_level, average. Velden worden automatisch ingeschakeld, zelfs als include_*-opties niet zijn ingesteld. Laat leeg voor standaard (alleen tijdstempel en prijs)."
|
||
},
|
||
"minor_currency": {
|
||
"name": "Kleine valuta-eenheid",
|
||
"description": "Retourneer prijzen in kleine valuta-eenheden (cent voor EUR, øre voor NOK/SEK) in plaats van grote valuta-eenheden. Standaard uitgeschakeld."
|
||
},
|
||
"round_decimals": {
|
||
"name": "Decimalen afronden",
|
||
"description": "Aantal decimalen om prijzen op af te ronden (0-10). Indien niet opgegeven, wordt de standaardprecisie gebruikt (4 decimalen voor grote valuta, 2 voor kleine valuta-eenheid)."
|
||
},
|
||
"include_level": {
|
||
"name": "Prijsniveau opnemen (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Voeg het Tibber-prijsniveauveld (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) toe aan elk gegevenspunt."
|
||
},
|
||
"include_rating_level": {
|
||
"name": "Prijsbeoordeling opnemen (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Voeg het berekende prijsbeoordelingsveld (LOW, NORMAL, HIGH) toe op basis van jouw geconfigureerde drempels aan elk gegevenspunt."
|
||
},
|
||
"include_average": {
|
||
"name": "Gemiddelde opnemen (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Dagelijkse gemiddelde prijs opnemen in elk gegevenspunt ter vergelijking."
|
||
},
|
||
"level_filter": {
|
||
"name": "Prijsniveaufilter",
|
||
"description": "Intervallen filteren om alleen specifieke Tibber-prijsniveaus op te nemen (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Indien niet opgegeven, worden alle niveaus opgenomen."
|
||
},
|
||
"rating_level_filter": {
|
||
"name": "Prijsbeoordeling Filter",
|
||
"description": "Filter intervallen om alleen specifieke prijsbeoordelingen op te nemen (LOW, NORMAL, HIGH). Als dit niet is opgegeven, worden alle beoordelingen opgenomen."
|
||
},
|
||
"period_filter": {
|
||
"name": "Periode Filter",
|
||
"description": "Filter intervallen om alleen die binnen Beste prijs- of Piek prijs-perioden op te nemen. Opties: 'best_price' (alleen intervallen in Beste prijs-perioden), 'peak_price' (alleen intervallen in Piek prijs-perioden). Als niet opgegeven, worden alle intervallen opgenomen. Gebruikt vooraf berekende periodegegevens van binaire sensoren."
|
||
},
|
||
"insert_nulls": {
|
||
"name": "NULL-waarden invoegen",
|
||
"description": "Beheer het invoegen van NULL-waarden voor gefilterde gegevens. 'none' (standaard): Geen NULL-waarden, alleen overeenkomende intervallen. 'segments': Voeg NULL-punten toe bij segmentgrenzen voor schone gaten in grafieken (aanbevolen voor traplijngrafieken). 'all': Voeg NULL in voor alle tijdstempels waarbij het filter niet overeenkomt (handig voor continue tijdreeksvisualisatie)."
|
||
},
|
||
"add_trailing_null": {
|
||
"name": "Voeg afsluitend null-punt toe",
|
||
"description": "[BEIDE FORMATEN] Voeg een laatste datapunt met null-waarden (behalve tijdstempel) toe aan het einde. Sommige diagrambibliotheken hebben dit nodig om extrapolatie/interpolatie naar de rand van het viewport te voorkomen bij stepline-weergave. Laat uitgeschakeld tenzij je diagram dit vereist."
|
||
},
|
||
"start_time_field": {
|
||
"name": "Starttijd-veldnaam (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Aangepaste naam voor het starttijd-veld in de uitvoer. Standaard is 'start_time' als niet opgegeven."
|
||
},
|
||
"end_time_field": {
|
||
"name": "Eindtijd-veldnaam (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Aangepaste naam voor het eindtijd-veld in de uitvoer. Standaard is 'end_time' als niet opgegeven. Alleen gebruikt met period_filter."
|
||
},
|
||
"price_field": {
|
||
"name": "Prijsveld-naam (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Aangepaste naam voor het prijsveld in de uitvoer. Standaard is 'price_per_kwh'."
|
||
},
|
||
"level_field": {
|
||
"name": "Prijsniveauveld-naam (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Aangepaste naam voor het prijsniveauveld in de uitvoer. Standaard is 'level'. Alleen gebruikt wanneer include_level is ingeschakeld."
|
||
},
|
||
"rating_level_field": {
|
||
"name": "Prijsbeoordelingsveld-naam (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Aangepaste naam voor het prijsbeoordelingsveld in de uitvoer. Standaard is 'rating_level'. Alleen gebruikt wanneer include_rating_level is ingeschakeld."
|
||
},
|
||
"average_field": {
|
||
"name": "Gemiddelde veld-naam (alleen Array van objecten)",
|
||
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Aangepaste naam voor het gemiddelde veld in de uitvoer. Standaard is 'average'. Alleen gebruikt wanneer include_average is ingeschakeld."
|
||
},
|
||
"data_key": {
|
||
"name": "Gegevenssleutel (beide formaten)",
|
||
"description": "[BEIDE FORMATEN] Aangepaste naam voor de gegevenssleutel op het hoogste niveau in het antwoord. Standaard is 'data' als niet opgegeven. Voor ApexCharts-compatibiliteit met Array van arrays, gebruik 'points'."
|
||
}
|
||
}
|
||
},
|
||
"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": {
|
||
"day": {
|
||
"options": {
|
||
"yesterday": "Gisteren",
|
||
"today": "Vandaag",
|
||
"tomorrow": "Morgen"
|
||
}
|
||
},
|
||
"resolution": {
|
||
"options": {
|
||
"interval": "Interval (15 min)",
|
||
"hourly": "Per uur"
|
||
}
|
||
},
|
||
"output_format": {
|
||
"options": {
|
||
"array_of_objects": "Array van objecten",
|
||
"array_of_arrays": "Array van arrays"
|
||
}
|
||
},
|
||
"level_type": {
|
||
"options": {
|
||
"rating_level": "Beoordelingsniveau (laag/normaal/hoog)",
|
||
"level": "Tibber-niveau (zeer goedkoop tot zeer duur)"
|
||
}
|
||
},
|
||
"level_filter": {
|
||
"options": {
|
||
"very_cheap": "Zeer goedkoop",
|
||
"cheap": "Goedkoop",
|
||
"normal": "Normaal",
|
||
"expensive": "Duur",
|
||
"very_expensive": "Zeer duur"
|
||
}
|
||
},
|
||
"rating_level_filter": {
|
||
"options": {
|
||
"low": "Laag",
|
||
"normal": "Normaal",
|
||
"high": "Hoog"
|
||
}
|
||
},
|
||
"insert_nulls": {
|
||
"options": {
|
||
"none": "Geen",
|
||
"segments": "Segmenten",
|
||
"all": "Alle"
|
||
}
|
||
},
|
||
"period_filter": {
|
||
"options": {
|
||
"best_price": "Beste prijsperioden",
|
||
"peak_price": "Piek prijsperioden"
|
||
}
|
||
},
|
||
"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"
|
||
}
|