il me prend pour un jambon lui 
@freetronic je sais comment envoyer les logs 
les voici:
e[33m2026-02-06 17:30:00.160 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.161 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.162 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.163 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.165 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.166 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.168 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.169 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.170 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.172 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.173 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.174 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.175 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.176 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.178 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.180 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.181 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:30:00.182 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[31m2026-02-06 17:30:04.354 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[31m2026-02-06 17:31:25.059 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[33m2026-02-06 17:31:56.559 WARNING (MainThread) [custom_components.advanced_trading_wallet.const] No data received for stock: XRPe[0m
e[33m2026-02-06 17:31:56.745 WARNING (MainThread) [custom_components.advanced_trading_wallet.const] No data received for crypto: hbare[0m
e[33m2026-02-06 17:31:56.746 WARNING (MainThread) [custom_components.advanced_trading_wallet.const] No new data fetched, retaining previous data.e[0m
e[31m2026-02-06 17:32:45.540 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[31m2026-02-06 17:34:06.219 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[31m2026-02-06 17:35:26.597 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[31m2026-02-06 17:36:46.907 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 102, in unpad
raise ValueError("PKCS#7 padding is incorrect.")
ValueError: PKCS#7 padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[31m2026-02-06 17:38:07.521 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 102, in unpad
raise ValueError("PKCS#7 padding is incorrect.")
ValueError: PKCS#7 padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[33m2026-02-06 17:38:30.870 WARNING (SyncWorker_0) [annotatedyaml.constructors] YAML file /config/themes/rounded-bubble.yaml contains duplicate key "icon-active-color". Check lines 136 and 154e[0m
e[31m2026-02-06 17:39:27.795 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[31m2026-02-06 17:40:48.415 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[33m2026-02-06 17:41:56.559 WARNING (MainThread) [custom_components.advanced_trading_wallet.const] No data received for stock: XRPe[0m
e[33m2026-02-06 17:41:56.734 WARNING (MainThread) [custom_components.advanced_trading_wallet.const] No data received for crypto: hbare[0m
e[33m2026-02-06 17:41:56.734 WARNING (MainThread) [custom_components.advanced_trading_wallet.const] No new data fetched, retaining previous data.e[0m
e[31m2026-02-06 17:41:59.691 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo xcn onyxcoin prix: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.691 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 757, in _extract_data_price_main_primary
return api_data["current_price"] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.693 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo xrp ripple prix: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.694 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 757, in _extract_data_price_main_primary
return api_data["current_price"] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.696 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo jérome/ludo ada coinbase: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.696 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 757, in _extract_data_price_main_primary
return api_data["current_price"] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.706 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo jérome/ludo xcn coinbase: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.706 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 757, in _extract_data_price_main_primary
return api_data["current_price"] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.709 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo ondo cardanp prix: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.709 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 757, in _extract_data_price_main_primary
return api_data["current_price"] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.712 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo jérome/ludo hbar coinbase: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.712 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 757, in _extract_data_price_main_primary
return api_data["current_price"] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.715 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo hbar hetera prix: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.715 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 757, in _extract_data_price_main_primary
return api_data["current_price"] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.718 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo xcn onyxcoin prix: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.719 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 1401, in _async_update
api_data = await self._fetch_price_data_main(api_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 900, in _fetch_price_data_main
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 763, in _extract_data_price_simple_primary
return api_data[self.currency_name] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.723 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo xrp ripple prix: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.723 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 1401, in _async_update
api_data = await self._fetch_price_data_main(api_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 900, in _fetch_price_data_main
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 763, in _extract_data_price_simple_primary
return api_data[self.currency_name] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.726 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo jérome/ludo ada coinbase: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.727 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 1401, in _async_update
api_data = await self._fetch_price_data_main(api_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 900, in _fetch_price_data_main
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 763, in _extract_data_price_simple_primary
return api_data[self.currency_name] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.740 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo jérome/ludo xcn coinbase: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.741 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 1401, in _async_update
api_data = await self._fetch_price_data_main(api_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 900, in _fetch_price_data_main
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 763, in _extract_data_price_simple_primary
return api_data[self.currency_name] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.746 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo ondo cardanp prix: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.746 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 1401, in _async_update
api_data = await self._fetch_price_data_main(api_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 900, in _fetch_price_data_main
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 763, in _extract_data_price_simple_primary
return api_data[self.currency_name] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.750 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo jérome/ludo hbar coinbase: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.750 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 1401, in _async_update
api_data = await self._fetch_price_data_main(api_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 900, in _fetch_price_data_main
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 763, in _extract_data_price_simple_primary
return api_data[self.currency_name] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:41:59.754 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] CryptoinfoAdvanced error fetching update for Cryptoinfo hbar hetera prix: TypeError: 'NoneType' object is not subscriptablee[0m
e[31m2026-02-06 17:41:59.754 ERROR (MainThread) [custom_components.cryptoinfo_advanced.const.const] Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 1401, in _async_update
api_data = await self._fetch_price_data_main(api_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 900, in _fetch_price_data_main
raise ValueError()
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 739, in _async_api_fetch
primary_data = extract_primary(api_data)
File "/config/custom_components/cryptoinfo_advanced/crypto_sensor.py", line 763, in _extract_data_price_simple_primary
return api_data[self.currency_name] * float(self.multiplier)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
e[0m
e[31m2026-02-06 17:42:09.054 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[31m2026-02-06 17:43:29.733 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[31m2026-02-06 17:44:50.174 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m
e[33m2026-02-06 17:45:00.116 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.117 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.117 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.117 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.118 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.118 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.118 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.118 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.118 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.119 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.119 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.119 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.119 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.120 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.120 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.120 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.120 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.121 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.121 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.121 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.121 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.121 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.122 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.122 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.123 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.123 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.123 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.123 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.124 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.124 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.124 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.124 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.125 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.125 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.125 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.125 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.126 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.126 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[33m2026-02-06 17:45:00.126 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'precipitation' when rendering '{% if forecast['weather.herblay'].forecast is defined
and forecast['weather.herblay'].forecast | length > 0 %}
[
{%- for f in forecast['weather.herblay'].forecast %}
{
"datetime": "{{ as_local(strptime(f.datetime, '%Y-%m-%dT%H:%M:%S%z')) }}",
"condition": "{{ f.condition }}",
"temperature": {{ f.temperature }},
"precipitation": {{ f.precipitation }},
"wind_speed": {{ f.wind_speed }},
"wind_bearing": {{ f.wind_bearing }},
"humidity": {{ f.humidity if f.humidity is defined else 'null' }},
"cloud_coverage": {{ f.cloud_coverage if f.cloud_coverage is defined else 'null' }},
"uv_index": {{ f.uv_index if f.uv_index is defined else 'null' }}
}{{ "," if not loop.last }}
{%- endfor %}
]
{% else %}
[]
{% endif %}'e[0m
e[31m2026-02-06 17:46:10.639 ERROR (MainThread) [custom_components.pronote.coordinator] Unexpected error fetching TIAGO (via compte parent) data
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 325, in aes_decrypt
return Padding.unpad(cipher.decrypt(data), 16)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/Crypto/Util/Padding.py", line 98, in unpad
raise ValueError("Padding is incorrect.")
ValueError: Padding is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 416, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/pronote/coordinator.py", line 156, in _async_update_data
client = await self.hass.async_add_executor_job(get_pronote_client, config_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/pronote/pronote_helper.py", line 40, in get_pronote_client
client = get_client_from_qr_code(data)
File "/config/custom_components/pronote/pronote_helper.py", line 140, in get_client_from_qr_code
).token_login(
~~~~~~~~~~~^
pronote_url=qr_code_url,
^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
client_identifier=qr_code_client_identifier,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 272, in token_login
return cls(
pronote_url,
...<6 lines>...
device_name=device_name,
)
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 987, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
pronote_url,
^^^^^^^^^^^^
...<7 lines>...
device_name,
^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 151, in __init__
self.logged_in = self._login()
~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/pronotepy/clients.py", line 337, in _login
dec = e.aes_decrypt(bytes.fromhex(challenge))
File "/usr/local/lib/python3.13/site-packages/pronotepy/pronoteAPI.py", line 327, in aes_decrypt
raise CryptoError(
"Decryption failed while trying to un pad. (probably bad decryption key/iv)"
)
pronotepy.exceptions.CryptoError: ('Decryption failed while trying to un pad. (probably bad decryption key/iv)', 'exception happened during login -> probably bad username/password')e[0m