Either I have found a bug or I am too stupid.
Here you can see a minimal example of what it should look like
Sometimes I am so confused that I rebuilt the example code directly.
And I also used the documentation code.
But still: No line
The best I have managed so far was this. Here I got a few lines for the first time. But of course they are nonsensical
Now yours. Bug or personal stupidity
Troon
(Troon)
January 8, 2025, 8:50am
3
The latter, Iâm afraid.
In your first screenshot, the dict_attribute
is merely a string that looks like a dictionary. How did you create that?
In your final screenshot, you canât use dot notation to access dictionary items that begin with a digit or contain special characters. Either use dict_attribute['07:00']
if the card supports it, or rename your dict items to avoid this, such as t0700
.
Thank you for your âhonestyâ
rebuilt manually. As I said: Desperate act to rebuild the documentation 100%.
template:
- sensor:
- name: Solar forecast values today
state: >
{{ âValues found â ~ now().strftime(â%d.%m.%Y %H:%M:%S') }}
attributes:
dict_attribute: >
{
value_1: 53,
value_2: 64,
value_3: 72
}
Results in the first image.
So 100â% according to the documentation.
Also used the card-mini-map template 1:1. No curve.
New attempt according to your suggestion:
- sensor:
- name: Solarprognose Werte Heute
state: >
{% set data = state_attr('sensor.solarprognose_raw_json_hourly', 'data') %}
{% if data %}
{{ "Werte gefunden " ~ now().strftime('%d.%m.%Y %H:%M:%S') }}
{% else %}
no_data
{% endif %}
attributes:
dict_attribute: >
{% set start_of_today = as_timestamp(now().replace(hour=0, minute=0, second=0, microsecond=0)) | int %}
{% set end_of_today = as_timestamp(now().replace(hour=23, minute=59, second=59, microsecond=0)) | int %}
{% set ns = namespace(values_dict="{}") %}
{% set data = state_attr('sensor.solarprognose_raw_json_hourly', 'data') %}
{% if data %}
{% for ts, values in data.items() %}
{% set ts_int = ts | int %}
{% if ts_int >= start_of_today and ts_int <= end_of_today %}
{% set key = "t" ~ ts_int | timestamp_custom('%H%M', false) %}
{% set value = values[0] | float %}
{% set ns.values_dict = ns.values_dict[:-1] + (', "' ~ key ~ '": ' ~ value | string ~ '}') if ns.values_dict != '{}' else '{"' ~ key ~ '": ' ~ value | string ~ '}' %}
{% endif %}
{% endfor %}
{% endif %}
{{ ns.values_dict }}
then results in the preview:
mini-map
Troon
(Troon)
January 8, 2025, 10:49am
5
Your first code block above contains incorrect quotes, and does not define a dictionary in the attribute, just a string. You need this to define the dictionary as a Jinja template:
template:
- sensor:
- name: Solar forecast values today
state: >
{{ "Values found " ~ now().strftime('%d.%m.%Y %H:%M:%S') }}
attributes:
dict_attribute: >
{{ {
"value_1": 53,
"value_2": 64,
"value_3": 72
} }}
or for a YAML dictionary structure, use:
dict_attribute:
value_1: 53
value_2: 64
value_3: 72
I think your final graph is now working, isnât it? Itâs showing values from 0 to 5.3 as youâd expect, and you just need to wait for new values to have a meaningful graph plotted?
ahhrrrrggghhh⌠Iâve lost my way.
That was a way for ONE line.
The documentary sucks.
You can see a graph or a progression curve.
Then Iâll try my hand at LIST elements.
Troon
(Troon)
January 8, 2025, 11:49am
7
Oh! Youâre trying to plot those values as data points on the same curve? I donât think it works like that: none of the documentation examples shows that. You need to have the values stored in HA at those specific times in its database.
Perhaps explain where the dataâs coming from and what youâre trying to achieve?
ahhhh⌠THAT explains why I canât get any further.
This is solar yield data. (Forecasts.)
They come from a JSON interface.
I donât want them in the DB under any circumstances, because the forecast is queried every 15 minutes and is constantly changing.
Thatâs what itâs supposed to be.
1 over all (as in the picture) and once the daily curve.
But then it wonât work with any template in HA?
It doesnât have to be a mini-map.
Thanks for your previous statement. THAT saves me further pointless hours
nope⌠I can hardly get any further here either.
Sometimes I have to use static values to get anything at all.
template:
- sensor:
- name: Solarprognose Werte Heute
state: >
{{ 0 }} # Der Zustand bleibt eine Zahl
attributes:
timestamps: >
['08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00']
values: >
[0, 0.223, 1.421, 3.266, 4.659, 5.296, 3.991, 0]
Plotys Code:
type: custom:plotly-graph
entities:
- sensor.solarprognose_werte_heute
layout:
title: Solarprognose (kW)
xaxis:
title: Uhrzeit
type: category
yaxis:
title: Leistung (kW)
type: linear
range: [0, 6]
traces:
- type: scatter
mode: lines+markers
name: Solarprognose
x: "{{ state_attr('sensor.solarprognose_werte_heute', 'timestamps') }}"
y: "{{ state_attr('sensor.solarprognose_werte_heute', 'values') }}"
Results in a suitable Y +X axis. But no value
minmal Plotys: Y axis wrong
type: custom:plotly-graph
entities:
- entity: sensor.solarprognose_werte_heute
Do you have a template for me with 2-3 numbers that somehow shows a hill-curve?
Troon
(Troon)
January 8, 2025, 1:31pm
11
I donât, sorry: Iâve never used it. Perhaps post in its topic here:
[demo]
[attributes]
[216764329-94b9cd7e-fee9-439b-9134-95b7be626592]
[image]
[image]
[215353175-97118ea7-778b-41b7-96f2-7e52c1c396d3]
[image]
Here is my first Lovelace card, similar to the history card but leveraging plotly.js to make it interactive.
You can scroll and zoom and the missing data will be automatically fetched.
Click on the Index of examples with images in the readme
The yaml is backwards compatible with the history card but adds a big amount of features, instructions âŚ
VietNgoc
(Ngoc John)
January 8, 2025, 4:28pm
12
lord_icon:
The documentary sucks.
No its not⌠Stop blaming it on a bug or documentationâŚ