diff --git a/ampelschirm.svg b/ampelschirm.svg new file mode 100644 index 0000000..3a44e8e --- /dev/null +++ b/ampelschirm.svg @@ -0,0 +1,63 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/box.svg b/box.svg new file mode 100644 index 0000000..5dcb531 --- /dev/null +++ b/box.svg @@ -0,0 +1,95 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/co2sensor.yaml b/co2sensor.yaml new file mode 100644 index 0000000..603a222 --- /dev/null +++ b/co2sensor.yaml @@ -0,0 +1,131 @@ +esphome: + name: co2_sensor + platform: ESP32 + board: esp32doit-devkit-v1 + on_boot: + - display.page.show: boot + +logger: + level: DEBUG +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_passwd + +mqtt: + broker: mqtt.unhb + birth_message: + topic: co2_sensor/status + payload: online + will_message: + topic: co2_sensor/status + payload: offline + +uart: + rx_pin: GPIO17 + tx_pin: GPIO16 + baud_rate: 9600 + id: uart_mhz19 + +light: + - platform: neopixelbus + pin: GPIO4 + num_leds: 12 + name: "ws2812 ring" + id: "ws2812" + restore_mode: ALWAYS_OFF + +output: + - platform: ledc + pin: GPIO12 + id: buzzer + +sensor: + - platform: mhz19 + co2: + name: "MH-Z19 CO2" + 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: 1500 + then: + - light.turn_on: + id: ws2812 + brightness: 80% + red: 50% + green: 50% + blue: 0% + else: + if: + condition: + sensor.in_range: + id: mhz19_co2 + above: 1500 + 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: "80%" + - delay: 500ms + - output.turn_off: buzzer + - lambda: |- + static int num_executions = 0; + ESP_LOGD("main", "I am at execution number %d", num_executions); + num_executions += 1; + + + + temperature: + name: "MH-Z19 Temperature" + id: mhz19_temp + update_interval: 30s + automatic_baseline_calibration: false + uart_id: uart_mhz19 + +i2c: + sda: GPIO21 + scl: GPIO22 + +font: + - file: "font.ttf" + id: cust_font + size: 28 + +display: + - platform: ssd1306_i2c + model: "SSD1306 128x64" + address: 0x3C + brightness: 100% + update_interval: 30s + pages: + - id: boot + lambda: |- + it.printf(64, 32, id(cust_font), COLOR_ON, TextAlign::TOP_CENTER, "starte..."); + - id: co2 + lambda: |- + it.printf(64, 32, 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); diff --git a/font.ttf b/font.ttf new file mode 100644 index 0000000..15237b3 Binary files /dev/null and b/font.ttf differ diff --git a/secrets.yaml.example b/secrets.yaml.example new file mode 100644 index 0000000..1739a52 --- /dev/null +++ b/secrets.yaml.example @@ -0,0 +1,2 @@ +wifi_ssid: 'Freifunk' +wifi_passwd: ''