From 8a73b474796332a80615b16efa61e69c46eb0116 Mon Sep 17 00:00:00 2001 From: Jan Grewe <jan@faked.org> Date: Fri, 11 Nov 2022 21:35:30 +0100 Subject: [PATCH] switch fan_control from power socket to PWM --- README.md | 1 + packages/fan.yaml | 36 +++++++++++++++++++++++------------- packages/light.yaml | 6 +++--- propbox.yaml | 8 ++++++++ 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index acae40e..15b431c 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Home Grow(n) Monitoring * propbox: ESP32 Propagator Controller * BME280 Temperature and Humidity Sensor (3.3V, I2C) * Dallas DS18B20 Temperature Sensor + * YYAC-3S Triac (5V, PWM) * propbox-light: Nous A1T Smart Plug for Light * propbox-fan: Nous A1T Smart Plug for Fan * growbox: ESP32 Grow Tent Monitor diff --git a/packages/fan.yaml b/packages/fan.yaml index ecedf85..c1ac770 100644 --- a/packages/fan.yaml +++ b/packages/fan.yaml @@ -10,13 +10,17 @@ output: fan: - platform: speed output: fan_dimmer - name: "Extraction Fan" + id: fan_extraction + name: "Fan" prometheus: relabel: - propbox_fan: + fan_extraction: id: fan name: Fan + propbox_fan: + id: power_fan + name: "Power Fan" sensor: - platform: template @@ -62,14 +66,14 @@ select: - platform: template id: temperature_min name: "Fan: Temperature Off" - options: ["15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"] + options: ["16", "17", "18", "19", "20", "21", "22", "23", "24", "25"] initial_option: "21" optimistic: true restore_value: true - platform: template id: humidity_max name: "Fan: Humidity On" - options: ["40", "45", "50", "55", "60", "65", "70", "75", "80", "85", "90"] + options: ["40", "45", "50", "55", "60", "65", "70", "75", "80", "85"] initial_option: "70" optimistic: true restore_value: true @@ -83,15 +87,16 @@ select: - platform: template id: humidity_min name: "Fan: Humidity Off" - options: ["25", "30", "35", "40", "45", "50", "55", "60", "65", "70", "80"] + options: ["30", "35", "40", "45", "50", "55", "60", "65", "70", "80"] initial_option: "40" optimistic: true restore_value: true + switch: - platform: template id: propbox_fan - name: "Status: Fan" + name: "Power: Fan" optimistic: true turn_on_action: - http_request.post: http://${hostname_fan}/switch/power/turn_on @@ -110,37 +115,43 @@ script: // Normal On: // switch fan on when either temperature or humidity is above "max", unless humidity/temperature is below "min" if ( - !id(propbox_fan).state && + !id(fan_extraction).state && ( (id(bme280_temperature).state >= atoi(id(temperature_max).state.c_str()) && id(bme280_humidity).state >= atoi(id(humidity_min).state.c_str())) || (id(bme280_humidity).state >= atoi(id(humidity_max).state.c_str()) && id(bme280_temperature).state >= atoi(id(temperature_min).state.c_str())) ) ) { - id(propbox_fan).turn_on(); + ESP_LOGI("fan", "Fan On"); + auto call = id(fan_extraction).turn_on(); + call.perform(); } // Forced Off, ignoring Hysteresis: // switch fan off when either temperature or humidity are below "min", unless humidity/temperature is above "max" else if ( - id(propbox_fan).state && + id(fan_extraction).state && ( (id(bme280_temperature).state <= atoi(id(temperature_min).state.c_str()) && id(bme280_humidity).state <= atoi(id(humidity_max).state.c_str())) || (id(bme280_humidity).state <= atoi(id(humidity_min).state.c_str()) && id(bme280_temperature).state <= atoi(id(temperature_max).state.c_str())) ) ) { - id(propbox_fan).turn_off(); + ESP_LOGI("fan", "Fan Off (forced)"); + auto call = id(fan_extraction).turn_off(); + call.perform(); } // Normal Off, respecting Hysteresis: // switch fan off when both temperature and humidity are below "max minus hysteresis" else if ( - id(propbox_fan).state && + id(fan_extraction).state && ( id(bme280_temperature).state <= atoi(id(temperature_max).state.c_str()) - atoi(id(temperature_hysteresis).state.c_str()) && id(bme280_humidity).state <= atoi(id(humidity_max).state.c_str()) - atoi(id(humidity_hysteresis).state.c_str()) ) ) { - id(propbox_fan).turn_off(); + ESP_LOGI("fan", "Fan Off"); + auto call = id(fan_extraction).turn_off(); + call.perform(); } - id: fan_state then: @@ -155,4 +166,3 @@ script: } id(propbox_fan).publish_state(state); http.end(); - \ No newline at end of file diff --git a/packages/light.yaml b/packages/light.yaml index 85cfb75..7f109e1 100644 --- a/packages/light.yaml +++ b/packages/light.yaml @@ -8,8 +8,8 @@ substitutions: prometheus: relabel: propbox_light: - id: light - name: Light + id: power_light + name: "Power Light" sensor: - platform: template @@ -29,7 +29,7 @@ select: switch: - platform: template id: propbox_light - name: "Status: Light" + name: "Power: Light" optimistic: true turn_on_action: - http_request.post: http://${hostname_light}/switch/power/turn_on diff --git a/propbox.yaml b/propbox.yaml index 2db9a52..2d84483 100644 --- a/propbox.yaml +++ b/propbox.yaml @@ -9,6 +9,14 @@ substitutions: # Overrides bme280_script: "fan_control" +esphome: + on_boot: + priority: -200 + then: + - lambda: |- + id(fan_state).execute(); + id(light_state).execute(); + packages: base: !include packages/base.yaml esp32: !include packages/esp32.yaml -- GitLab