control box
This commit is contained in:
@@ -1,17 +1,16 @@
|
||||
esphome:
|
||||
name: esp-filter2
|
||||
friendly_name: ESP-FILTER2
|
||||
name: esp-control
|
||||
friendly_name: ESP-CONTROL
|
||||
|
||||
esp32:
|
||||
board: esp32-s3-devkitc-1
|
||||
framework:
|
||||
type: arduino
|
||||
type: esp-idf
|
||||
version: latest
|
||||
|
||||
# Enable logging
|
||||
logger:
|
||||
level: verbose
|
||||
|
||||
# Enable Home Assistant API
|
||||
api:
|
||||
encryption:
|
||||
key: !secret api_key
|
||||
@@ -21,16 +20,16 @@ ota:
|
||||
password: !secret ota_password
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
manual_ip:
|
||||
static_ip: 192.168.1.60
|
||||
gateway: 192.168.1.254
|
||||
subnet: 255.255.255.0
|
||||
dns1: 9.9.9.9
|
||||
dns2: 149.112.112.112
|
||||
networks:
|
||||
- ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
manual_ip:
|
||||
static_ip: 192.168.1.60
|
||||
gateway: 192.168.1.254
|
||||
subnet: 255.255.255.0
|
||||
dns1: 9.9.9.9
|
||||
dns2: 149.112.112.112
|
||||
|
||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||
ap:
|
||||
ssid: "Esp32S3N16R8 Fallback Hotspot"
|
||||
password: "v41VUZA7A1VA"
|
||||
@@ -40,19 +39,134 @@ mqtt:
|
||||
port: 18832
|
||||
username: fire
|
||||
password: !secret mqtt_password
|
||||
topic_prefix: "esp_filter_blower_fan"
|
||||
topic_prefix: "esp_control"
|
||||
|
||||
|
||||
output:
|
||||
- platform: ledc
|
||||
pin: GPIO5
|
||||
id: fan_pwm_output
|
||||
id: fan_pwm_output1
|
||||
frequency: 25000Hz
|
||||
- platform: ledc
|
||||
pin: GPIO6
|
||||
id: fan_pwm_output2
|
||||
frequency: 25000Hz
|
||||
- platform: ledc
|
||||
pin: GPIO7
|
||||
id: fan_pwm_output3
|
||||
frequency: 25000Hz
|
||||
|
||||
fan:
|
||||
- platform: speed
|
||||
output: fan_pwm_output
|
||||
name: "12V Blower Fan"
|
||||
output: fan_pwm_output1
|
||||
name: "12V fan 1"
|
||||
- platform: speed
|
||||
output: fan_pwm_output2
|
||||
name: "12V fan 2"
|
||||
- platform: speed
|
||||
output: fan_pwm_output3
|
||||
name: "12V fan 3"
|
||||
|
||||
# ===== PMS5003 PM2.5 Sensor =====
|
||||
uart:
|
||||
id: uart_pms
|
||||
rx_pin: 47
|
||||
tx_pin: 48
|
||||
baud_rate: 9600
|
||||
|
||||
i2c:
|
||||
- id: bus_i2c
|
||||
scl: 20
|
||||
sda: 21
|
||||
scan: true
|
||||
|
||||
sensor:
|
||||
# ===== SGP40 Indoor Air Quality (VOC) =====
|
||||
- platform: sgp4x
|
||||
voc:
|
||||
name: "VOC Index"
|
||||
i2c_id: bus_i2c
|
||||
address: 0x59
|
||||
update_interval: 30s
|
||||
compensation:
|
||||
temperature_source: aht10_temperature
|
||||
humidity_source: aht10_humidity
|
||||
# ===== PMS5003 PM2.5 Sensor =====
|
||||
- platform: pmsx003
|
||||
type: PMSX003
|
||||
pm_1_0:
|
||||
name: "PM <1.0µm Concentration"
|
||||
pm_2_5:
|
||||
name: "PM <2.5µm Concentration"
|
||||
pm_10_0:
|
||||
name: "PM <10.0µm Concentration"
|
||||
uart_id: uart_pms
|
||||
update_interval: 30s
|
||||
# ===== AHT10 Temperature & Humidity =====
|
||||
- platform: aht10
|
||||
temperature:
|
||||
name: "AHT10 Temperature"
|
||||
id: aht10_temperature
|
||||
humidity:
|
||||
name: "AHT10 Humidity"
|
||||
id: aht10_humidity
|
||||
address: 0x38
|
||||
i2c_id: bus_i2c
|
||||
update_interval: 30s
|
||||
# ===== BME680 Indoor Air Quality =====
|
||||
- platform: bme680
|
||||
temperature:
|
||||
name: "BME680 Temperature"
|
||||
oversampling: 16x
|
||||
pressure:
|
||||
name: "BME680 Pressure"
|
||||
humidity:
|
||||
id: "humidity"
|
||||
name: "BME680 Humidity"
|
||||
gas_resistance:
|
||||
id: "gas_resistance"
|
||||
name: "BME680 Gas Resistance"
|
||||
address: 0x77
|
||||
i2c_id: bus_i2c
|
||||
update_interval: 60s
|
||||
- platform: template
|
||||
name: "BME680 Indoor Air Quality"
|
||||
id: iaq
|
||||
icon: "mdi:gauge"
|
||||
# calculation: comp_gas = log(R_gas[ohm]) + 0.04 log(Ohm)/%rh * hum[%rh]
|
||||
lambda: |-
|
||||
return log(id(gas_resistance).state) + 0.04 * id(humidity).state;
|
||||
state_class: "measurement"
|
||||
|
||||
text_sensor:
|
||||
- platform: template
|
||||
name: "BME680 IAQ Classification"
|
||||
icon: "mdi:checkbox-marked-circle-outline"
|
||||
lambda: |-
|
||||
if (int(id(iaq).state) <= 50) {
|
||||
return {"Excellent"};
|
||||
}
|
||||
else if (int(id(iaq).state) <= 100) {
|
||||
return {"Good"};
|
||||
}
|
||||
else if (int(id(iaq).state) <= 150) {
|
||||
return {"Lightly polluted"};
|
||||
}
|
||||
else if (int(id(iaq).state) <= 200) {
|
||||
return {"Moderately polluted"};
|
||||
}
|
||||
else if (int(id(iaq).state) <= 250) {
|
||||
return {"Heavily polluted"};
|
||||
}
|
||||
else if (int(id(iaq).state) <= 350) {
|
||||
return {"Severely polluted"};
|
||||
}
|
||||
else if (int(id(iaq).state) <= 500) {
|
||||
return {"Extremely polluted"};
|
||||
}
|
||||
else {
|
||||
return {"unknown"};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user