From 16231f148d4e928e97e6f97f6636bd21e5d5c4a6 Mon Sep 17 00:00:00 2001 From: longranger Date: Sun, 28 Nov 2021 14:57:32 -0800 Subject: [PATCH] Add duct fan out thermostate for rack2. --- rack_2.yaml | 114 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 87 insertions(+), 27 deletions(-) diff --git a/rack_2.yaml b/rack_2.yaml index d1b98f9..2be9c3f 100644 --- a/rack_2.yaml +++ b/rack_2.yaml @@ -1,13 +1,11 @@ substitutions: duct_fan_pin: GPIO13 - duct_fan_id: duct_fan_id duct_fan_name: Rack 2 Duct Fan Speed # duct_fan_channel: "0" duct_fan_pwmfreq: 5000Hz wall_fan_pwr_pin: GPIO21 wall_fan_pwr_name: Rack 2 Wall Fan Power wall_fan_spd_pin: GPIO22 - wall_fan_spd_id: wall_fan_spd_id # wall_fan_spd_channel: "2" wall_fan_spd_pwmfreq: 25000Hz wall_fan_spd_name: Rack 2 Wall Fan Speed @@ -15,8 +13,10 @@ substitutions: wall_fan_tach_id: wall_fan_tach_id wall_fan_tach_name: Rack 2 Wall Fan Tach dallas_pin: GPIO32 - dallas_name_1: Rack 2 Temp Hot - dallas_name_2: Rack 2 Temp Cold + dallas_in_addr: "0x1D02131D6063AA28" + dallas_in_name: Rack 3 Temp In + dallas_out_addr: "0x1D01143296570128" + dallas_out_name: Rack 3 Temp Out esphome: name: rack_2 @@ -47,30 +47,29 @@ switch: output: - platform: ledc pin: ${duct_fan_pin} - id: ${duct_fan_id} + id: duct_fan_output_id channel: 0 frequency: ${duct_fan_pwmfreq} - platform: ledc pin: ${wall_fan_spd_pin} - id: ${wall_fan_spd_id} + id: wall_fan_spd_id channel: 2 frequency: ${wall_fan_spd_pwmfreq} fan: - platform: speed - output: ${duct_fan_id} - name: ${duct_fan_name} - # speed: - # low: 0.2 - # medium: 0.6 - # high: 1.0 + id: duct_fan_spd_id + output: duct_fan_output_id + name: ${duct_fan_name} - platform: speed - output: ${wall_fan_spd_id} - name: ${wall_fan_spd_name} - # speed: - # low: 0.0 - # medium: 0.8 - # high: 1.0 + output: wall_fan_spd_id + name: ${wall_fan_spd_name} + +dallas: + - pin: + number: ${dallas_pin} + mode: INPUT_PULLUP + update_interval: 10s sensor: - platform: pulse_counter @@ -83,17 +82,78 @@ sensor: filters: - multiply: 0.5 - platform: dallas - address: 0x1D01143296570128 - name: ${dallas_name_1} + address: ${dallas_in_addr} + name: ${dallas_in_name} - platform: dallas - address: 0x1D02131D6063AA28 - name: ${dallas_name_2} + address: ${dallas_out_addr} + name: ${dallas_out_name} + id: dallas_out_id + on_value: + then: + number.set: + id: duct_fan_speed_target_out + value: !lambda |- + float lo; + float hi; + lo = id(thermostat_rack2_out).target_temperature_low; + hi = id(thermostat_rack2_out).target_temperature_high; + if (x < lo) { + return 0.0; + } + if (x > hi) { + return 100.0; + } + return 100 * (x - lo) / (hi - lo); +number: + - platform: template + id: duct_fan_speed_target_in + name: Duct Fan Speed Target In + optimistic: true + min_value: 0 + max_value: 100 + step: 1 + - platform: template + id: duct_fan_speed_target_out + name: Duct Fan Speed Target Out + optimistic: true + min_value: 0 + max_value: 100 + step: 1 + on_value_range: + above: 25.0 + then: + fan.turn_on: + id: duct_fan_spd_id + speed: !lambda |- + return x; -dallas: - - pin: - number: ${dallas_pin} - mode: INPUT_PULLUP - update_interval: 10s +# Dual-point thermostat +climate: + - platform: thermostat + id: thermostat_rack2_out + name: Rack2 Out + sensor: dallas_out_id + visual: + min_temperature: 60 °F + max_temperature: 100 °F + temperature_step: 1 + default_mode: auto + default_target_temperature_low: 75 °F + default_target_temperature_high: 100 °F + min_cooling_off_time: 60s + min_cooling_run_time: 60s + min_heating_off_time: 60s + min_heating_run_time: 60s + min_idle_time: 60s + heat_action: + - logger.log: "Turning off Rack2 Thermostat" + - fan.turn_off: + id: duct_fan_spd_id + idle_action: + - logger.log: "Turning on Rack2 Thermostat" + cool_action: + - logger.log: "WARNING: Rack2 Thermostat has hit high temp!" + #TODO - provide some kind of warning / action here # Enable logging logger: