Versione 1 (originale)
Codice:
type: vertical-stack
cards:
- type: custom:mushroom-title-card
title: Temperatura e umidità
alignment: center
- type: custom:mushroom-chips-card
chips:
- type: template
double_tap_action:
action: none
icon: mdi:minus
tap_action:
action: call-service
service: counter.decrement
data: {}
target:
entity_id: counter.grafici_temperatura_ore
hold_action:
action: call-service
service: counter.reset
data: {}
target: {}
- type: template
icon: mdi:chart-box-outline
content: >-
{{ states('counter.grafici_temperatura_ore') }}
{% if states('counter.grafici_temperatura_ore') | int == 1 %} ora nei
grafici
{% else %} ore nei grafici
{% endif %}
tap_action:
action: more-info
entity: counter.grafici_temperatura_ore
- type: template
icon: mdi:plus
content: ''
tap_action:
action: call-service
service: counter.increment
data: {}
target:
entity_id: counter.grafici_temperatura_ore
double_tap_action:
action: none
hold_action:
action: call-service
service: counter.increment
data: {}
target:
entity_id: counter.grafici_temperatura_ore
alignment: center
- type: custom:config-template-card
entities:
- counter.grafici_temperatura_ore
card:
type: custom:apexcharts-card
update_interval: 1m
graph_span: ${{states['counter.grafici_temperatura_ore'].state+'h'}}
header:
show: true
title: Temperatura soggiorno
show_states: true
colorize_states: false
series:
- entity: sensor.grafico_riscaldamento_soggiorno_sta_riscaldando
name: Sta riscaldando
stroke_width: 0
type: column
color: '#F5B041'
opacity: 0.3
show:
in_header: false
legend_value: false
group_by:
func: avg
duration: 2m
- entity: sensor.tado_riscaldamento_soggiorno_temperature
name: Temp attuale
stroke_width: 3
type: area
color: '#f8e07d'
opacity: 0.25
unit: °C
show:
extremas: true
name_in_header: false
in_header: true
group_by:
func: avg
duration: 2m
- entity: climate.tado_riscaldamento_soggiorno
attribute: temperature
name: Temp desiderata
stroke_width: 1.5
type: line
color: '#CC3333'
opacity: 1
unit: °C
show:
extremas: false
in_header: false
group_by:
func: avg
duration: 2m
- type: custom:config-template-card
entities:
- counter.grafici_temperatura_ore
card:
type: custom:apexcharts-card
update_interval: 1m
graph_span: ${{states['counter.grafici_temperatura_ore'].state+'h'}}
header:
show: true
title: Umidità soggiorno
show_states: true
colorize_states: false
series:
- entity: sensor.tado_riscaldamento_soggiorno_humidity
name: Umidità
stroke_width: 3
type: area
color: '#7AB7FF'
opacity: 0.15
show:
extremas: true
name_in_header: false
in_header: true
Versione 2 (senza temperatura desiderata; non vedi il grafico colorato solo perché in questi giorni l’aria condizionata è spenta)
Codice:
type: vertical-stack
cards:
- type: custom:mushroom-title-card
title: Grafici
alignment: center
- type: custom:vertical-stack-in-card
cards:
- type: entities
entities:
- type: custom:slider-entity-row
entity: >-
input_number.ac_app_9_camera_ale_grafici_temperatura_e_umidita_numero_di_ore_da_mostrare
full_row: false
grow: true
name: Ore da mostrare nei grafici
state_color: false
show_header_toggle: false
card_mod:
style: |
ha-card {
background: transparent;
border-style: none;
padding-top: 22px;
}
- type: custom:config-template-card
entities:
- >-
input_number.ac_app_9_camera_ale_grafici_temperatura_e_umidita_numero_di_ore_da_mostrare
card:
type: custom:apexcharts-card
update_interval: 1m
graph_span: >-
${{states['input_number.ac_app_9_camera_ale_grafici_temperatura_e_umidita_numero_di_ore_da_mostrare'].state+'h'}}
header:
show: true
title: Temperatura
show_states: true
colorize_states: false
series:
- entity: sensor.ac_app_9_camera_ale_grafico_sta_raffrescando
name: Sta raffrescando
stroke_width: 0
type: area
color: '#F5B041'
opacity: 0.3
show:
in_header: false
legend_value: false
- entity: climate.ac_app_9_camera_ale_condizionatore
attribute: current_temperature
name: Temperatura
stroke_width: 2
type: area
color: '#f8e07d'
opacity: 0.25
unit: °C
fill_raw: last
show:
extremas: true
name_in_header: false
in_header: false
card_mod:
style: |
ha-card {
background: transparent;
border-style: none;
}
- type: custom:config-template-card
entities:
- >-
input_number.ac_app_9_camera_ale_grafici_temperatura_e_umidita_numero_di_ore_da_mostrare
card:
type: custom:apexcharts-card
update_interval: 1m
graph_span: >-
${{states['input_number.ac_app_9_camera_ale_grafici_temperatura_e_umidita_numero_di_ore_da_mostrare'].state+'h'}}
header:
show: true
title: Umidità
show_states: true
colorize_states: false
series:
- entity: climate.ac_app_9_camera_ale_condizionatore
attribute: current_humidity
name: Umidità
stroke_width: 2
type: area
color: '#7AB7FF'
unit: '%'
opacity: 0.15
fill_raw: last
show:
extremas: true
name_in_header: false
in_header: false
card_mod:
style: |
ha-card {
background: transparent;
border-style: none;
}
Versione 3 (quella che mi piace di più, ma ti sconsiglio di utilizzare perché purtroppo il creatore del tipo di grafico utilizzato non porterà avanti il progetto; non vedi il grafico colorato di verde solo perché l’aria condizionata è spenta in questi giorni)
type: vertical-stack
cards:
- type: custom:mushroom-title-card
title: Grafici
alignment: center
- type: custom:history-explorer-card
cardName: Appartamento 9
graphs:
- type: line
title: Temperatura (verde = sta raffrescando)
entities:
- entity: sensor.ac_app_9_camera_andrea_grafico_temperatura_sta_raffrescando
name: sta raffrescando
color: RGBA(60,179,113,0.5)
fill: RGBA(60,179,113,0.5)
width: 0
process: |
( state > 0 ) ? state = Math.round(state*10)/10 : "unavailable"
- entity: sensor.temperatura_app_9_camera_andrea
name: temperatura
color: rgba(244, 209, 96, 1)
width: 2
fill: rgba(244, 209, 96, 0.2)
process: |
state = Math.round(state*10)/10
options:
showSamples: false
- type: line
title: Umidità (verde = sta raffrescando)
entities:
- entity: sensor.ac_app_9_camera_andrea_grafico_umidita_sta_raffrescando
name: sta raffrescando
color: RGBA(60,179,113,0.5)
fill: RGBA(60,179,113,0.5)
width: 0
process: |
( state > 0 ) ? state : "unavailable"
- entity: sensor.umidita_app_9_camera_andrea
name: umidità
color: rgba(122, 183, 255, 1)
width: 2
fill: rgba(122, 183, 255, 0.15)
process: |
state = Math.round(state)
options:
showSamples: false
showCurrentValues: true
combineSameUnits: true
refresh:
interval: 60
defaultTimeRange: 12h
defaultTimeOffset: 15m
header: hide
uiLayout:
toolbar: bottom
selector: hide
labelsVisible: false
labelAreaWidth: 35
tooltip:
showDuration: true
showUnavailable: true
legendVisible: false
lineMode: curves
uiColors:
buttons: rgba(0,0,0,0.05)
Le soluzioni 1 e 2 richiedono di creare un template sensor che ho dettagliato a lungo nei miei precedenti messaggi e che ti scrivo qua:
template:
#### GRAFICI RISCALDAMENTO (codice aggiunto il 10 gennaio 2023) E RAFFRESCAMENTO (codice aggiunto il 1 giugno 2023)
#### Sensori creati per avere la serie "Sta riscaldando / sta raffrescando" nei grafici relativi alla temperatura delle stanze. La logica è la seguente:
#### Ho creato un apex-chart card volto a mostrare il grafico del riscaldamento / raffrescamento in ogni stanza.
#### Il grafico ha tre serie:
#### 1) serie uno: temperatura attuale
#### 2) serie due: temperatura desiderata
#### 3) serie tre: sta riscaldando / sta raffrescando -> serire che colorara il grafico se tado sta riscaldando / l'aria condizionata sta raffrescando.
#### Per la serie tre ho dovuto creare dei sensori fittizi (i vari template sensor qui sotto creati) tali per cui
#### - quando il riscaldamento / aria condizionata è 0 -> il sensore non fornisce alcun valore (risultato ottenuto con la funzione availability, la quale disattiva il sensore [availabiliy = 0] quando tado non sta riscaldando / l'aria condizionata non sta raffrescando)
#### - quando il riscaldamento / aria condizionata è diverso da 0 -> fornisce il medesimo valore della temperatura attuale, cosicchè ho una serie che si sovrappone perfettamente alla temperatura attuale
- sensor:
- name: Grafico riscaldamento soggiorno - sta riscaldando
state: "{{ states('sensor.tado_riscaldamento_soggiorno_temperature') | float }}"
availability: "{{ states('sensor.tado_riscaldamento_soggiorno_heating') | int}}"
La soluzione 3 richiede il seguente template sensor:
template:
- sensor:
- name: ac - app 9 - camera Andrea - grafico temperatura - sta raffrescando
state: >
{% if is_state("climate.ac_app_9_camera_andrea_condizionatore","cool") -%}
{{ states("sensor.temperatura_app_9_camera_andrea") }}
{%- else -%}
0
{%- endif %}
- sensor:
- name: ac - app 9 - camera Andrea - grafico umidità - sta raffrescando
state: >
{% if is_state("climate.ac_app_9_camera_andrea_condizionatore","cool") -%}
{{ states("sensor.umidita_app_9_camera_andrea") }}
{%- else -%}
0
{%- endif %}
Naturalmente devi scaricare tutte le card HACS che vedi utilizzate nel codice
Ciao!