Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- esphome:
- name: hvacmonitor
- friendly_name: HVAC Monitor
- esp32:
- board: esp32dev
- framework:
- type: arduino
- # Enable logging
- logger:
- # Enable Home Assistant API
- api:
- encryption:
- key: "CoIiyphdAMtXRKyVSBWAR9qfaApz8k4giUEwgJkUhY8="
- ota:
- password: "f5e0e287db86c78da61c4995b0d1e999"
- wifi:
- ssid: !secret wifi_ssid
- password: !secret wifi_password
- # Enable fallback hotspot (captive portal) in case wifi connection fails
- ap:
- ssid: "Hvacmonitor Fallback Hotspot"
- password: "R6fpenQBvuhX"
- i2c:
- - id: "bus_a"
- sda: GPIO23
- scl: GPIO33
- scan: true
- - id: "bus_b"
- sda: GPIO19
- scl: GPIO32
- scan: true
- bme680_bsec:
- - id: hvac_in
- i2c_id: "bus_a"
- address: 0x77
- - id: hvac_out
- i2c_id: "bus_b"
- address: 0x77
- captive_portal:
- sensor:
- - platform: bme680_bsec
- bme680_bsec_id: hvac_in
- temperature:
- name: "HVAC Intake Temperature"
- pressure:
- name: "HVAC Intake Pressure"
- id: pre1
- humidity:
- name: "HVAC Intake Humidity"
- id: hum1
- iaq:
- name: "HVAC Intake IAQ"
- id: iaq
- co2_equivalent:
- name: "HVAC Intake CO2 Equivalent"
- gas_resistance:
- name: "BME680 Gas Resistance"
- id: gr_in
- breath_voc_equivalent:
- name: "HVAC Intake Breath VOC Equivalent"
- - platform: bme680_bsec
- bme680_bsec_id: hvac_out
- temperature:
- name: "HVAC Out Temperature"
- pressure:
- name: "HVAC Out Pressure"
- id: pre2
- humidity:
- name: "HVAC Out Humidity"
- id: hum2
- iaq:
- name: "HVAC Out IAQ"
- id: iaq2
- co2_equivalent:
- name: "HVAC Out CO2 Equivalent"
- gas_resistance:
- name: "BME680 Gas Resistance"
- id: gr_out
- breath_voc_equivalent:
- name: "HVAC Out Breath VOC Equivalent"
- - platform: dht
- pin: GPIO18
- temperature:
- name: "Sensor Board Temperature"
- humidity:
- name: "Sensor Board Humidity"
- update_interval: 5s
- - platform: template
- name: "BME680 IAQ"
- id: IAQ
- unit_of_measurement: IAQ
- lambda: 'return log(id(gr_in).state) + 0.04 * id(hum1).state;'
- - platform: template
- name: "BME680 IAQ2"
- id: IAQ2
- unit_of_measurement: IAQ
- lambda: 'return log(id(gr_out).state) + 0.04 * id(hum2).state;'
- text_sensor:
- - platform: bme680_bsec
- bme680_bsec_id: hvac_in
- iaq_accuracy:
- name: "HVAC Intake IAQ Accuracy"
- - platform: bme680_bsec
- bme680_bsec_id: hvac_out
- iaq_accuracy:
- name: "HVAC Out IAQ Accuracy"
- - platform: template
- name: "HVAC Intake IAQ Classification"
- icon: "mdi:checkbox-marked-circle-outline"
- lambda: |-
- if ( int(id(iaq).state) <= 50) {
- return {"Excellent"};
- }
- else if (int(id(iaq).state) >= 51 && int(id(iaq).state) <= 100) {
- return {"Good"};
- }
- else if (int(id(iaq).state) >= 101 && int(id(iaq).state) <= 150) {
- return {"Lightly polluted"};
- }
- else if (int(id(iaq).state) >= 151 && int(id(iaq).state) <= 200) {
- return {"Moderately polluted"};
- }
- else if (int(id(iaq).state) >= 201 && int(id(iaq).state) <= 250) {
- return {"Heavily polluted"};
- }
- else if (int(id(iaq).state) >= 251 && int(id(iaq).state) <= 350) {
- return {"Severely polluted"};
- }
- else if (int(id(iaq).state) >= 351) {
- return {"Extremely polluted"};
- }
- else {
- return {"error"};
- }
- - platform: template
- name: "HVAC Out IAQ Classification"
- icon: "mdi:checkbox-marked-circle-outline"
- lambda: |-
- if ( int(id(iaq2).state) <= 50) {
- return {"Excellent"};
- }
- else if (int(id(iaq2).state) >= 51 && int(id(iaq2).state) <= 100) {
- return {"Good"};
- }
- else if (int(id(iaq2).state) >= 101 && int(id(iaq2).state) <= 150) {
- return {"Lightly polluted"};
- }
- else if (int(id(iaq2).state) >= 151 && int(id(iaq2).state) <= 200) {
- return {"Moderately polluted"};
- }
- else if (int(id(iaq2).state) >= 201 && int(id(iaq2).state) <= 250) {
- return {"Heavily polluted"};
- }
- else if (int(id(iaq2).state) >= 251 && int(id(iaq2).state) <= 350) {
- return {"Severely polluted"};
- }
- else if (int(id(iaq2).state) >= 351) {
- return {"Extremely polluted"};
- }
- else {
- return {"error"};
- }
- return (((id(temp_in).state)-(id(temp_out).state))*1.8)+32;
- return ((id(temp_in).state)*1.8)+32) - ((id(temp_out).state)*1.8)+32);
Advertisement
Add Comment
Please, Sign In to add comment