diff --git a/co2sensor.yaml b/co2sensor.yaml index 1a6101a..e726877 100644 --- a/co2sensor.yaml +++ b/co2sensor.yaml @@ -1,150 +1,151 @@ substitutions: - node_name: !env_var co2ampel + node_name: !env_var co2ampel + esphome: - name: co2ampel_${node_name} - platform: ESP32 - board: esp32doit-devkit-v1 - on_boot: - - display.page.show: boot + name: 'co2ampel_${node_name}' + platform: ESP32 + board: esp32doit-devkit-v1 + on_boot: + - display.page.show: boot + on_loop: + - display.page.show: co2 + ota: - safe_mode: True - password: !secret ota_passwd + safe_mode: true + password: !secret ota_passwd - -logger: - level: DEBUG wifi: - ssid: !secret wifi_ssid - password: !secret wifi_passwd - ap: - ssid: "co2ampel" - password: "" -captive_portal: + ssid: !secret wifi_ssid + password: !secret wifi_passwd + ap: + ssid: co2ampel + password: '' + +captive_portal: null + mqtt: - broker: co2.cyber23.de - topic_prefix: co2ampel/${node_name} - birth_message: - topic: co2ampel/${node_name}/status - payload: online - will_message: - topic: co2ampel/${node_name}/status - payload: offline + broker: co2.cyber23.de + topic_prefix: 'co2ampel/${node_name}' + birth_message: + topic: 'co2ampel/${node_name}/status' + payload: online + will_message: + topic: 'co2ampel/${node_name}/status' + payload: offline uart: - rx_pin: GPIO16 - tx_pin: GPIO17 - baud_rate: 9600 - id: uart_mhz19 + rx_pin: GPIO16 + tx_pin: GPIO17 + baud_rate: 9600 + id: uart_mhz19 light: - - platform: neopixelbus - pin: GPIO4 - num_leds: 12 - name: "ws2812 ring" - id: "ws2812" - restore_mode: ALWAYS_OFF + - platform: fastled_clockless + chipset: WS2812B + pin: GPIO4 + num_leds: 12 + max_refresh_rate: 500ms + rgb_order: GRB + name: ws2812 ring + id: ws2812 + restore_mode: ALWAYS_OFF output: - - platform: ledc - pin: GPIO12 - id: buzzer + - platform: ledc + pin: GPIO12 + id: buzzer sensor: - - platform: mhz19 - update_interval: 10s - automatic_baseline_calibration: true - uart_id: uart_mhz19 - temperature: - name: ${node_name} Temperature - id: mhz19_temp - co2: - name: ${node_name} PPM - id: mhz19_co2 - on_value: - then: - if: - condition: - sensor.in_range: - id: mhz19_co2 - above: 0 - below: 800 - then: - - light.turn_off: - id: ws2812 - - display.page.show: co2 - else: - if: - condition: - sensor.in_range: - id: mhz19_co2 - above: 800 - below: 1000 - then: - - light.turn_on: - id: ws2812 - brightness: 80% - red: 50% - green: 50% - blue: 0% - - display.page.show: co2 - else: - if: - condition: - sensor.in_range: - id: mhz19_co2 - above: 1000 - then: - - light.turn_on: - id: ws2812 - brightness: 100% - red: 100% - green: 0% - blue: 0% - # - output.turn_on: buzzer - # - output.ledc.set_frequency: - # id: buzzer - # frequency: "5000Hz" - # - output.set_level: - # id: buzzer - # level: "20%" - # - delay: 10ms - # - output.turn_off: buzzer - - delay: 500ms - - light.toggle: ws2812 - - delay: 500ms - - light.toggle: ws2812 - - delay: 500ms - - light.toggle: ws2812 - - delay: 500ms - - light.toggle: ws2812 - - lambda: |- - static int num_executions = 0; - ESP_LOGD("main", "I am at execution number %d", num_executions); - num_executions += 1; - - display.page.show: co2 + - platform: mhz19 + update_interval: 10s + automatic_baseline_calibration: true + uart_id: uart_mhz19 + temperature: + name: '${node_name} Temperature' + id: mhz19_temp + co2: + name: '${node_name} PPM' + id: mhz19_co2 + on_value: + then: + if: + condition: + sensor.in_range: + id: mhz19_co2 + above: 0 + below: 800 + then: + - light.turn_on: + id: ws2812 + brightness: 80% + red: 0% + green: 100% + blue: 0% + - display.page.show: co2 + else: + if: + condition: + sensor.in_range: + id: mhz19_co2 + above: 800 + below: 1000 + then: + - light.turn_on: + id: ws2812 + brightness: 80% + red: 50% + green: 40% + blue: 0% + - display.page.show: co2 + else: + if: + condition: + sensor.in_range: + id: mhz19_co2 + above: 1000 + then: + - light.turn_on: + id: ws2812 + brightness: 100% + red: 100% + green: 0% + blue: 0% + - delay: 500ms + - light.toggle: ws2812 + - delay: 500ms + - light.toggle: ws2812 + - delay: 500ms + - light.toggle: ws2812 + - delay: 500ms + - light.toggle: ws2812 + - lambda: >- + static int num_executions = 0; + ESP_LOGD("main", "I am at execution number %d", num_executions); + num_executions += 1; + - display.page.show: co2 i2c: - sda: GPIO21 - scl: GPIO22 + sda: GPIO21 + scl: GPIO22 font: - - file: "font.ttf" - id: cust_font - size: 70 + - file: font.ttf + id: cust_font + size: 65 display: - - platform: ssd1306_i2c - model: "SSD1306 128x64" - address: 0x3C - brightness: 100% - update_interval: 10s - pages: - - id: boot - lambda: |- - it.printf(64, 0, id(cust_font), COLOR_ON, TextAlign::TOP_CENTER, ":-)"); - - id: co2 - lambda: |- + - platform: ssd1306_i2c + model: SSD1306 128x64 + address: 60 + brightness: 100% + update_interval: 10s + pages: + - id: boot + lambda: |- + it.printf(64, 0, id(cust_font), COLOR_ON, TextAlign::TOP_CENTER,":-)"); + - id: co2 + lambda: |- int ergb; - ergb = id(mhz19_co2).state/100; + ergb = id(mhz19_co2).state; it.printf(64, 0, id(cust_font), COLOR_ON, TextAlign::TOP_CENTER, "%.0i", ergb); -# it.printf(64, 16, id(cust_font), COLOR_ON, TextAlign::TOP_CENTER, "%.0fPPM", id(mhz19_co2).state); -# it.printf(64, 40, id(cust_font),TextAlign::TOP_CENTER, "%.0f°C", id(mhz19_temp).state); +# it.printf(64, 16, id(cust_font), COLOR_ON,TextAlign::TOP_CENTER, "%.0fPPM", id(mhz19_co2).state); +# it.printf(64, 40, id(cust_font),TextAlign::TOP_CENTER,"%.0f°C", id(mhz19_temp).state);