Add weather service call functionality and fix weather forecast assignment (#1349)

This commit is contained in:
Paweł Zubrycki
2025-06-12 18:40:55 +02:00
committed by GitHub
parent 54c8d302a8
commit acdba468b3

View File

@@ -382,8 +382,14 @@ class LuiPagesGen(object):
elif entityType == "weather": elif entityType == "weather":
entityTypePanel = "text" entityTypePanel = "text"
unit = get_attr_safe(entity, "temperature_unit", "") unit = get_attr_safe(entity, "temperature_unit", "")
if type(item.stype) == int and len(entity.attributes['forecast']) >= item.stype: if type(item.stype) == int:
fdate = dp.parse(entity.attributes['forecast'][item.stype]['datetime']) results = apis.ha_api.call_service(
"weather/get_forecasts", target={"entity_id": entityId}, service_data={"type": "daily"}
)
forecast = results.get("result", {}).get("response", {}).get(entityId, {}).get('forecast') or entity.attributes.get('forecast', [])
if len(forecast) >= item.stype:
day_forecast = forecast[item.stype]
fdate = dp.parse(day_forecast['datetime'])
global babel_spec global babel_spec
if babel_spec is not None: if babel_spec is not None:
dateformat = "E" if item.nameOverride is None else item.nameOverride dateformat = "E" if item.nameOverride is None else item.nameOverride
@@ -391,9 +397,11 @@ class LuiPagesGen(object):
else: else:
dateformat = "%a" if item.nameOverride is None else item.nameOverride dateformat = "%a" if item.nameOverride is None else item.nameOverride
name = fdate.astimezone().strftime(dateformat) name = fdate.astimezone().strftime(dateformat)
icon_id = get_icon_ha(entityId, stateOverwrite=entity.attributes['forecast'][item.stype]['condition']) icon_id = get_icon_ha(entityId, stateOverwrite=day_forecast['condition'])
value = f'{entity.attributes['forecast'][item.stype].get("temperature", "")}{unit}' value = f'{day_forecast.get("temperature", "")}{unit}'
color = self.get_entity_color(entity, ha_type=entityType, stateOverwrite=entity.attributes['forecast'][item.stype]['condition'], overwrite=colorOverride) color = self.get_entity_color(entity, ha_type=entityType, stateOverwrite=day_forecast['condition'], overwrite=colorOverride)
else:
value = f'{get_attr_safe(entity, "temperature", "")}{unit}'
else: else:
value = f'{get_attr_safe(entity, "temperature", "")}{unit}' value = f'{get_attr_safe(entity, "temperature", "")}{unit}'
elif entityType == "valve": elif entityType == "valve":