648 lines
28 KiB
YAML
648 lines
28 KiB
YAML
#openhasp:
|
|
plate1:
|
|
objects:
|
|
- obj: "p0b2"
|
|
properties:
|
|
"text": '{{ states("sensor.ecowitt_temp")| float | round(1) }}°C'
|
|
- obj: "p0b1" # temperature label on all pages
|
|
properties:
|
|
"text": '{{ states("sensor.ecowitt_tempin")| float | round(1)}}°C'
|
|
#page 1 sensor:
|
|
- obj: "p1b11" # temperature label on all pages
|
|
properties:
|
|
"text": '{{ states("sensor.temp_fumee")| float | round(1) }}°C'
|
|
- obj: "p1b13" # temperature label on all pages
|
|
properties:
|
|
"text": '{{ states("sensor.temp_depart_chauffage")| float | round(1) }}°C'
|
|
|
|
#page 1 light:
|
|
|
|
- obj: "p1b1" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("light.lumieres_couloir") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("light.lumieres_couloir", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "light.lumieres_couloir"
|
|
|
|
- obj: "p1b2" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("light.applique_salon") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("light.applique_salon", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "light.applique_salon"
|
|
|
|
- obj: "p1b3" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("light.applique_cuisine") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("light.applique_cuisine", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "light.applique_cuisine"
|
|
|
|
- obj: "p1b4" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("light.lumieres_escaliers") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("light.lumieres_escaliers", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "light.lumieres_escaliers"
|
|
|
|
- obj: "p1b7" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("light.eclairage_bois") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("light.eclairage_bois", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "light.eclairage_bois"
|
|
- obj: "p1b8" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("light.yeelight_color4_0x15771126") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("light.yeelight_color4_0x15771126", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "light.yeelight_color4_0x15771126"
|
|
|
|
- obj: "p1b9" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("switch.kc868_a8_d758d0_d758d0_lumiere_comble_kc") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("switch.kc868_a8_d758d0_d758d0_lumiere_comble_kc", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "switch.kc868_a8_d758d0_d758d0_lumiere_comble_kc"
|
|
#page 2 light
|
|
- obj: "p2b21" # Light brightness
|
|
properties:
|
|
"val": "{{ state_attr('light.applique_salon', 'brightness') if state_attr('light.applique_salon', 'brightness') != None else 0 }}"
|
|
event:
|
|
"changed":
|
|
- service: light.turn_on
|
|
data:
|
|
entity_id: light.applique_salon
|
|
brightness: "{{ val }}"
|
|
"up":
|
|
- service: light.turn_on
|
|
data:
|
|
entity_id: light.applique_salon
|
|
brightness: "{{ val }}"
|
|
- obj: "p2b23" # Light brightness
|
|
properties:
|
|
"val": "{{ state_attr('light.lumieres_plafond', 'brightness') if state_attr('light.lumieres_plafond', 'brightness') != None else 0 }}"
|
|
event:
|
|
"changed":
|
|
- service: light.turn_on
|
|
data:
|
|
entity_id: light.lumieres_plafond
|
|
brightness: "{{ val }}"
|
|
"up":
|
|
- service: light.turn_on
|
|
data:
|
|
entity_id: light.lumieres_plafond
|
|
brightness: "{{ val }}"
|
|
- obj: "p2b25" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("light.eclairage_bois") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("light.eclairage_bois", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "light.eclairage_bois"
|
|
|
|
#thermostat
|
|
- obj: "p3b20" # arc slider
|
|
properties:
|
|
"val": >
|
|
{% if state_attr('climate.salon','temperature') is not none %}
|
|
{{ state_attr('climate.salon','temperature') | int * 10 }}
|
|
{%- endif %}
|
|
"min": >
|
|
{% if state_attr('climate.salon','min_temp') is not none %}
|
|
{{ state_attr('climate.salon','min_temp') | int * 10 }}
|
|
{%- endif %}
|
|
"max": >
|
|
{% if state_attr('climate.salon','max_temp') is not none %}
|
|
{{ state_attr('climate.salon','max_temp') | int * 10 }}
|
|
{%- endif %}
|
|
"opacity": "{{ 60 if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 255 }}"
|
|
"click": "{{ 'false' if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 'true' }}"
|
|
"line_color1": >
|
|
{% if is_state('climate.salon', 'cool') %}
|
|
{{ "#346beb" }}
|
|
{%-elif is_state('climate.salon', 'heat_cool') %}
|
|
{{ "#34bdeb" }}
|
|
{%-elif is_state('climate.salon', 'heat') %}
|
|
{{ "#eb3434" }}
|
|
{%-elif is_state('climate.salon', 'dry') %}
|
|
{{ "#ebeb34" }}
|
|
{%-elif is_state('climate.salon', 'fan_only') %}
|
|
{{ "#34eb77" }}
|
|
{%-else %}
|
|
{{ "#9f96b0" }}
|
|
{% endif %}
|
|
event:
|
|
"changed":
|
|
- service: climate.set_temperature
|
|
target:
|
|
entity_id: climate.salon
|
|
data:
|
|
temperature: "{{ val | int / 10 }}"
|
|
"up":
|
|
- service: climate.set_temperature
|
|
target:
|
|
entity_id: climate.salon
|
|
data:
|
|
temperature: "{{ val | int / 10 }}"
|
|
|
|
- obj: "p3b21" # gauge current temp
|
|
properties:
|
|
"val": >
|
|
{% if not (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) %}
|
|
{{ states('climate.salon') | float (default=0) * 10 }}
|
|
{%- endif %}
|
|
"min": >
|
|
{% if state_attr('climate.salon','min_temp') is not none %}
|
|
{{ state_attr('climate.salon','min_temp') | int * 10 }}
|
|
{%- endif %}
|
|
"max": >
|
|
{% if state_attr('climate.salon','max_temp') is not none %}
|
|
{{ state_attr('climate.salon','max_temp') | int * 10 }}
|
|
{%- endif %}
|
|
"critical_value": >
|
|
{% if state_attr('climate.salon','max_temp') is not none %}
|
|
{{ state_attr('climate.salon','max_temp') | int * 10 + 1 }}
|
|
{%- endif %}
|
|
"label_count": >
|
|
{% if state_attr('climate.salon','max_temp') is not none %}
|
|
{{ state_attr('climate.salon','max_temp') | int - state_attr('climate.salon','min_temp') | int + 1 }}
|
|
{%- endif %}
|
|
"line_count": >
|
|
{% if state_attr('climate.salon','max_temp') is not none %}
|
|
{{ (state_attr('climate.salon','max_temp') | int - state_attr('climate.salon','min_temp') | int) * 2 + 1 }}
|
|
{%- endif %}
|
|
"opacity": "{{ 60 if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 255 }}"
|
|
|
|
- obj: "p3b23" # label current temp (and +/- with short/long touch)
|
|
properties:
|
|
"text": >
|
|
{% if (is_state('sensor.ecowitt_tempin','unavailable') or is_state('sensor.ecowitt_tempin','unknown')) %}
|
|
{{ "--.-" }}
|
|
{%-else %}
|
|
{{ states('sensor.ecowitt_tempin') | round(1,default=0) }}
|
|
{%- endif %}
|
|
"click": "{{ 'false' if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 'true' }}"
|
|
"opacity": "{{ 60 if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 255 }}"
|
|
event:
|
|
"up":
|
|
- service: climate.set_temperature
|
|
target:
|
|
entity_id: climate.salon
|
|
data:
|
|
temperature: "{{ state_attr('climate.salon','temperature') + state_attr('climate.salon','target_temp_step') | float(default=1)}}"
|
|
"long":
|
|
- service: climate.set_temperature
|
|
target:
|
|
entity_id: climate.salon
|
|
data:
|
|
temperature: "{{ state_attr('climate.salon','temperature') - state_attr('climate.salon','target_temp_step') | float(default=1)}}"
|
|
|
|
- obj: "p3b25" # label target temp
|
|
properties:
|
|
"text": >
|
|
{% if state_attr('climate.salon','temperature') is not none %}
|
|
{{ state_attr('climate.salon','temperature') }}
|
|
{%- endif %}
|
|
"opacity": "{{ 60 if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 255 }}"
|
|
|
|
- obj: "p3b41" # on/off switch
|
|
properties:
|
|
"val": "{{ 0 if (is_state('climate.salon', 'off') or is_state('climate.salon', 'unavailable')) else 1 }}"
|
|
"click": "{{ 'false' if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 'true' }}"
|
|
"opacity": "{{ 60 if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 255 }}"
|
|
event:
|
|
"down":
|
|
- service_template: >
|
|
{% if val == 0 -%}
|
|
climate.turn_on
|
|
{% else -%}
|
|
climate.turn_off
|
|
{% endif -%}
|
|
entity_id: "climate.salon"
|
|
|
|
- obj: "p3b30" # tab dots
|
|
event:
|
|
"changed":
|
|
- service: openhasp.command
|
|
target:
|
|
entity_id: openhasp.your_plate
|
|
data:
|
|
keyword: p3b26.text
|
|
parameters: >
|
|
{% if val == 0 %}
|
|
{{ "#000000 \u2022# #909090 \u2022# #909090 \u2022#" | e }}
|
|
{%-elif val == 1 %}
|
|
{{ "#909090 \u2022# #000000 \u2022# #909090 \u2022#" | e }}
|
|
{%-elif val == 2 %}
|
|
{{ "#909090 \u2022# #909090 \u2022# #000000 \u2022#" | e }}
|
|
{% endif %}
|
|
|
|
- obj: "p3b42" # dropdown with fan_modes
|
|
properties:
|
|
"options": >
|
|
{% if state_attr('climate.salon','fan_modes') is not none %}{%for mode in state_attr('climate.salon','fan_modes')%}
|
|
{%- if mode == 'auto' -%}
|
|
Automatic{{"\n"|e}}
|
|
{%- elif mode == 'low' -%}
|
|
Low{{"\n"|e}}
|
|
{%- elif mode == 'medium' -%}
|
|
Medium{{"\n"|e}}
|
|
{%- elif mode == 'high' -%}
|
|
High{{"\n"|e}}
|
|
{%- elif mode == 'turbo' -%}
|
|
Turbo{{"\n"|e}}
|
|
{%- endif -%}
|
|
{%-if not loop.last%}{%-endif%}{%-endfor%}{% endif %}
|
|
"click": "{{ 'false' if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 'true' }}"
|
|
"val": >
|
|
{% if not (is_state('climate.salon','unavailable')) %}{%for mode in state_attr('climate.salon','fan_modes')%}
|
|
{{loop.index -1 if mode == state_attr('climate.salon','fan_mode') }}
|
|
{%-endfor%}{% endif %}
|
|
event:
|
|
"changed":
|
|
- service: climate.set_fan_mode
|
|
target:
|
|
entity_id: climate.salon
|
|
data:
|
|
fan_mode: >
|
|
{% if text == "Automatic" -%}
|
|
auto
|
|
{% elif text == 'Low' -%}
|
|
low
|
|
{% elif text == 'Medium' -%}
|
|
medium
|
|
{% elif text == 'High' -%}
|
|
high
|
|
{% elif text == 'Turbo' -%}
|
|
turbo
|
|
{% endif -%}
|
|
|
|
- obj: "p3b43" # dropdown with hvac_modes
|
|
properties:
|
|
"options": >
|
|
{% if state_attr('climate.salon','hvac_modes') is not none %}{%for mode in state_attr('climate.salon','hvac_modes')%}
|
|
{%- if mode == 'off' -%}
|
|
Off{{"\n"|e}}
|
|
{%- elif mode == 'heat' -%}
|
|
Heating{{"\n"|e}}
|
|
{%- elif mode == 'cool' -%}
|
|
Cooling{{"\n"|e}}
|
|
{%- elif mode == 'heat_cool' -%}
|
|
Heat/Cool{{"\n"|e}}
|
|
{%- elif mode == 'dry' -%}
|
|
Drying{{"\n"|e}}
|
|
{%- elif mode == 'fan_only' -%}
|
|
Fan only{{"\n"|e}}
|
|
{%- else -%}
|
|
On{{"\n"|e}}
|
|
{%- endif -%}
|
|
{%-if not loop.last%}{%-endif%}{%-endfor%}{% endif %}
|
|
"click": "{{ 'false' if (is_state('climate.salon','unavailable') or is_state('climate.salon','unknown')) else 'true' }}"
|
|
"val": >
|
|
{% if not (is_state('climate.salon','unavailable')) %}{%for mode in state_attr('climate.salon','hvac_modes')%}
|
|
{{loop.index -1 if mode == states('climate.salon') }}
|
|
{%-endfor%}{% endif %}
|
|
event:
|
|
"changed":
|
|
- service: climate.set_hvac_mode
|
|
target:
|
|
entity_id: climate.salon
|
|
data:
|
|
hvac_mode: >
|
|
{% if text == "Off" -%}
|
|
off
|
|
{% elif text == 'Heating' -%}
|
|
heat
|
|
{% elif text == 'Cooling' -%}
|
|
cool
|
|
{% elif text == 'Heat/Cool' -%}
|
|
heat_cool
|
|
{% elif text == 'Drying' -%}
|
|
dry
|
|
{% elif text == 'Fan only' -%}
|
|
fan_only
|
|
{% endif -%}
|
|
# solar page4
|
|
- obj: "p4b41" # light-switch toggle button
|
|
properties:
|
|
"val": '{{ 1 if states("switch.relay_inverter_1") == "on" else 0 }}'
|
|
"text": '{{ "\uE6E8" if is_state("switch.relay_inverter_1", "on") else "\uE335" | e }}'
|
|
event:
|
|
"up":
|
|
- service: homeassistant.toggle
|
|
entity_id: "switch.relay_inverter_1"
|
|
|
|
- obj: "p4b43" # temperature label on all pages
|
|
properties:
|
|
"text": '{{ states("sensor.pv_power_3") }}W'
|
|
- obj: "p4b45" # temperature label on all pages
|
|
properties:
|
|
"text": '{{ states("sensor.tacsolar_power") }}W'
|
|
- obj: "p4b47" # temperature label on all pages
|
|
properties:
|
|
"text": '{{ states("sensor.power_compteur") }}W'
|
|
- obj: "p4b49" # temperature label on all pages
|
|
properties:
|
|
"text": '{{ states("sensor.battery_state_of_charge_2") }}%'
|
|
|
|
# weather section
|
|
- obj: "p5b14" # Icon
|
|
properties:
|
|
"src": "{{ 'L:/w-128-' + states('weather.openweathermap') + '.png' if not is_state('weather.openweathermap','unavailable') }}"
|
|
|
|
- obj: "p5b15" # Current date (adjust format to your needs)
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
{%- set day = (states.weather.openweathermap.last_changed).strftime('%w') %}
|
|
{%- set days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] %}
|
|
{{- days[ day | int -1 ] }} {{ (states.weather.openweathermap.last_changed).strftime('%m. %d. ') }}
|
|
{% endif -%}
|
|
|
|
- obj: "p5b16" # Current temp (you can use your own outdoor temp sensor if you have one)
|
|
properties:
|
|
"text": "{{ state_attr('weather.openweathermap','temperature') |string + '°C' if not is_state('weather.openweathermap','unavailable') }}" # or "{{ states('sensor.your_own_temp_sensor') if not is_state('sensor.your_own_temp_sensor','unavailable') else '--' }}°C"
|
|
|
|
- obj: "p5b17" # Current weather condition
|
|
properties:
|
|
"text": >
|
|
{% if is_state('weather.openweathermap','clear-night') -%}
|
|
Clear night
|
|
{% elif is_state('weather.openweathermap','cloudy') -%}
|
|
Cloudy
|
|
{% elif is_state('weather.openweathermap','fog') -%}
|
|
Fog
|
|
{% elif is_state('weather.openweathermap','hail') -%}
|
|
Hail
|
|
{% elif is_state('weather.openweathermap','lightning') -%}
|
|
Lightning
|
|
{% elif is_state('weather.openweathermap','lightning-rainy') -%}
|
|
Thunderstorms
|
|
{% elif is_state('weather.openweathermap','partlycloudy') -%}
|
|
Partly cloudy
|
|
{% elif is_state('weather.openweathermap','pouring') -%}
|
|
Pouring rain
|
|
{% elif is_state('weather.openweathermap','rainy') -%}
|
|
Rainy
|
|
{% elif is_state('weather.openweathermap','snowy') -%}
|
|
Snowy
|
|
{% elif is_state('weather.openweathermap','snowy-rainy') -%}
|
|
Snowy-rainy
|
|
{% elif is_state('weather.openweathermap','sunny') -%}
|
|
Sunny
|
|
{% elif is_state('weather.openweathermap','windy') -%}
|
|
Windy
|
|
{% elif is_state('weather.openweathermap','windy-variant') -%}
|
|
Windy
|
|
{% elif is_state('weather.openweathermap','exceptional') -%}
|
|
Exceptional
|
|
{% elif is_state('weather.openweathermap','unavailable') -%}
|
|
(not available)
|
|
{% else -%}
|
|
{{ states('weather.openweathermap') }}
|
|
{% endif -%}
|
|
|
|
- obj: "p5b10" # tab dots - MAKE SURE YOU UPDATE THIS ONE!!
|
|
event:
|
|
"changed":
|
|
- service: openhasp.command
|
|
target:
|
|
entity_id: openhasp.your_plate
|
|
data:
|
|
keyword: p5b19.text
|
|
parameters: >
|
|
{% if val == 0 %}
|
|
{{ "#000000 \u2022# #909090 \u2022#" | e }}
|
|
{%-elif val == 1 %}
|
|
{{ "#909090 \u2022# #000000 \u2022#" | e }}
|
|
{% endif %}
|
|
|
|
- obj: "p5b21" # Forecast time +1h
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
{%- set update = states('sensor.date') %}
|
|
{%- set midnight = now().replace(hour=0, minute=0, second=0, microsecond=0).timestamp() %}
|
|
{%- set event = as_timestamp(strptime(state_attr('weather.openweathermap','forecast')[1]['datetime'], '%Y-%m-%dT%H:%M:%S%z', default='2020-01-00T00:00:00+00:00')) %}
|
|
{%- set delta = ((event - midnight) // 86400) | int %}
|
|
{%- if delta == 0 %}
|
|
Today
|
|
{%- elif delta == 1 %}
|
|
Tomorrow
|
|
{%- endif %}
|
|
{{- event | timestamp_custom(" %-I %p") }}
|
|
{%- endif %}
|
|
|
|
- obj: "p5b22" # Forecast temp +1h
|
|
properties:
|
|
"text": "{{ state_attr('weather.openweathermap','forecast')[1]['temperature'] if not is_state('weather.openweathermap','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b23" # Forecast condition +1h
|
|
properties:
|
|
"src": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
L:/w-32-{{ state_attr('weather.openweathermap','forecast')[1]['condition'] }}.png
|
|
{%- endif %}
|
|
|
|
- obj: "p5b31" # Forecast time +2h (using Dawn/Morn etc instead of Today/Tomorrow)
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
{%- set hour = as_timestamp(strptime(state_attr('weather.openweathermap','forecast')[3]['datetime'], '%Y-%m-%dT%H:%M:%S%z', default='2020-01-00T00:00:00+00:00')) | timestamp_custom("%-H") | int %}
|
|
{%- if 4 <= hour < 6 %}
|
|
Dawning
|
|
{%- elif 6 <= hour < 9 %}
|
|
Morning
|
|
{%- elif 9 <= hour < 12 %}
|
|
Forenoon
|
|
{%- elif 12 <= hour < 18 %}
|
|
Afternoon
|
|
{%- elif 18 <= hour < 23 %}
|
|
Evening
|
|
{%- elif 23 <= hour or hour < 4 %}
|
|
Night
|
|
{%- endif %}
|
|
{{- " " + hour |string + " o'clock" }}
|
|
{%- endif %}
|
|
|
|
- obj: "p5b32" # Forecast temp +2h
|
|
properties:
|
|
"text": "{{ state_attr('weather.openweathermap','forecast')[3]['temperature'] if not is_state('weather.openweathermap','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b33" # Forecast condition +2h
|
|
properties:
|
|
"src": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
L:/w-32-{{ state_attr('weather.openweathermap','forecast')[3]['condition'] }}.png
|
|
{%- endif %}
|
|
|
|
- obj: "p5b41" # Forecast time +4h
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
{%- set update = states('sensor.date') %}
|
|
{%- set midnight = now().replace(hour=0, minute=0, second=0, microsecond=0).timestamp() %}
|
|
{%- set event = as_timestamp(strptime(state_attr('weather.openweathermap','forecast')[6]['datetime'], '%Y-%m-%dT%H:%M:%S%z', default='2020-01-00T00:00:00+00:00')) %}
|
|
{%- set delta = ((event - midnight) // 86400) | int %}
|
|
{%- if delta == 0 %}
|
|
Today
|
|
{%- elif delta == 1 %}
|
|
Tomorrow
|
|
{%- endif %}
|
|
{{- event | timestamp_custom(" %-I %p") }}
|
|
{%- endif %}
|
|
|
|
- obj: "p5b42" # Forecast temp +4h
|
|
properties:
|
|
"text": "{{ state_attr('weather.openweathermap','forecast')[6]['temperature'] if not is_state('weather.openweathermap','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b43" # Forecast condition +4h
|
|
properties:
|
|
"src": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
L:/w-32-{{ state_attr('weather.openweathermap','forecast')[6]['condition'] }}.png
|
|
{%- endif %}
|
|
|
|
- obj: "p5b51" # Forecast time +8h
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
{%- set update = states('sensor.date') %}
|
|
{%- set midnight = now().replace(hour=0, minute=0, second=0, microsecond=0).timestamp() %}
|
|
{%- set event = as_timestamp(strptime(state_attr('weather.openweathermap','forecast')[12]['datetime'], '%Y-%m-%dT%H:%M:%S%z', default='2020-01-00T00:00:00+00:00')) %}
|
|
{%- set delta = ((event - midnight) // 86400) | int %}
|
|
{%- if delta == 0 %}
|
|
Today
|
|
{%- elif delta == 1 %}
|
|
Tomorrow
|
|
{%- endif %}
|
|
{{- event | timestamp_custom(" %-I %p") }}
|
|
{%- endif %}
|
|
|
|
- obj: "p5b52" # Forecast temp +8h
|
|
properties:
|
|
"text": "{{ state_attr('weather.openweathermap','forecast')[12]['temperature'] if not is_state('weather.openweathermap','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b53" # Forecast condition +8h
|
|
properties:
|
|
"src": >
|
|
{%- if not is_state('weather.openweathermap','unavailable') %}
|
|
L:/w-32-{{ state_attr('weather.openweathermap','forecast')[12]['condition'] }}.png
|
|
{%- endif %}
|
|
|
|
- obj: "p5b61" # Forecast date +1d
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.bessamorel','unavailable') %}
|
|
{%- set now = as_timestamp(strptime(state_attr('weather.bessamorel','forecast')[0]['datetime'], '%Y-%m-%dT%H:%M:%S%z', default='2020-01-00T00:00:00+00:00')) %}
|
|
{%- set day = now | timestamp_custom("%w") %}
|
|
{%- set days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] %}
|
|
{{ days[ day | int -1 ] }}{{- now | timestamp_custom(" %d") }}
|
|
{%- endif %}
|
|
|
|
- obj: "p5b62" # Forecast temp min +1d
|
|
properties:
|
|
"text": "{{ state_attr('weather.bessamorel','forecast')[0]['templow'] if not is_state('weather.bessamorel','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b63" # Forecast temp max +1d
|
|
properties:
|
|
"text": "{{ state_attr('weather.bessamorel','forecast')[0]['temperature'] if not is_state('weather.bessamorel','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b64" # Forecast condition +1d
|
|
properties:
|
|
"src": >
|
|
{%- if not is_state('weather.bessamorel','unavailable') %}
|
|
L:/w-32-{{ state_attr('weather.bessamorel','forecast')[0]['condition'] }}.png
|
|
{%- endif %}
|
|
|
|
- obj: "p5b71" # Forecast date +2d
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.bessamorel','unavailable') %}
|
|
{%- set now = as_timestamp(strptime(state_attr('weather.bessamorel','forecast')[1]['datetime'], '%Y-%m-%dT%H:%M:%S%z', default='2020-01-00T00:00:00+00:00')) %}
|
|
{%- set day = now | timestamp_custom("%w") %}
|
|
{%- set days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] %}
|
|
{{ days[ day | int -1 ] }}{{- now | timestamp_custom(" %d") }}
|
|
{%- endif %}
|
|
|
|
- obj: "p5b72" # Forecast temp min +2d
|
|
properties:
|
|
"text": "{{ state_attr('weather.bessamorel','forecast')[1]['templow'] if not is_state('weather.bessamorel','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b73" # Forecast temp max +2d
|
|
properties:
|
|
"text": "{{ state_attr('weather.bessamorel','forecast')[1]['temperature'] if not is_state('weather.bessamorel','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b74" # Forecast condition +2d
|
|
properties:
|
|
"src": >
|
|
{%- if not is_state('weather.bessamorel','unavailable') %}
|
|
L:/w-32-{{ state_attr('weather.bessamorel','forecast')[1]['condition'] }}.png
|
|
{%- endif %}
|
|
|
|
- obj: "p5b81" # Forecast date +3d
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.bessamorel','unavailable') %}
|
|
{%- set now = as_timestamp(strptime(state_attr('weather.bessamorel','forecast')[2]['datetime'], '%Y-%m-%dT%H:%M:%S%z', default='2020-01-00T00:00:00+00:00')) %}
|
|
{%- set day = now | timestamp_custom("%w") %}
|
|
{%- set days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] %}
|
|
{{ days[ day | int -1 ] }}{{- now | timestamp_custom(" %d") }}
|
|
{%- endif %}
|
|
|
|
- obj: "p5b82" # Forecast temp min +3d
|
|
properties:
|
|
"text": "{{ state_attr('weather.bessamorel','forecast')[2]['templow'] if not is_state('weather.bessamorel','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b83" # Forecast temp max +3d
|
|
properties:
|
|
"text": "{{ state_attr('weather.bessamorel','forecast')[2]['temperature'] if not is_state('weather.bessamorel','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b84" # Forecast condition +3d
|
|
properties:
|
|
"src": >
|
|
{%- if not is_state('weather.bessamorel','unavailable') %}
|
|
L:/w-32-{{ state_attr('weather.bessamorel','forecast')[2]['condition'] }}.png
|
|
{%- endif %}
|
|
|
|
- obj: "p5b91" # Forecast date +4d
|
|
properties:
|
|
"text": >
|
|
{%- if not is_state('weather.bessamorel','unavailable') %}
|
|
{%- set now = as_timestamp(strptime(state_attr('weather.bessamorel','forecast')[3]['datetime'], '%Y-%m-%dT%H:%M:%S%z', default='2020-01-00T00:00:00+00:00')) %}
|
|
{%- set day = now | timestamp_custom("%w") %}
|
|
{%- set days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] %}
|
|
{{ days[ day | int -1 ] }}{{- now | timestamp_custom(" %d") }}
|
|
{%- endif %}
|
|
|
|
- obj: "p5b92" # Forecast temp min +4d
|
|
properties:
|
|
"text": "{{ state_attr('weather.bessamorel','forecast')[3]['templow'] if not is_state('weather.bessamorel','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b93" # Forecast temp max +4d
|
|
properties:
|
|
"text": "{{ state_attr('weather.bessamorel','forecast')[3]['temperature'] if not is_state('weather.bessamorel','unavailable') else '-' }}"
|
|
|
|
- obj: "p5b94" # Forecast condition +4d
|
|
properties:
|
|
"src": >
|
|
{%- if not is_state('weather.bessamorel','unavailable') %}
|
|
L:/w-32-{{ state_attr('weather.bessamorel','forecast')[3]['condition'] }}.png
|
|
{%- endif %}
|