Hello,
I have a problem with this automation:
- id: 'fronius_energy_forecast'
alias: "Fronius: Energieprognose abrufen"
description: Aktualisiert die Energieprognose mit Fehlerbehandlung und Datenvalidierung
trigger:
- platform: event
event_type: fronius_energy_forecast_request
action:
- service: rest_command.fronius_get_energy_forecast
data:
jwt_token: "{{ state_attr('sensor.fronius_jwt_token', 'jwt_token') }}"
accesskeyid: "{{ states('input_text.fronius_accesskeyid') }}"
accesskeyvalue: "{{ states('input_text.fronius_accesskeyvalue') }}"
pvsystemid: "{{ states('input_text.fronius_pvsystemid') }}"
fromTime: >-
{% set t = states('input_text.fronius_fromtime') | replace(' ', '') %}
{% set now_utc = now().astimezone(tz=None) %}
{{ now_utc.strftime('%Y-%m-%dT') }}{{ t[:2] }}:{{ t[2:4] }}:{{ t[4:6] }}Z
toTime: >-
{% set t = states('input_text.fronius_totime') | replace(' ', '') %}
{% set now_utc = now().astimezone(tz=None) %}
{{ now_utc.strftime('%Y-%m-%dT') }}{{ t[:2] }}:{{ t[2:4] }}:{{ t[4:6] }}Z
continue_on_error: true
response_variable: forecast_response
- service: system_log.write
data:
message: "API-Rohdaten: {{ forecast_response.content|default({})|to_json }}"
level: debug
- choose:
- conditions: "{{ forecast_response is defined }}"
sequence:
- choose:
# Erfolgsfall (200 OK)
- conditions: "{{ forecast_response.status == 200 }}"
sequence:
- service: input_number.set_value
target:
entity_id: input_number.fronius_energy_forecast
data:
value: >-
{% if forecast_response.content is defined and
forecast_response.content.data is defined and
forecast_response.content.data|length > 0 %}
{% set values = [] %}
{% for item in forecast_response.content.data %}
{% if item.channels is defined %}
{% if item.channels is mapping and item.channels.value is defined %}
{% set values = values + [item.channels.value|float] %}
{% elif item.channels|length > 0 and item.channels[0].value is defined %}
{% set values = values + [item.channels[0].value|float] %}
{% endif %}
{% endif %}
{% endfor %}
{{ (values|sum / 1000)|round(2) if values|length > 0 else 0.0 }}
{% else %}
0.0
{% endif %}
- service: system_log.write
data:
message: "Prognose erfolgreich aktualisiert: {{ now() }}"
level: info
# Token abgelaufen oder ungĂźltig
- conditions: >-
{{
forecast_response.status == 401 or
forecast_response.status >= 500 or
(forecast_response.content is defined and
forecast_response.content is not none and
(
'JWT expired.' in (forecast_response.content|string) or
(
'token' in (forecast_response.content|string|lower) and
'expired' in (forecast_response.content|string|lower)
)
)
)
}}
sequence:
- service: system_log.write
data:
message: "Forecast-Request fehlgeschlagen: Authentifizierung/Token-Problem - {{ now() }}"
level: warning
- delay: "00:01:00"
- event: fronius_jwt_request
# Default fĂźr inneren choose (API-Status â 200/401)
default:
- service: system_log.write
data:
message: >-
Unerwarteter API-Status: {{ forecast_response.status }},
Inhalt: {{ forecast_response.content|to_json }}
level: error
- event: fronius_jwt_request
# â
Korrekt positionierter Default fĂźr äuĂeren choose (forecast_response undefined)
default:
- service: system_log.write
data:
message: "Keine Antwort vom Forecast-Endpoint erhalten: {{ now() }}"
level: error
- event: fronius_jwt_request
A yaml-check says no error. But when loading yaml, HA says this:
Fehler: extra keys not allowed @ data['actions'][2]['choose'][0]['default']. Got [{'service': 'system_log.write', 'data': {'message': 'Keine Antwort vom Forecast-Endpoint erhalten: {{ now() }}', 'level': 'error'}}, {'event': 'fronius_jwt_request'}] extra keys not allowed @ data['actions'][2]['choose'][0]['sequence'][0]['choose'][1]['default']. Got [{'service': 'system_log.write', 'data': {'message': 'Unerwarteter API-Status: {{ forecast_response.status }}, Inhalt: {{ forecast_response.content|to_json }}', 'level': 'error'}}, {'event': 'fronius_jwt_request'}]
I dont understand this