diff --git a/mombox.yaml b/mombox.yaml new file mode 100644 index 0000000000000000000000000000000000000000..45bc40ae00a1f07b3d8122a67f8ba767e179ae31 --- /dev/null +++ b/mombox.yaml @@ -0,0 +1,25 @@ +substitutions: + devicename: "mombox" + comment: "Mother Box Controller" + + # Propbox Nodes + hostname_light: "${devicename}-light.${domain}" + hostname_fan: "${devicename}-fan.${domain}" + + # Overrides + fan_script: "fan_control_power" + +packages: + base: !include packages/base.yaml + esp32c3: !include packages/esp32c3.yaml + time: !include packages/time_schedule.yaml + air_bme280: !include packages/air_bme280.yaml + soil_moisture: !include packages/soil_moisture.yaml + water_pump: !include packages/water_pump.yaml + watering: !include packages/watering.yaml + yyac32: !include packages/yyac3s.yaml + fan_settings: !include packages/fan_settings.yaml + fan_power: !include packages/fan_power.yaml + fan_scripts: !include packages/fan_scripts.yaml + light_power: !include packages/light_power.yaml + light_settings: !include packages/light_settings.yaml diff --git a/packages/esp32.yaml b/packages/esp32.yaml index b5d18ce4faedc9d6904ce58b9e8d71462fd554b3..a194fe3e80f340456de89cf1d60664d320e9d042 100644 --- a/packages/esp32.yaml +++ b/packages/esp32.yaml @@ -9,3 +9,6 @@ i2c: wifi: power_save_mode: none + +substitutions: + yyac3s_pin: GPIO13 \ No newline at end of file diff --git a/packages/esp32c3.yaml b/packages/esp32c3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..53be799f98bd285d709574041b562bd5a1a34ae7 --- /dev/null +++ b/packages/esp32c3.yaml @@ -0,0 +1,19 @@ +esp32: + board: esp32-c3-devkitm-1 + variant: esp32c3 + framework: + type: arduino + +esphome: + platformio_options: + board_build.flash_mode: dio + +i2c: + sda: GPIO3 + scl: GPIO4 + +wifi: + power_save_mode: none + +substitutions: + yyac3s_pin: GPIO5 \ No newline at end of file diff --git a/packages/secrets.yaml.dist b/packages/secrets.yaml.dist index e24990fb348c2afc82c5cec96e308074787942c8..e17165284c2b828228892c4ac1da269d960f4f41 100644 --- a/packages/secrets.yaml.dist +++ b/packages/secrets.yaml.dist @@ -8,6 +8,7 @@ pump1_ml_sec: "2.15" # millilitre per second pump1_dose_ml: "1" # millilitre per dose pump2_ml_sec: "2.15" # millilitre per second pump2_dose_ml: "1" # millilitre per dose +water_pump_sec: "3" mqtt_username: "" mqtt_password: "" mqtt_host: "" diff --git a/packages/soil_moisture.yaml b/packages/soil_moisture.yaml new file mode 100644 index 0000000000000000000000000000000000000000..aa006672a8abd74f7f47c17251bb0199b56b1ad3 --- /dev/null +++ b/packages/soil_moisture.yaml @@ -0,0 +1,21 @@ +sensor: + - platform: adc + id: soil_moisture + name: "Soil Moisture" + pin: GPIO0 + update_interval: 5s + unit_of_measurement: "%" + attenuation: 12db + filters: + - median: + window_size: 7 + send_every: 3 + send_first_at: 1 + - calibrate_linear: + - 1.03 -> 100.00 + - 2.22 -> 0.00 + - lambda: | + if (x < 0) return 0; + else if (x > 100) return 100; + else return (x); + accuracy_decimals: 0 diff --git a/packages/water_pump.yaml b/packages/water_pump.yaml new file mode 100644 index 0000000000000000000000000000000000000000..258e7182e692f2bb67a76ffe2274bf5a2c5455f9 --- /dev/null +++ b/packages/water_pump.yaml @@ -0,0 +1,15 @@ +globals: + - id: water_pump_sec + type: float + initial_value: !secret water_pump_sec + +switch: + - platform: gpio + id: water_pump + name: "Water Pump" + pin: GPIO7 + restore_mode: RESTORE_DEFAULT_OFF + on_turn_on: + - then: + - delay: !lambda return id(water_pump_sec) * 1000; + - switch.turn_off: water_pump diff --git a/packages/watering.yaml b/packages/watering.yaml new file mode 100644 index 0000000000000000000000000000000000000000..15ff77e8b2060744e18cb5fec2d2785c21e32c3a --- /dev/null +++ b/packages/watering.yaml @@ -0,0 +1,37 @@ +switch: + - platform: template + id: watering_enabled + name: "Watering" + optimistic: true + restore_mode: RESTORE_DEFAULT_OFF + +select: + - platform: template + id: watering_min + name: "Watering: Min. Value" + options: ["10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60", "65", "70", "75"] + initial_option: "50" + optimistic: true + restore_value: true + +interval: + - interval: 15min + then: + - script.execute: watering + +script: + - id: watering + then: + - lambda: |- + if (id(watering_enabled).state) + { + if (id(soil_moisture).state < atof(id(watering_min).state.c_str())) + { + ESP_LOGI("watering", "Soil moisture too low (%.2f < %.2f)", id(soil_moisture).state, atof(id(watering_min).state.c_str())); + id(water_pump).turn_on(); + } + else + { + ESP_LOGI("watering", "Soil moisture high enough (%.2f >= %.2f)", id(soil_moisture).state, atof(id(watering_min).state.c_str())); + } + } diff --git a/packages/yyac3s.yaml b/packages/yyac3s.yaml index f2580d0286784ee23a098b9fd12bab2d8b1c60cc..ed0a69a8aebb7512eafd08f91b36ba91f474f6e2 100644 --- a/packages/yyac3s.yaml +++ b/packages/yyac3s.yaml @@ -1,10 +1,10 @@ output: - platform: ledc - pin: GPIO13 + pin: ${yyac3s_pin} id: fan_dimmer frequency: 223Hz min_power: 0.36 - max_power: 0.78 + max_power: 0.75 zero_means_zero: true fan: