feat(services): rewrite ApexCharts service for modern workflow

Complete overhaul of the ApexCharts integration service layer to support
modern chart card workflows with flexible data formatting and filtering.

Replaced services:
- Removed: get_price, get_apexcharts_data (legacy, entity-based)
- Added: get_chartdata (flexible data service)
- Improved: get_apexcharts_yaml (now uses get_chartdata internally)

New get_chartdata service features:
- Multiple output formats (array_of_objects, array_of_arrays)
- Customizable field names for chart compatibility
- Resolution options (15-min intervals, hourly averages)
- Advanced filtering (level_filter, rating_level_filter)
- NULL insertion modes (none, segments, all) for clean gaps
- Minor currency support (cents/øre) with custom rounding
- Optional fields (level, rating_level, average)
- Multi-day support (yesterday/today/tomorrow)

Enhanced get_apexcharts_yaml service:
- Direct entry_id parameter (no entity_id lookup needed)
- Uses get_chartdata with WebSocket API (data_generator)
- Improved ApexCharts configuration:
  * Gradient fill (70% opacity → 20%)
  * Grid styling with dashed lines
  * Zoom & Pan tools (animations disabled for performance)
  * Optimized legend (top-left, compact markers)
  * Y-axis auto-scaling (min: 0 for visibility, supports negative prices)
  * 2 decimal places (improved precision)
  * Browser locale formatting (automatic comma/point)
  * insert_nulls='segments' for clean gaps between levels
- Multi-language support (translated titles, series names)
- Day selection (yesterday/today/tomorrow with correct span config)

Service translations:
- Added comprehensive field descriptions (all 5 languages: de, en, nb, nl, sv)
- Selector translations for all options (day, resolution, output_format, etc.)
- ApexCharts title translations in custom_translations/

Technical improvements:
- Hourly aggregation uses exact 4-interval windows (:00/:15/:30/:45)
- Level/rating aggregation follows sensor logic (aggregate_level_data, aggregate_rating_data)
- Midnight extension for last interval of filtered data (seamless day transitions)
- Case-insensitive filter matching (normalized to uppercase)
- Ruff complexity fixed (extracted _get_level_translation helper)

Impact: Users can now generate production-ready ApexCharts YAML with a single
service call, or use get_chartdata flexibly with any chart card (ApexCharts,
Plotly, Mini Graph, etc.). Supports complex filtering scenarios (e.g., "show
only LOW rating periods") with clean visual gaps. Full multi-language support.
This commit is contained in:
Julian Pawlowski 2025-11-16 23:52:36 +00:00
parent 7bc83ed3e2
commit fb70f29ac9
12 changed files with 1648 additions and 571 deletions

View file

@ -1,4 +1,8 @@
{
"apexcharts": {
"title_rating_level": "Preisphasen Tagesverlauf",
"title_level": "Preisniveau"
},
"sensor": {
"current_interval_price": {
"description": "Der aktuelle Strompreis pro kWh",

View file

@ -1,4 +1,8 @@
{
"apexcharts": {
"title_rating_level": "Price Phases Daily Progress",
"title_level": "Price Level"
},
"sensor": {
"current_interval_price": {
"description": "The current electricity price per kWh",

View file

@ -1,4 +1,8 @@
{
"apexcharts": {
"title_rating_level": "Prisfaser daglig fremgang",
"title_level": "Prisnivå"
},
"sensor": {
"current_interval_price": {
"description": "Den nåværende elektrisitetsprisen per kWh",

View file

@ -1,4 +1,8 @@
{
"apexcharts": {
"title_rating_level": "Prijsfasen dagelijkse voortgang",
"title_level": "Prijsniveau"
},
"sensor": {
"current_interval_price": {
"description": "De huidige elektriciteitsprijs per kWh",

View file

@ -1,4 +1,8 @@
{
"apexcharts": {
"title_rating_level": "Prisfaser daglig framsteg",
"title_level": "Prisnivå"
},
"sensor": {
"current_interval_price": {
"description": "Det nuvarande elpriset per kWh",

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
get_price:
name: Get Tibber Price Info
get_apexcharts_yaml:
name: Get ApexCharts Card YAML
description: >-
Returns merged priceInfo and priceRating for the requested day and config entry. Optionally, you can simulate the response as if it were a specific time-of-day (time, format HH:mm or HH:mm:ss), which only affects the previous/current/next fields, not the prices list. The simulated time is always combined with the selected day.
Returns a ready-to-copy YAML snippet for an ApexCharts card visualizing Tibber Prices for the selected day. Use this to easily add a pre-configured chart to your dashboard. The YAML will use the get_chartdata service for data.
fields:
entry_id:
name: Entry ID
@ -11,43 +11,10 @@ get_price:
selector:
config_entry:
integration: tibber_prices
day:
name: Day
description: Which day to fetch prices for (yesterday, today, or tomorrow).
required: false
default: today
example: today
selector:
select:
options:
- yesterday
- today
- tomorrow
time:
name: Time
description: >-
Time-of-day in HH:mm or HH:mm:ss format. If provided, simulates the response as if this were the current time for interval selection (previous/current/next) for the selected day. Does not filter the prices list. Example: "15:00" or "15:00:00".
required: false
selector:
time:
get_apexcharts_data:
name: Get ApexCharts Data
description: >-
Returns data for an ApexCharts card visualizing Tibber Prices for the selected day.
fields:
entity_id:
name: Entity ID
description: The entity_id for the Tibber price sensor to determine the config entry ID.
required: true
example: sensor.tibber_price_today
selector:
entity:
domain: sensor
integration: tibber_prices
day:
name: Day
description: Which day to visualize (yesterday, today, or tomorrow).
required: true
required: false
default: today
example: today
selector:
@ -56,61 +23,226 @@ get_apexcharts_data:
- yesterday
- today
- tomorrow
translation_key: day
level_type:
name: Level Type
description: >-
Select what data to return: 'rating_level' (the current official Tibber integration price level: LOW/NORMAL/HIGH) or 'level' (the original Tibber API price level: VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE).
required: true
Select which price level classification to visualize: 'rating_level' (LOW/NORMAL/HIGH based on your configured thresholds) or 'level' (Tibber API levels: VERY_CHEAP/CHEAP/NORMAL/EXPENSIVE/VERY_EXPENSIVE).
required: false
default: rating_level
example: rating_level
selector:
select:
options:
- level
- rating_level
level_key:
name: Level Key
description: >-
Select the key to use for the level type: For 'rating_level', use LOW/NORMAL/HIGH. For 'level', use VERY_CHEAP/CHEAP/LOW/NORMAL/HIGH/EXPENSIVE/VERY_EXPENSIVE.
required: true
default: NORMAL
example: NORMAL
selector:
select:
options:
- VERY_CHEAP
- CHEAP
- LOW
- NORMAL
- HIGH
- EXPENSIVE
- VERY_EXPENSIVE
get_apexcharts_yaml:
name: Get ApexCharts Card YAML
- level
translation_key: level_type
get_chartdata:
name: Get Chart Data
description: >-
Returns a ready-to-copy YAML snippet for an ApexCharts card visualizing Tibber Prices for the selected day. Use this to easily add a pre-configured chart to your dashboard. The YAML will use the get_price service for data.
Returns price data in a simple chart-friendly format compatible with the Tibber Core integration output structure. Perfect for use with popular chart cards like ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card, or the built-in History Graph Card. Field names and data structure can be customized to match your specific chart requirements.
fields:
entity_id:
name: Entity ID
description: The entity_id for the Tibber price sensor (used for context, but the chart fetches data via the service).
# === Basic Settings (for all formats) ===
entry_id:
name: Entry ID
description: The config entry ID for the Tibber integration.
required: true
example: sensor.tibber_price_today
example: "1234567890abcdef"
selector:
entity:
domain: sensor
config_entry:
integration: tibber_prices
day:
name: Day
description: Which day to visualize (yesterday, today, or tomorrow).
description: Which day(s) to fetch prices for. You can select multiple days. If not specified, returns all available data (today + tomorrow if available).
required: false
default: today
example: today
selector:
select:
options:
- yesterday
- today
- tomorrow
multiple: true
translation_key: day
resolution:
name: Resolution
description: >-
Time resolution for the returned data. Options: 'interval' (default, 15-minute intervals, 96 points per day), 'hourly' (hourly averages, 24 points per day).
required: false
default: interval
example: hourly
selector:
select:
options:
- interval
- hourly
translation_key: resolution
minor_currency:
name: Minor Currency
description: >-
Return prices in minor currency units (cents for EUR, øre for NOK/SEK) instead of major currency units. Disabled by default.
required: false
default: false
example: true
selector:
boolean:
round_decimals:
name: Round Decimals
description: >-
Number of decimal places to round prices to (0-10). If not specified, uses default precision (4 decimals for major currency, 2 for minor currency).
required: false
example: 2
selector:
number:
min: 0
max: 10
mode: box
# === Filters (for all formats) ===
level_filter:
name: Level Filter
description: >-
Filter intervals to include only specific Tibber price levels (very_cheap, cheap, normal, expensive, very_expensive). If not specified, all levels are included.
required: false
selector:
select:
options:
- very_cheap
- cheap
- normal
- expensive
- very_expensive
multiple: true
translation_key: level_filter
rating_level_filter:
name: Rating Level Filter
description: >-
Filter intervals to include only specific rating levels (low, normal, high). If not specified, all rating levels are included.
required: false
selector:
select:
options:
- low
- normal
- high
multiple: true
translation_key: rating_level_filter
# === NULL Insertion ===
insert_nulls:
name: Insert NULL Values
description: >-
Control NULL value insertion for filtered data. 'none' (default): No NULL values, only matching intervals. 'segments': Add NULL points at segment boundaries for clean gaps in charts (recommended for stepline charts). 'all': Insert NULL for all timestamps where filter doesn't match (useful for continuous time series visualization).
required: false
default: none
selector:
select:
options:
- none
- segments
- all
translation_key: insert_nulls
# === Output Format Selection ===
output_format:
name: Output Format
description: >-
Output format for the returned data. Options: 'array_of_objects' (default, array of objects with customizable field names), 'array_of_arrays' (array of [timestamp, price] arrays).
required: false
default: array_of_objects
example: array_of_objects
selector:
select:
options:
- array_of_objects
- array_of_arrays
translation_key: output_format
# === For array_of_arrays format ===
add_trailing_null:
name: Add Trailing Null Point
description: >-
[BOTH FORMATS] Add a final data point with null values (except timestamp) at the end. Some chart libraries need this to prevent extrapolation/interpolation to the viewport edge when using stepline rendering. Leave disabled unless your chart requires it.
required: false
default: false
selector:
boolean:
array_fields:
name: Array Fields (array_of_arrays only)
description: >-
[ONLY FOR array_of_arrays FORMAT] Define which fields to include. Use field names in curly braces, separated by commas. Available fields: start_time, price_per_kwh, level, rating_level, average. Fields will be automatically enabled even if include_* options are not set. Leave empty for default (timestamp and price only).
required: false
selector:
text:
# === For array_of_objects format - Include Fields ===
include_level:
name: Include Level (array_of_objects only)
description: >-
[ONLY FOR array_of_objects FORMAT] Include the Tibber price level field (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) in each data point.
required: false
default: false
example: true
selector:
boolean:
include_rating_level:
name: Include Rating Level (array_of_objects only)
description: >-
[ONLY FOR array_of_objects FORMAT] Include the calculated rating level field (LOW, NORMAL, HIGH) based on your configured thresholds in each data point.
required: false
default: false
example: true
selector:
boolean:
include_average:
name: Include Average (array_of_objects only)
description: >-
[ONLY FOR array_of_objects FORMAT] Include the daily average price in each data point for comparison.
required: false
default: false
selector:
boolean:
# === For array_of_objects format - Customize Field Names ===
timestamp_field:
name: Timestamp Field Name (array_of_objects only)
description: >-
[ONLY FOR array_of_objects FORMAT] Custom name for the timestamp field in the output. Defaults to "start_time" if not specified.
required: false
example: time
selector:
text:
price_field:
name: Price Field Name (array_of_objects only)
description: >-
[ONLY FOR array_of_objects FORMAT] Custom name for the price field in the output. Defaults to "price_per_kwh" if not specified.
required: false
example: price
selector:
text:
level_field:
name: Level Field Name (array_of_objects only)
description: >-
[ONLY FOR array_of_objects FORMAT] Custom name for the level field in the output. Defaults to "level" if not specified. Only used when include_level is enabled.
required: false
selector:
text:
rating_level_field:
name: Rating Level Field Name (array_of_objects only)
description: >-
[ONLY FOR array_of_objects FORMAT] Custom name for the rating_level field in the output. Defaults to "rating_level" if not specified. Only used when include_rating_level is enabled.
required: false
selector:
text:
average_field:
name: Average Field Name (array_of_objects only)
description: >-
[ONLY FOR array_of_objects FORMAT] Custom name for the average field in the output. Defaults to "average" if not specified. Only used when include_average is enabled.
required: false
selector:
text:
# === Top-Level Response Key (both formats) ===
data_key:
name: Data Key (both formats)
description: >-
[BOTH FORMATS] Custom name for the top-level data key in the response. Defaults to "data" if not specified. For ApexCharts compatibility with array_of_arrays, use "points".
required: false
example: prices
selector:
text:
refresh_user_data:
name: Refresh User Data
description: >-

View file

@ -668,6 +668,110 @@
}
},
"services": {
"get_apexcharts_yaml": {
"name": "ApexCharts-Karten-YAML abrufen",
"description": "Gibt einen fertigen YAML-Schnipsel für eine ApexCharts-Karte zurück, die Tibber-Preise für den ausgewählten Tag visualisiert. Verwende dies, um ganz einfach ein vorkonfiguriertes Diagramm zu deinem Dashboard hinzuzufügen. Das YAML verwendet den get_chartdata-Service für Daten.",
"fields": {
"entry_id": {
"name": "Eintrags-ID",
"description": "Die Konfigurationseintrags-ID für die Tibber-Integration."
},
"day": {
"name": "Tag",
"description": "Welcher Tag visualisiert werden soll (gestern, heute oder morgen)."
},
"level_type": {
"name": "Stufen-Typ",
"description": "Wähle, welche Preisstufen-Klassifizierung visualisiert werden soll: 'rating_level' (niedrig/normal/hoch basierend auf deinen konfigurierten Schwellenwerten) oder 'level' (Tibber-API-Stufen: sehr günstig/günstig/normal/teuer/sehr teuer)."
}
}
},
"get_chartdata": {
"name": "Diagrammdaten abrufen",
"description": "Gibt Preisdaten in einem einfachen, diagrammfreundlichen Format kompatibel mit der Tibber Core Integration zurück. Perfekt für beliebte Diagramm-Karten wie ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card oder die eingebaute History Graph Card. Feldnamen und Datenstruktur können an die Anforderungen deines Diagramms angepasst werden.",
"fields": {
"entry_id": {
"name": "Eintrag-ID",
"description": "Die Konfigurationseintrag-ID für die Tibber-Integration."
},
"day": {
"name": "Tag",
"description": "Für welche(n) Tag(e) sollen Preise abgerufen werden. Du kannst mehrere Tage auswählen. Falls nicht angegeben, werden alle verfügbaren Daten zurückgegeben (heute + morgen falls verfügbar)."
},
"resolution": {
"name": "Auflösung",
"description": "Zeitauflösung für die zurückgegebenen Daten. Optionen: 'interval' (Standard, 15-Minuten-Intervalle, 96 Datenpunkte pro Tag), 'hourly' (stündliche Durchschnitte, 24 Datenpunkte pro Tag)."
},
"output_format": {
"name": "Ausgabeformat",
"description": "Ausgabeformat für die zurückgegebenen Daten. Optionen: 'array_of_objects' (Standard, Array von Objekten mit anpassbaren Feldnamen), 'array_of_arrays' (Array von [Zeitstempel, Preis]-Arrays mit abschließendem Null-Punkt für Stepline-Charts)."
},
"array_fields": {
"name": "Array-Felder (nur Array von Arrays)",
"description": "[NUR FÜR Array von Arrays FORMAT] Definiere, welche Felder im array_of_arrays-Format enthalten sein sollen. Verwende Feldnamen in geschweiften Klammern, getrennt durch Kommas. Verfügbare Felder: start_time, price_per_kwh, level, rating_level, average. Felder werden automatisch aktiviert, auch wenn include_*-Optionen nicht gesetzt sind. Leer lassen für Standard (nur Zeitstempel und Preis)."
},
"minor_currency": {
"name": "Kleinere Währungseinheit",
"description": "Gibt Preise in kleineren Währungseinheiten zurück (Cent für EUR, Øre für NOK/SEK) statt in Hauptwährungseinheiten. Standardmäßig deaktiviert."
},
"round_decimals": {
"name": "Dezimalstellen runden",
"description": "Anzahl der Dezimalstellen, auf die Preise gerundet werden sollen (0-10). Falls nicht angegeben, wird die Standardgenauigkeit verwendet (4 Dezimalstellen für Hauptwährung, 2 für kleinere Währungseinheit)."
},
"include_level": {
"name": "Preisniveau einschließen (nur Array von Objekten)",
"description": "[NUR FÜR Array von Objekten FORMAT] Fügt das Tibber-Preisniveau (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) zu jedem Datenpunkt hinzu."
},
"include_rating_level": {
"name": "Preisbewertung einschließen (nur Array von Objekten)",
"description": "[NUR FÜR Array von Objekten FORMAT] Fügt die berechnete Preisbewertung (LOW, NORMAL, HIGH) basierend auf deinen konfigurierten Schwellwerten zu jedem Datenpunkt hinzu."
},
"include_average": {
"name": "Durchschnitt einschließen (nur Array von Objekten)",
"description": "[NUR FÜR Array von Objekten FORMAT] Den Tagesdurchschnittspreis in jedem Datenpunkt zum Vergleich einschließen."
},
"level_filter": {
"name": "Preisniveau-Filter",
"description": "Intervalle filtern, um nur bestimmte Tibber-Preisniveaus einzuschließen (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Falls nicht angegeben, werden alle Niveaus eingeschlossen."
},
"rating_level_filter": {
"name": "Preisbewertungs-Filter",
"description": "Intervalle filtern, um nur bestimmte Preisbewertungen einzuschließen (LOW, NORMAL, HIGH). Falls nicht angegeben, werden alle Bewertungen eingeschlossen."
},
"insert_nulls": {
"name": "NULL-Werte einfügen",
"description": "Steuert das Einfügen von NULL-Werten für gefilterte Daten. 'none' (Standard): Keine NULL-Werte, nur passende Intervalle. 'segments': NULL-Punkte an Segmentgrenzen für saubere Lücken in Diagrammen hinzufügen (empfohlen für Stufenliniendiagramme). 'all': NULL für alle Zeitstempel einfügen, bei denen der Filter nicht übereinstimmt (nützlich für kontinuierliche Zeitreihenvisualisierung)."
},
"add_trailing_null": {
"name": "Abschließenden Null-Punkt hinzufügen",
"description": "[BEIDE FORMATE] Füge einen finalen Datenpunkt mit Null-Werten (außer Zeitstempel) am Ende hinzu. Manche Diagramm-Bibliotheken benötigen dies, um Extrapolation/Interpolation bis zum Rand des Anzeigebereichs bei Stufenliniendarstellung zu verhindern. Deaktiviert lassen, es sei denn, dein Diagramm erfordert es."
},
"timestamp_field": {
"name": "Zeitstempel-Feldname (nur Array von Objekten)",
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Zeitstempel-Feld in der Ausgabe. Standard ist 'start_time', falls nicht angegeben."
},
"price_field": {
"name": "Preis-Feldname (nur Array von Objekten)",
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Preis-Feld in der Ausgabe. Standard ist 'price_per_kwh', falls nicht angegeben."
},
"level_field": {
"name": "Preisniveau-Feldname (nur Array von Objekten)",
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Preisniveau-Feld in der Ausgabe. Standard ist 'level', falls nicht angegeben. Wird nur verwendet, wenn include_level aktiviert ist."
},
"rating_level_field": {
"name": "Preisbewertung-Feldname (nur Array von Objekten)",
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Preisbewertungs-Feld in der Ausgabe. Standard ist 'rating_level', falls nicht angegeben. Wird nur verwendet, wenn include_rating_level aktiviert ist."
},
"average_field": {
"name": "Durchschnitts-Feldname (nur Array von Objekten)",
"description": "[NUR FÜR Array von Objekten FORMAT] Benutzerdefinierter Name für das Durchschnitts-Feld in der Ausgabe. Standard ist 'average', falls nicht angegeben. Wird nur verwendet, wenn include_average aktiviert ist."
},
"data_key": {
"name": "Daten-Schlüssel (beide Formate)",
"description": "[BEIDE FORMATE] Benutzerdefinierter Name für den obersten Datenschlüssel in der Antwort. Standard ist 'data', falls nicht angegeben. Für ApexCharts-Kompatibilität mit Array von Arrays verwende 'points'."
}
}
},
"refresh_user_data": {
"name": "Benutzerdaten aktualisieren",
"description": "Erzwingt eine Aktualisierung der Benutzerdaten (Häuser, Profilinformationen) aus der Tibber API. Dies kann nützlich sein, nachdem Änderungen an deinem Tibber-Konto vorgenommen wurden oder bei der Fehlerbehebung von Verbindungsproblemen.",
@ -680,6 +784,54 @@
}
},
"selector": {
"day": {
"options": {
"yesterday": "Gestern",
"today": "Heute",
"tomorrow": "Morgen"
}
},
"resolution": {
"options": {
"interval": "Intervall (15 Min)",
"hourly": "Stündlich"
}
},
"output_format": {
"options": {
"array_of_objects": "Array aus Objekten",
"array_of_arrays": "Array aus Arrays"
}
},
"level_type": {
"options": {
"rating_level": "Preisbewertung (niedrig/normal/hoch)",
"level": "Preisniveau (sehr günstig bis sehr teuer)"
}
},
"level_filter": {
"options": {
"very_cheap": "Sehr günstig",
"cheap": "Günstig",
"normal": "Normal",
"expensive": "Teuer",
"very_expensive": "Sehr teuer"
}
},
"rating_level_filter": {
"options": {
"low": "Niedrig",
"normal": "Normal",
"high": "Hoch"
}
},
"insert_nulls": {
"options": {
"none": "Keine",
"segments": "Segmente",
"all": "Alle"
}
},
"volatility": {
"options": {
"low": "Niedrig",

View file

@ -664,6 +664,110 @@
}
},
"services": {
"get_apexcharts_yaml": {
"name": "Get ApexCharts Card YAML",
"description": "Returns a ready-to-copy YAML snippet for an ApexCharts card visualizing Tibber Prices for the selected day. Use this to easily add a pre-configured chart to your dashboard. The YAML will use the get_chartdata service for data.",
"fields": {
"entry_id": {
"name": "Entry ID",
"description": "The config entry ID for the Tibber integration."
},
"day": {
"name": "Day",
"description": "Which day to visualize (yesterday, today, or tomorrow)."
},
"level_type": {
"name": "Level Type",
"description": "Select which price level classification to visualize: 'rating_level' (low/normal/high based on your configured thresholds) or 'level' (Tibber API levels: very cheap/cheap/normal/expensive/very expensive)."
}
}
},
"get_chartdata": {
"name": "Get Chart Data",
"description": "Returns price data in a simple chart-friendly format compatible with the Tibber Core integration output structure. Perfect for use with popular chart cards like ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card, or the built-in History Graph Card. Field names and data structure can be customized to match your specific chart requirements.",
"fields": {
"entry_id": {
"name": "Entry ID",
"description": "The config entry ID for the Tibber integration."
},
"day": {
"name": "Day",
"description": "Which day(s) to fetch prices for. You can select multiple days. If not specified, returns all available data (today + tomorrow if available)."
},
"resolution": {
"name": "Resolution",
"description": "Time resolution for the returned data. Options: 'interval' (default, 15-minute intervals, 96 points per day), 'hourly' (hourly averages, 24 points per day)."
},
"output_format": {
"name": "Output Format",
"description": "Output format for the returned data. Options: 'array_of_objects' (default, array of objects with customizable field names), 'array_of_arrays' (array of [timestamp, price] arrays with trailing null point for stepline charts)."
},
"array_fields": {
"name": "Array Fields (Array of Arrays only)",
"description": "[ONLY FOR Array of Arrays FORMAT] Define which fields to include. Use field names in curly braces, separated by commas. Available fields: start_time, price_per_kwh, level, rating_level, average. Fields will be automatically enabled even if include_* options are not set. Leave empty for default (timestamp and price only)."
},
"minor_currency": {
"name": "Minor Currency",
"description": "Return prices in minor currency units (cents for EUR, øre for NOK/SEK) instead of major currency units. Disabled by default."
},
"round_decimals": {
"name": "Round Decimals",
"description": "Number of decimal places to round prices to (0-10). If not specified, uses default precision (4 decimals for major currency, 2 for minor currency)."
},
"include_level": {
"name": "Include Level (Array of Objects only)",
"description": "[ONLY FOR Array of Objects FORMAT] Include the Tibber price level field (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) in each data point."
},
"include_rating_level": {
"name": "Include Rating Level (Array of Objects only)",
"description": "[ONLY FOR Array of Objects FORMAT] Include the calculated rating level field (LOW, NORMAL, HIGH) based on your configured thresholds in each data point."
},
"include_average": {
"name": "Include Average (Array of Objects only)",
"description": "[ONLY FOR Array of Objects FORMAT] Include the daily average price in each data point for comparison."
},
"level_filter": {
"name": "Level Filter",
"description": "Filter intervals to include only specific Tibber price levels (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). If not specified, all levels are included."
},
"rating_level_filter": {
"name": "Rating Level Filter",
"description": "Filter intervals to include only specific rating levels (LOW, NORMAL, HIGH). If not specified, all rating levels are included."
},
"insert_nulls": {
"name": "Insert NULL Values",
"description": "Control NULL value insertion for filtered data. 'none' (default): No NULL values, only matching intervals. 'segments': Add NULL points at segment boundaries for clean gaps in charts (recommended for stepline charts). 'all': Insert NULL for all timestamps where filter doesn't match (useful for continuous time series visualization)."
},
"add_trailing_null": {
"name": "Add Trailing Null Point",
"description": "[BOTH FORMATS] Add a final data point with null values (except timestamp) at the end. Some chart libraries need this to prevent extrapolation/interpolation to the viewport edge when using stepline rendering. Leave disabled unless your chart requires it."
},
"timestamp_field": {
"name": "Timestamp Field Name (Array of Objects only)",
"description": "[ONLY FOR Array of Objects FORMAT] Custom name for the timestamp field in the output. Defaults to 'start_time' if not specified."
},
"price_field": {
"name": "Price Field Name (Array of Objects only)",
"description": "[ONLY FOR Array of Objects FORMAT] Custom name for the price field in the output. Defaults to 'price_per_kwh' if not specified."
},
"level_field": {
"name": "Level Field Name (Array of Objects only)",
"description": "[ONLY FOR Array of Objects FORMAT] Custom name for the level field in the output. Defaults to 'level' if not specified. Only used when include_level is enabled."
},
"rating_level_field": {
"name": "Rating Level Field Name (Array of Objects only)",
"description": "[ONLY FOR Array of Objects FORMAT] Custom name for the rating_level field in the output. Defaults to 'rating_level' if not specified. Only used when include_rating_level is enabled."
},
"average_field": {
"name": "Average Field Name (Array of Objects only)",
"description": "[ONLY FOR Array of Objects FORMAT] Custom name for the average field in the output. Defaults to 'average' if not specified. Only used when include_average is enabled."
},
"data_key": {
"name": "Data Key (both formats)",
"description": "[BOTH FORMATS] Custom name for the top-level data key in the response. Defaults to 'data' if not specified. For ApexCharts compatibility with Array of Arrays, use 'points'."
}
}
},
"refresh_user_data": {
"name": "Refresh User Data",
"description": "Forces a refresh of the user data (homes, profile information) from the Tibber API. This can be useful after making changes to your Tibber account or when troubleshooting connectivity issues.",
@ -676,6 +780,54 @@
}
},
"selector": {
"day": {
"options": {
"yesterday": "Yesterday",
"today": "Today",
"tomorrow": "Tomorrow"
}
},
"resolution": {
"options": {
"interval": "Interval (15 min)",
"hourly": "Hourly"
}
},
"output_format": {
"options": {
"array_of_objects": "Array of Objects",
"array_of_arrays": "Array of Arrays"
}
},
"level_type": {
"options": {
"rating_level": "Rating Level (low/normal/high)",
"level": "Tibber Level (very cheap to very expensive)"
}
},
"level_filter": {
"options": {
"very_cheap": "Very cheap",
"cheap": "Cheap",
"normal": "Normal",
"expensive": "Expensive",
"very_expensive": "Very expensive"
}
},
"rating_level_filter": {
"options": {
"low": "Low",
"normal": "Normal",
"high": "High"
}
},
"insert_nulls": {
"options": {
"none": "None",
"segments": "Segments",
"all": "All"
}
},
"volatility": {
"options": {
"low": "Low",

View file

@ -664,6 +664,110 @@
}
},
"services": {
"get_apexcharts_yaml": {
"name": "Hent ApexCharts-kort YAML",
"description": "Returnerer en klar-til-kopier YAML-snippet for et ApexCharts-kort som visualiserer Tibber-priser for den valgte dagen. Bruk dette for å enkelt legge til et forhåndskonfigurert diagram til dashboardet ditt. YAML vil bruke get_chartdata-tjenesten for data.",
"fields": {
"entry_id": {
"name": "Oppførings-ID",
"description": "Konfigureringsoppførings-IDen for Tibber-integrasjonen."
},
"day": {
"name": "Dag",
"description": "Hvilken dag som skal visualiseres (i går, i dag eller i morgen)."
},
"level_type": {
"name": "Nivåtype",
"description": "Velg hvilken prisnivåklassifisering som skal visualiseres: 'rating_level' (lav/normal/høy basert på dine konfigurerte terskelverdier) eller 'level' (Tibber API-nivåer: veldig billig/billig/normal/dyr/veldig dyr)."
}
}
},
"get_chartdata": {
"name": "Hent diagramdata",
"description": "Returnerer prisdata i et enkelt diagramvennlig format kompatibelt med Tibber Core-integrasjonens utdatastruktur. Perfekt for bruk med populære diagramkort som ha-price-timeline-card, ApexCharts Card, Plotly Graph Card, Mini Graph Card eller den innebygde History Graph Card. Feltnavn og datastruktur kan tilpasses for å matche diagrammets krav.",
"fields": {
"entry_id": {
"name": "Oppførings-ID",
"description": "Konfig-oppførings-ID for Tibber-integrasjonen."
},
"day": {
"name": "Dag",
"description": "Hvilken dag(er) skal det hentes priser for. Du kan velge flere dager. Hvis ikke angitt, returneres alle tilgjengelige data (i dag + i morgen hvis tilgjengelig)."
},
"resolution": {
"name": "Oppløsning",
"description": "Tidsoppløsning for de returnerte dataene. Alternativer: 'interval' (standard, 15-minutters intervaller, 96 datapunkter per dag), 'hourly' (timegjennomsnitt, 24 datapunkter per dag)."
},
"output_format": {
"name": "Utdataformat",
"description": "Utdataformat for de returnerte dataene. Alternativer: 'array_of_objects' (standard, array av objekter med tilpassbare feltnavn), 'array_of_arrays' (array av [tidsstempel, pris]-arrays med avsluttende null-punkt for stepline-diagrammer)."
},
"array_fields": {
"name": "Array-felt (kun Array av arrays)",
"description": "[KUN FOR Array av arrays FORMAT] Definer hvilke felt som skal inkluderes. Bruk feltnavn i krøllparenteser, adskilt med komma. Tilgjengelige felt: start_time, price_per_kwh, level, rating_level, average. Felt vil automatisk aktiveres selv om include_*-alternativene ikke er satt. La stå tom for standard (kun tidsstempel og pris)."
},
"minor_currency": {
"name": "Mindre valutaenhet",
"description": "Returner priser i mindre valutaenheter (øre for NOK/SEK, cent for EUR) i stedet for hovedvalutaenheter. Deaktivert som standard."
},
"round_decimals": {
"name": "Rund desimaler",
"description": "Antall desimalplasser å runde priser til (0-10). Hvis ikke angitt, brukes standard presisjon (4 desimaler for hovedvaluta, 2 for mindre valutaenhet)."
},
"include_level": {
"name": "Inkluder prisnivå (kun Array av objekter)",
"description": "[KUN FOR Array av objekter FORMAT] Inkluder Tibber-prisnivåfeltet (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) i hvert datapunkt."
},
"include_rating_level": {
"name": "Inkluder prisvurdering (kun Array av objekter)",
"description": "[KUN FOR Array av objekter FORMAT] Inkluder det beregnede prisvurderingsfeltet (LOW, NORMAL, HIGH) basert på dine konfigurerte terskler i hvert datapunkt."
},
"include_average": {
"name": "Inkluder gjennomsnitt (kun Array av objekter)",
"description": "[KUN FOR Array av objekter FORMAT] Inkluder daglig gjennomsnittspris i hvert datapunkt for sammenligning."
},
"level_filter": {
"name": "Prisnivåfilter",
"description": "Filtrer intervaller for å bare inkludere spesifikke Tibber-prisnivåer (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Hvis ikke angitt, inkluderes alle nivåer."
},
"rating_level_filter": {
"name": "Prisvurderingsfilter",
"description": "Filtrer intervaller for å inkludere bare spesifikke prisvurderinger (LOW, NORMAL, HIGH). Hvis ikke spesifisert, inkluderes alle vurderinger."
},
"insert_nulls": {
"name": "Sett inn NULL-verdier",
"description": "Kontroller innsetting av NULL-verdier for filtrerte data. 'none' (standard): Ingen NULL-verdier, bare matchende intervaller. 'segments': Legg til NULL-punkter ved segmentgrenser for rene hull i diagrammer (anbefalt for trinnlinjediagrammer). 'all': Sett inn NULL for alle tidsstempler der filteret ikke samsvarer (nyttig for kontinuerlig tidsserievisualisering)."
},
"add_trailing_null": {
"name": "Legg til avsluttende null-punkt",
"description": "[BEGGE FORMATER] Legg til et siste datapunkt med null-verdier (unntatt tidsstempel) på slutten. Noen diagrambiblioteker trenger dette for å forhindre ekstrapolering/interpolering til kanten av visningsområdet ved stepline-gjengivelse. La være deaktivert med mindre diagrammet ditt krever det."
},
"timestamp_field": {
"name": "Tidsstempel-feltnavn (kun Array av objekter)",
"description": "[KUN FOR Array av objekter FORMAT] Tilpasset navn for tidsstempel-feltet i utdata. Standard er 'start_time' hvis ikke angitt."
},
"price_field": {
"name": "Prisfelt-navn (kun Array av objekter)",
"description": "[KUN FOR Array av objekter FORMAT] Tilpasset navn for prisfeltet i utdata. Standard er 'price_per_kwh'."
},
"level_field": {
"name": "Prisnivåfelt-navn (kun Array av objekter)",
"description": "[KUN FOR Array av objekter FORMAT] Tilpasset navn for prisnivåfeltet i utdata. Standard er 'level'. Brukes bare når include_level er aktivert."
},
"rating_level_field": {
"name": "Prisvurderingsfelt-navn (kun Array av objekter)",
"description": "[KUN FOR Array av objekter FORMAT] Tilpasset navn for prisvurderingsfeltet i utdata. Standard er 'rating_level'. Brukes bare når include_rating_level er aktivert."
},
"average_field": {
"name": "Gjennomsnittsfelt-navn (kun Array av objekter)",
"description": "[KUN FOR Array av objekter FORMAT] Tilpasset navn for gjennomsnittsfeltet i utdata. Standard er 'average'. Brukes bare når include_average er aktivert."
},
"data_key": {
"name": "Datanøkkel (begge formater)",
"description": "[BEGGE FORMATER] Tilpasset navn for datanøkkelen på toppnivå i svaret. Standard er 'data' hvis ikke angitt. For ApexCharts-kompatibilitet med Array av arrays, bruk 'points'."
}
}
},
"refresh_user_data": {
"name": "Oppdater brukerdata",
"description": "Tvinger en oppdatering av brukerdataene (hjem, profilinformasjon) fra Tibber API. Dette kan være nyttig etter å ha gjort endringer i Tibber-kontoen din eller ved feilsøking av tilkoblingsproblemer.",
@ -676,6 +780,54 @@
}
},
"selector": {
"day": {
"options": {
"yesterday": "I går",
"today": "I dag",
"tomorrow": "I morgen"
}
},
"resolution": {
"options": {
"interval": "Intervall (15 min)",
"hourly": "Hver time"
}
},
"output_format": {
"options": {
"array_of_objects": "Array av objekter",
"array_of_arrays": "Array av arrays"
}
},
"level_type": {
"options": {
"rating_level": "Vurderingsnivå (lav/normal/høy)",
"level": "Tibber-nivå (veldig billig til veldig dyr)"
}
},
"level_filter": {
"options": {
"very_cheap": "Veldig billig",
"cheap": "Billig",
"normal": "Normal",
"expensive": "Dyr",
"very_expensive": "Veldig dyr"
}
},
"rating_level_filter": {
"options": {
"low": "Lav",
"normal": "Normal",
"high": "Høy"
}
},
"insert_nulls": {
"options": {
"none": "Ingen",
"segments": "Segmenter",
"all": "Alle"
}
},
"volatility": {
"options": {
"low": "Lav",

View file

@ -664,6 +664,110 @@
}
},
"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."
},
"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."
},
"timestamp_field": {
"name": "Tijdstempel-veldnaam (alleen Array van objecten)",
"description": "[ALLEEN VOOR Array van objecten FORMAAT] Aangepaste naam voor het tijdstempel-veld in de uitvoer. Standaard is 'start_time' als niet opgegeven."
},
"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.",
@ -676,6 +780,54 @@
}
},
"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"
}
},
"volatility": {
"options": {
"low": "Laag",

View file

@ -664,6 +664,110 @@
}
},
"services": {
"get_apexcharts_yaml": {
"name": "Hämta ApexCharts-kort YAML",
"description": "Returnerar ett färdigt YAML-utklipp för ett ApexCharts-kort som visualiserar Tibber-priser för den valda dagen. Använd detta för att enkelt lägga till ett förkonfigurerat diagram till din instrumentpanel. YAML kommer att använda get_chartdata-tjänsten för data.",
"fields": {
"entry_id": {
"name": "Post-ID",
"description": "Konfigurationspost-ID för Tibber-integrationen."
},
"day": {
"name": "Dag",
"description": "Vilken dag som ska visualiseras (igår, idag eller imorgon)."
},
"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)."
}
}
},
"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.",
"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 alla tillgängliga data (idag + imorgon om tillgängligt)."
},
"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 (endast Array av arrayer)",
"description": "[ENDAST FÖR Array av arrayer FORMAT] 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)."
},
"minor_currency": {
"name": "Mindre valutaenhet",
"description": "Returnera priser i mindre valutaenheter (öre för SEK/NOK, cent för EUR) istället för huvudvalutaenheter. 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 huvudvaluta, 2 för mindre valutaenhet)."
},
"include_level": {
"name": "Inkludera prisnivå (endast Array av objekt)",
"description": "[ENDAST FÖR Array av objekt FORMAT] Inkludera Tibber-prisnivåfältet (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) i varje datapunkt."
},
"include_rating_level": {
"name": "Inkludera prisvärdering (endast Array av objekt)",
"description": "[ENDAST FÖR Array av objekt FORMAT] Inkludera det beräknade prisvärderingsfältet (LOW, NORMAL, HIGH) baserat på dina konfigurerade trösklar i varje datapunkt."
},
"include_average": {
"name": "Inkludera genomsnitt (endast Array av objekt)",
"description": "[ENDAST FÖR Array av objekt FORMAT] 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 (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Om inget anges inkluderas alla nivåer."
},
"rating_level_filter": {
"name": "Prisvärderingsfilter",
"description": "Filtrera intervall för att endast inkludera specifika prisvärderingar (LOW, NORMAL, HIGH). Om inte angivet inkluderas alla värderingar."
},
"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)."
},
"add_trailing_null": {
"name": "Lägg till avslutande null-punkt",
"description": "[BÅDA FORMAT] Lägg till en sista datapunkt med null-värden (förutom tidsstämpel) i slutet. Vissa diagrambibliotek behöver detta för att förhindra extrapolering/interpolering till kanten av vyområdet vid stepline-rendering. Lämna inaktiverad om inte ditt diagram kräver det."
},
"timestamp_field": {
"name": "Tidsstämpel-fältnamn (endast Array av objekt)",
"description": "[ENDAST FÖR Array av objekt FORMAT] Anpassat namn för tidsstämpel-fältet i utdata. Standard är 'start_time' om inte angivet."
},
"price_field": {
"name": "Prisfältsnamn (endast Array av objekt)",
"description": "[ENDAST FÖR Array av objekt FORMAT] Anpassat namn för prisfältet i utdata. Standard är 'price_per_kwh'."
},
"level_field": {
"name": "Prisnivåfältsnamn (endast Array av objekt)",
"description": "[ENDAST FÖR Array av objekt FORMAT] 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 (endast Array av objekt)",
"description": "[ENDAST FÖR Array av objekt FORMAT] 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 (endast Array av objekt)",
"description": "[ENDAST FÖR Array av objekt FORMAT] Anpassat namn för genomsnittsfältet i utdata. Standard är 'average'. Används endast när include_average är aktiverad."
},
"data_key": {
"name": "Datanyckel (båda formaten)",
"description": "[BÅDA FORMATEN] Anpassat namn för datanyckeln på toppnivå i svaret. Standard är 'data' om inte angivet. För ApexCharts-kompatibilitet med Array av arrayer, använd 'points'."
}
}
},
"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.",
@ -676,6 +780,54 @@
}
},
"selector": {
"day": {
"options": {
"yesterday": "Igår",
"today": "Idag",
"tomorrow": "Imorgon"
}
},
"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"
}
},
"volatility": {
"options": {
"low": "Låg",