feat: add weather source entity and weather-reactive CSS source type
Lint & Test / test (push) Failing after 34s

New standalone WeatherSource entity with pluggable provider architecture
(Open-Meteo v1, free, no API key). Full CRUD, test endpoint, browser
geolocation, IconSelect provider picker, CardSection with test/clone/edit.

WeatherColorStripStream maps WMO weather codes to ambient color palettes
with temperature hue shifting and thunderstorm flash effects. Ref-counted
WeatherManager polls API and caches data per source.

CSS editor integration: weather type with EntitySelect source picker,
speed and temperature influence sliders. Backup/restore support.

i18n for en/ru/zh.
This commit is contained in:
2026-03-24 18:52:46 +03:00
parent 0723c5c68c
commit ef33935188
31 changed files with 1868 additions and 11 deletions
@@ -1117,6 +1117,16 @@
"color_strip.type.candlelight": "烛光",
"color_strip.type.candlelight.desc": "逼真的烛光闪烁模拟",
"color_strip.type.candlelight.hint": "在所有LED上模拟逼真的蜡烛闪烁,具有温暖色调和有机闪烁模式。",
"color_strip.type.weather": "天气",
"color_strip.type.weather.desc": "天气感应环境色彩",
"color_strip.type.weather.hint": "将实时天气状况映射为环境LED颜色。需要天气源实体。",
"color_strip.weather.source": "天气源:",
"color_strip.weather.source.hint": "用于环境颜色的天气数据源。请先在天气标签页中创建。",
"color_strip.weather.speed": "动画速度:",
"color_strip.weather.speed.hint": "环境色彩漂移动画速度。越高越快。",
"color_strip.weather.temperature_influence": "温度影响:",
"color_strip.weather.temperature_influence.hint": "当前温度对调色板冷暖偏移程度。0=纯天气颜色,1=强偏移。",
"color_strip.weather.error.no_source": "请选择天气源",
"color_strip.candlelight.color": "基础颜色:",
"color_strip.candlelight.color.hint": "蜡烛火焰的温暖基础颜色。默认为自然温暖的琥珀色。",
"color_strip.candlelight.intensity": "闪烁强度:",
@@ -1631,6 +1641,36 @@
"sync_clock.reset_done": "时钟已重置为零",
"sync_clock.delete.confirm": "删除此同步时钟?关联的源将失去同步并以默认速度运行。",
"sync_clock.elapsed": "已用时间",
"weather_source.group.title": "天气源",
"weather_source.add": "添加天气源",
"weather_source.edit": "编辑天气源",
"weather_source.name": "名称:",
"weather_source.name.placeholder": "我的天气",
"weather_source.name.hint": "天气数据源的描述性名称",
"weather_source.provider": "提供商:",
"weather_source.provider.hint": "天气数据提供商。Open-Meteo免费且无需API密钥。",
"weather_source.provider.open_meteo.desc": "免费,无需API密钥",
"weather_source.location": "位置:",
"weather_source.location.hint": "您的地理坐标。使用自动检测按钮或手动输入。",
"weather_source.latitude": "纬度:",
"weather_source.longitude": "经度:",
"weather_source.use_my_location": "使用我的位置",
"weather_source.update_interval": "更新间隔:",
"weather_source.update_interval.hint": "获取天气数据的频率。值越低,更新越及时。",
"weather_source.description": "描述(可选):",
"weather_source.description.placeholder": "可选描述",
"weather_source.test": "测试",
"weather_source.error.name_required": "天气源名称为必填项",
"weather_source.error.load": "加载天气源失败",
"weather_source.created": "天气源已创建",
"weather_source.updated": "天气源已更新",
"weather_source.deleted": "天气源已删除",
"weather_source.delete.confirm": "删除此天气源?关联的色带源将失去天气数据。",
"weather_source.geo.success": "位置已检测",
"weather_source.geo.error": "地理定位失败",
"weather_source.geo.not_supported": "您的浏览器不支持地理定位",
"streams.group.weather": "天气",
"section.empty.weather_sources": "暂无天气源。点击+添加。",
"color_strip.clock": "同步时钟:",
"color_strip.clock.hint": "关联同步时钟以在多个源之间同步动画。速度在时钟上控制。",
"graph.title": "图表",