Ciao a tutti,questi giorni mi sono messo al lavoro per automatizzare delle ventole di raffreddamento in base alla temperatura della CPU dell RPI4.
Ho creato questa automazione che in base ad una determinata temperatura che imposto con degli input_text come valore minimo e massimo mi aumenta o diminuisce la velocità delle ventole.
Questa è una delle automazioni:
- alias: ventole_bassa_velocita_s1
trigger:
platform: state
entity_id: sensor.cpu_temperature
condition:
condition: and
conditions:
- condition: template
value_template: >
{{ trigger.to_state.state|float >= states('input_text.velocita_bassa_sopra_s1')|float and
trigger.from_state.state|float <= states('input_text.velocita_bassa_sotto_s1')|float }}
- condition: state
entity_id: input_boolean.attivazione_automazione_s1
state: 'on'
- condition: state
entity_id: input_boolean.bassa_velocita_s1
state: 'off'
action:
- service: light.turn_on
data:
entity_id: light.tutte_le_ventole_s1
brightness: 255
- delay: 00:00:05
- service: light.turn_on
data_template:
{"brightness": "{{ states('input_number.velocita_bassa_s1')|int }}","entity_id": "light.tutte_le_ventole_s1"}
- service: input_boolean.turn_on
entity_id: input_boolean.bassa_velocita_s1
- service: input_boolean.turn_off
entity_id:
- input_boolean.ventole_spente_s1
- input_boolean.media_velocita_s1
- input_boolean.alta_velocita_s1
Funziona tutto solo che facendo dei test mi sono accorto che molte volte la temperatura della CPU sfora dai parametri impostati per qualche secondo e la velocità cambia molto spesso.
Il mio obbiettivo è che se la temperatura minima e massima della CPU
value_template: >
{{ trigger.to_state.state|float >= states('input_text.velocita_bassa_sopra_s1')|float and
trigger.from_state.state|float <= states('input_text.velocita_bassa_sotto_s1')|float }}
rientra in quei valori per 5 minuti allora parte il tutto senza che sia istantanea.
come posso fare?grazie
Allego il codice che ho scritto nella giusta formattazione:
https://hasteb.in/yucexive.yaml