blueprint: name: Auto AC Control description: Auto Turn on Air Conditioning domain: automation author: Tiziano Trabattoni input: temp_threshold: name: Temperature Threshold to switch AC on description: This threshold is the temperature above which AC must be switched on default: 29 selector: number: min: 25 max: 40 unit_of_measurement: celsius temp_hist: name: Temperature Threshold to switch AC on description: This gap is difference between on and off default: 2 selector: number: min: 1 max: 3 unit_of_measurement: celsius climate_target: name: Termostat Control description: Identifies the AC climate to be controlled selector: entity: filter: - domain: climate mode: restart # Calcoliamo matematicamente i valori statici qui per i trigger nativi trigger_variables: target_temp: !input temp_threshold target_hist: !input temp_hist # Calcolo automatico della soglia di spegnimento (es. 29 - 2 = 27) soglia_off: "{{ ( ( target_temp | float(0) ) - ( target_hist | float(0) ) ) | default(27.0) }}" # Questa variabile serve SOLO per semplificare il codice dentro le azioni (actions) variables: target_AC: !input climate_target triggers: # Si attiva IMMEDIATAMENTE se la temperatura sale sopra la soglia (o se abbassi la soglia sotto la temperatura attuale) - trigger: numeric_state entity_id: !input climate_target attribute: current_temperature above: !input temp_threshold id: AC_on # Si attiva IMMEDIATAMENTE se la temperatura scende sotto la soglia meno l'isteresi # AC_off: Risolve il problema del "none" calcolando l'isteresi con valori di ripiego sicuri per il reload YAML. - trigger: template value_template: >- {% set entity = '!input climate_target' %} {% set current = state_attr(entity, 'current_temperature') | float(0) %} {% set t_temp = target_temp | float(29.0) %} {% set t_hist = target_hist | float(2.0) %} {% set calcolo_soglia_off = t_temp - t_hist %} {{ current < calcolo_soglia_off and current > 0 }} id: AC_off conditions: [] actions: - choose: - conditions: - condition: trigger id: - AC_on sequence: - action: climate.set_hvac_mode target: entity_id: !input climate_target data: hvac_mode: cool - action: climate.set_fan_mode target: entity_id: !input climate_target data: fan_mode: >- {% set curr_temp = state_attr(target_AC, 'current_temperature') | float(0) -%} {% set targ_temp = state_attr(target_AC, 'temperature') | float(0) -%} {% set diff_temp = curr_temp - targ_temp -%} {% if diff_temp >= 4 -%} 5 {% elif diff_temp >= 3 and diff_temp < 4 -%} 4 {% elif diff_temp >= 2 and diff_temp < 3 -%} 3 {% else -%} Auto {% endif %} - conditions: - condition: trigger id: - AC_off sequence: - action: climate.set_hvac_mode target: entity_id: !input climate_target data: hvac_mode: "off" - action: climate.set_fan_mode target: entity_id: !input climate_target data: fan_mode: Auto