Gute Frage…
Wenn sich der Zustand ändert, scheint das Scrapen der Daten schonmal zu funktionieren… Dann kann eigentlich nur noch ein Problem beim abgleich der Daten des Helfers und dem Script in der Button Card bestehen…
Aktuell sieht es so aus:
Helfer (sensor.wetterlage):
{% set state = states('sensor.web_scrape') %}
{% set mapping = {
'Sunny': 'Sonnig',
'Mostly Sunny': 'Überwiegend sonnig',
'Sunny/Wind': 'Sonnig / windig',
'Fair/Wind': 'Freundlich / windig',
'Fair': 'Freundlich',
'Clear/Wind': 'Klare Nacht / windig',
'Clear': 'Klare Nacht',
'Windy': 'Windig',
'Hail': 'Hagel',
'Rain': 'Regnerisch',
'Rain Shower': 'Schauer',
'Light Rain Shower': 'Leichte Schauer',
'Showers in the Vicinity': 'Örtliche Schauer',
'Light Rain': 'Leichter Regen',
'Light Rain with Thunder': 'Leichter Regen und Gewitter',
'Light Drizzle': 'Leichter Nieselregen',
'Drizzle': 'Nieselregen',
'Heavy Rain': 'Starkregen',
'Heavy Rain Shower': 'Starkregenschauer',
'Rain Shower/Wind': 'Regenschauer / windig',
'Light Rain Shower/Wind': 'Leichte Schauer / windig',
'Rain/Wind': 'Regen / windig',
'Light Rain/Wind': 'Leichter Regen / windig',
'Rain/Freezing Rain/Wind': 'Gefrierender Regen / windig',
'Thunder in the Vicinity': 'Örtliche Gewitter',
'Thunderstorms': 'Gewitter',
'Snow Shower': 'Schnee Schauer',
'Light Snow': 'Leichter Schneefall',
'Snowy': 'Schnee',
'Snow': 'Schnee',
'Light Snow Shower': 'Leichte Schneeschauer',
'Heavy Snow': 'Starker Schneefall',
'Heavy Snow Shower': 'Starke Schneeschauer',
'Wintry Mix': 'Winterlich',
'Snow/Wind': 'Schnee / windig',
'Rain and Snow': 'Schneeregen',
'Freezing Rain': 'Gefrierender Regen',
'Rain/Freezing Rain': 'Gefrierender Regen',
'Rain/Freezing': 'Gefrierender Regen',
'Light Freezing Rain': 'Leichter gefrierender Regen',
'Light Rain/Freezing Rain': 'Leichter gefrierender Regen',
'Light Freezing Drizzle': 'Gefrierender Nieselregen',
'Cloudy': 'Bewölkt',
'Partly Cloudy': 'Teilweise bewölkt',
'Mostly Cloudy': 'Überwiegend bewölkt',
'Cloudy/Wind': 'Bewölkt / windig',
'Mostly Cloudy/Wind': 'Überwiegend bewölkt / windig',
'Partly Cloudy/Wind': 'Teilweise bewölkt / windig',
'Mist': 'Nebelig',
'Fog': 'Nebel',
'Haze': 'Dunst',
'Drizzle and Fog': 'Nieselregen und Nebel'
} %}
{% if states('sensor.web_scrape') in ['unavailable', 'unknown'] %}
Unbekannt
{% else %}
{% set translated = mapping.get(state, 'FEHLT: ' ~ states('sensor.web_scrape')) %}
{% if translated == 'Freundlich' and is_state('sun.sun', 'below_horizon') %}
Klare Nacht
{% elif translated == 'Freundlich / windig' and is_state('sun.sun', 'below_horizon') %}
Klare Nacht / windig
{% else %}
{{ translated }}
{% endif %}
{% endif %}
Das ist die ButtonCard:
type: custom:button-card
entity: sensor.wetterlage
layout: icon_name_state
show_state: true
show_name: false
show_label: true
variables:
is_light_rain: |
[[[
return [
"Leichter Nieselregen",
"Nieselregen",
"Leichte Schauer",
"Leichter Regen"
].includes(entity.state);
]]]
is_rain: |
[[[
return [
"Regnerisch",
"Schauer",
"Örtliche Schauer",
"Starkregen",
"Starkregenschauer"
].includes(entity.state);
]]]
is_cloudy: |
[[[
return [
"Bewölkt",
"Überwiegend bewölkt"
].includes(entity.state);
]]]
is_partly_cloudy: |
[[[
return [
"Teilweise bewölkt"
].includes(entity.state);
]]]
is_cloudy_windy: |
[[[
return [
"Windig",
"Überwiegend bewölkt / windig",
"Teilweise bewölkt / windig",
"Bewölkt / windig"
].includes(entity.state);
]]]
is_rainy_windy: |
[[[
return [
"Regenschauer / windig",
"Leichte Schauer / windig",
"Regen / windig"
].includes(entity.state);
]]]
is_sunny_windy: |
[[[
return [
"Freundlich / windig",
"Sonnig / windig"
].includes(entity.state);
]]]
is_foggy: |
[[[
return [
"Nebelig",
"Nebel",
"Nieselregen und Nebel",
"Dunst"
].includes(entity.state);
]]]
is_clear_night: |
[[[
return [
"Klare Nacht"
].includes(entity.state);
]]]
is_clear_night_windy: |
[[[
return [
"Klare Nacht / windig"
].includes(entity.state);
]]]
is_snowy: |
[[[
return [
"Schnee Schauer",
"Schnee",
"Schneeregen",
"Winterlich",
"Schnee / windig",
"Leichter Schneefall",
"Leichte Schneeschauer",
"Starker Schneefall",
"Starke Schneeschauer"
].includes(entity.state);
]]]
is_black_ice: |
[[[
return [
"Gefrierender Regen / windig",
"Gefrierender Regen",
"Gefrierender Nieselregen",
"Leichter gefrierender Regen"
].includes(entity.state);
]]]
is_hail: |
[[[
return [
"Hagel"
].includes(entity.state);
]]]
is_light_t_storm: |
[[[
return [
"Leichter Regen und Gewitter"
].includes(entity.state);
]]]
is_partly_t_storm: |
[[[
return [
"Örtliche Gewitter"
].includes(entity.state);
]]]
is_t_storm: |
[[[
return [
"Gewitter"
].includes(entity.state);
]]]
is_fair: |
[[[
return [
"Freundlich"
].includes(entity.state);
]]]
is_sunny: |
[[[
return [
"Sonnig",
"Überwiegend sonnig"
].includes(entity.state);
]]]
icon: |
[[[
if (variables.is_light_rain) return "mdi:weather-rainy";
if (variables.is_rain) return "mdi:weather-pouring";
if (variables.is_cloudy) return "mdi:weather-cloudy";
if (variables.is_partly_cloudy) return "mdi:weather-partly-cloudy";
if (variables.is_cloudy_windy) return "mdi:weather-windy";
if (variables.is_rainy_windy) return "mdi:weather-windy";
if (variables.is_sunny_windy) return "mdi:weather-windy";
if (variables.is_foggy) return "mdi:weather-fog";
if (variables.is_clear_night) return "mdi:weather-night";
if (variables.is_clear_night_windy) return "mdi:weather-windy";
if (variables.is_snowy) return "mdi:weather-snowy-heavy";
if (variables.is_black_ice) return "mdi:snowflake-alert";
if (variables.is_hail) return "mdi:weather-hail";
if (variables.is_light_t_storm) return "mdi:weather-lightning-rainy";
if (variables.is_partly_t_storm) return "mdi:weather-partly-lightning";
if (variables.is_t_storm) return "mdi:weather-lightning";
return "mdi:weather-sunny";
]]]
styles:
card:
- background-color: |
[[[
if (variables.is_light_rain) return "#122f5a";
if (variables.is_rain) return "#122f5a";
if (variables.is_cloudy) return "#25252d";
if (variables.is_partly_cloudy) return "#25252d";
if (variables.is_cloudy_windy) return "#487890";
if (variables.is_rainy_windy) return "#122f5a";
if (variables.is_sunny_windy) return "#e4b532";
if (variables.is_foggy) return "#787878";
if (variables.is_clear_night) return "#0b084c";
if (variables.is_clear_night_windy) return "#0b084c";
if (variables.is_snowy) return "#b1b1b1";
if (variables.is_black_ice) return "#b1b1b1";
if (variables.is_hail) return "#b1b1b1";
if (variables.is_light_t_storm) return "#04152d";
if (variables.is_partly_t_storm) return "#04152d";
if (variables.is_t_storm) return "#04152d";
return "#e4b532";
]]]
- color: |
[[[
if (variables.is_sunny) return "#a73d03";
if (variables.is_sunny_windy) return "#a73d03";
if (variables.is_fair) return "#a73d03";
if (variables.is_snowy) return "#2a374b";
if (variables.is_black_ice) return "#2a374b";
if (variables.is_hail) return "#2a374b";
return "#b1b1b1";
]]]
- background-image: |
[[[
if (variables.is_sunny) return "url(/local/bg_img/weather-partly-cloudy22.png)";
if (variables.is_sunny_windy) return "url(/local/bg_img/weather-partly-cloudy22.png)";
if (variables.is_fair) return "url(/local/bg_img/weather-partly-cloudy22.png)";
return "url(/local/bg_img/weather-partly-cloudy10.png)";
]]]
- background-repeat: no-repeat
- background-position: right -10px top 23px
- background-size: 130px
icon:
- color: |
[[[
if (variables.is_sunny) return "#a73d03";
if (variables.is_sunny_windy) return "#a73d03";
if (variables.is_fair) return "#a73d03";
if (variables.is_snowy) return "#2a374b";
if (variables.is_black_ice) return "#2a374b";
if (variables.is_hail) return "#2a374b";
return "#e1e1e1";
]]]
- padding: 0
- margin: 0 0 0 -40px
name:
- display: flex
- align-items: center
- font-weight: normal
- width: 100%
- font-size: 22px
- white-space: wrap
- text-overflow: unset
- text-align: left
- padding: 0 10px 0 0
- margin: 0 0 0 -70px
label:
- margin: "-160px 0 0 0"
- text-align: right
- width: 100%
- padding: 0 19px 0 0
label: Aktuelles Wetter
tap_action: none
hold_action: none
double_tap_action: none
section_mode: true
grid_options:
rows: 2
columns: full
Passen Helfer und Button Card zusammen muss es auch funktionieren, dass die Styles funktionieren