Files
esphome/rack_3.yaml

141 lines
3.1 KiB
YAML

substitutions:
duct_fan_pin: GPIO13
duct_fan_pwmfreq: 5000Hz
duct_fan_spd_name: rack_3_duct_fan_spd
amppwr_pin: GPIO19
amppwr_name: "Denon Pwr"
dallas_pin: GPIO32
dallas_in_addr: "0x7F0114328974D728"
dallas_in_name: Rack 3 Temp In
dallas_out_addr: "0xB801143296ED7B28"
dallas_out_name: Rack 3 Temp Out
esphome:
name: rack_3
platform: ESP32
board: esp32doit-devkit-v1
wifi:
ssid: "kungle-ot"
password: "ThingsWelcomeToKungle"
manual_ip:
static_ip: 192.168.37.74
gateway: 192.168.37.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Rack 3 Fallback Hotspot"
password: "jj0CXEgu3Lzo"
captive_portal:
output:
- platform: ledc
pin: ${duct_fan_pin}
id: duct_fan_output_id
frequency: ${duct_fan_pwmfreq}
fan:
- platform: speed
id: duct_fan_spd_id
output: duct_fan_output_id
name: ${duct_fan_spd_name}
dallas:
- pin:
number: ${dallas_pin}
mode: INPUT_PULLUP
update_interval: 10s
sensor:
- platform: dallas
address: ${dallas_in_addr}
name: ${dallas_in_name}
- platform: dallas
address: ${dallas_out_addr}
name: ${dallas_out_name}
id: dallas_out_id
on_value:
then:
number.set:
id: fan_speed_target_out
value: !lambda |-
float lo;
float hi;
lo = id(thermostat_rack3_out).target_temperature_low;
hi = id(thermostat_rack3_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: fan_speed_target_in
name: Fan Speed Target In
optimistic: true
min_value: 0
max_value: 100
step: 1
- platform: template
id: fan_speed_target_out
name: 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;
# Dual-point thermostat
climate:
- platform: thermostat
id: thermostat_rack3_out
name: Rack3 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 Rack3 Thermostat"
- fan.turn_off:
id: duct_fan_spd_id
idle_action:
- logger.log: "Turning on Rack3 Thermostat"
cool_action:
- logger.log: "WARNING: Rack3 Thermostat has hit high temp!"
#TODO - provide some kind of warning / action here
# Sense when receiver is turned on
binary_sensor:
- platform: gpio
pin: ${amppwr_pin}
name: ${amppwr_name}
device_class: power
# Enable logging
logger:
# Enable Home Assistant API
api:
ota: