esphome: name: tmpl-clim-basic on_boot: - climate.template.publish: id: test_climate action: IDLE host: api: logger: climate: - platform: template id: test_climate name: Test Basic Climate optimistic: true sensor: test_climate_current_temperature humidity_sensor: test_climate_current_humidity supports_action: true supported_modes: - "OFF" - HEAT - COOL supported_fan_modes: - AUTO - LOW - HIGH supported_swing_modes: - "OFF" - VERTICAL supported_presets: - NONE - ECO visual: min_temperature: 16.0 max_temperature: 30.0 temperature_step: 0.5 on_control: - lambda: |- if (x.get_mode().has_value()) ESP_LOGD("test", "on_control mode=%d", (int) *x.get_mode()); if (x.get_target_temperature().has_value()) ESP_LOGD("test", "on_control target_temperature=%.1f", *x.get_target_temperature()); if (x.get_fan_mode().has_value()) ESP_LOGD("test", "on_control fan_mode=%d", (int) *x.get_fan_mode()); if (x.get_swing_mode().has_value()) ESP_LOGD("test", "on_control swing_mode=%d", (int) *x.get_swing_mode()); if (x.get_preset().has_value()) ESP_LOGD("test", "on_control preset=%d", (int) *x.get_preset()); sensor: - platform: template id: test_climate_current_temperature name: Test Climate Current Temperature lambda: "return 22.5f;" update_interval: 10ms - platform: template id: test_climate_current_humidity name: Test Climate Current Humidity lambda: "return 55.0f;" update_interval: 10ms button: - platform: template id: simulate_device_report name: Simulate Device Report on_press: - climate.template.publish: id: test_climate mode: "OFF" fan_mode: AUTO swing_mode: "OFF" preset: NONE