Ez a bejegyzés egy kompakt és sokoldalú tesztvezérlőt mutat be, amely egy ESP32-C3 SuperMini lapkára épül. A cél egy olyan eszköz létrehozása volt, amely képes a fényerő, a hőmérséklet és a vízszint monitorozására, valamint vizuális riasztásra.
Felhasznált alkatrészek
- Mikrokontroller: ESP32-C3 SuperMini (a kompakt méret és az USB-C miatt).
- Fényérzékelő: BH1750 digitális fényérzékelő (I2C busz).
- Hőmérséklet érzékelő: NTC termisztor (analóg bemeneten, feszültségosztóval).
- Vízszint érzékelő: Digitális érintkező (lebegőpontos vagy úszókapcsoló).
- Jelzőfény: Piros LED + 220-470 Ohm ellenállás.
Lábkiosztás (Pinout)
A projekt a lapka gyári feliratait követi a maximális átláthatóság érdekében:
| Alkatrész | ESP32-C3 Pin | Funkció |
| BH1750 SDA | GPIO6 (D4) | I2C Adatvonal |
| BH1750 SCL | GPIO7 (D5) | I2C Órajel |
| Hőmérséklet (NTC) | GPIO2 (A0) | ADC Bemenet |
| Vízszint érzékelő | GPIO3 (A1) | Digitális bemenet (GND-re zár) |
| Riasztó LED | GPIO4 (A2) | Digitális kimenet |
ESPHome Konfiguráció (YAML)
A kód tartalmazza a szenzorértékek simítását (moving average) és egy automatizált villogó riasztást, amely közvetlenül a vezérlőn fut, így hálózati hiba esetén is működik.
YAML
esphome:
name: teszt-vezerlo
friendly_name: Teszt Vezérlő
esp32:
board: esp32-c3-devkitm-1
variant: esp32c3
framework:
type: esp-idf
sdkconfig_options:
CONFIG_WPA3_SAE: "n"
wifi:
networks:
- ssid: "Saját wifi name"
password: "Saját jelszó"
fast_connect: true
power_save_mode: NONE
reboot_timeout: 0s
captive_portal:
api:
reboot_timeout: 0s
ota:
- platform: esphome
logger:
level: DEBUG
web_server:
port: 80
# I2C Busz beállítása a gyári feliratok alapján
i2c:
sda: GPIO6
scl: GPIO7
scan: true
# Kimenet a figyelmeztető LED-nek
switch:
- platform: gpio
pin: GPIO4
name: "Figyelmeztető LED"
id: alert_led
sensor:
# BH1750 Fényérzékelő mozgóátlag szűrővel
- platform: bh1750
name: "Fényerősség"
address: 0x23
update_interval: 5s
filters:
- sliding_window_moving_average:
window_size: 10
send_every: 1
unit_of_measurement: "lx"
# NTC Hőmérséklet mérés
- platform: adc
pin: GPIO2
id: ntc_voltage
attenuation: 11db
update_interval: 10s
- platform: resistance
sensor: ntc_voltage
id: ntc_resistance
configuration: DOWNSTREAM
resistor: 5.0kOhm
reference_voltage: 3.3V
- platform: ntc
sensor: ntc_resistance
name: "Hőmérséklet"
calibration:
- 10.0kOhm -> 25°C
- 4.1kOhm -> 45°C
- 25.0kOhm -> 5°C
filters:
- sliding_window_moving_average:
window_size: 15
send_every: 1
# Vízszint érzékelő és helyi villogó automatika
binary_sensor:
- platform: gpio
pin:
number: GPIO3
mode: INPUT_PULLUP
# Ha most inverted: true van és riaszt, akkor ezt állítsd FALSE-ra.
# Ha most inverted: false van és riaszt, akkor ezt állítsd TRUE-ra.
inverted: false
name: "Tartály Megtelés Riasztás"
id: water_level
filters:
- delayed_on: 200ms
- delayed_off: 200ms
on_press:
- while:
condition:
binary_sensor.is_on: water_level
then:
- switch.turn_on: alert_led
- delay: 200ms
- switch.turn_off: alert_led
- delay: 200ms
on_release:
- switch.turn_off: alert_led
Főbb funkciók
- Szenzor simítás: Mind a fényerő, mind a hőmérséklet mérése „sliding window” átlagolást használ, így megszűnnek a zavaró kiugrások a Home Assistant grafikonokon.
- Hardveres biztonság: A vízszint riasztás nem vár a szerver válaszára; az ESP32-C3 belső logikája azonnal elindítja a LED villogtatását, ha vizet érzékel.
- Kompakt felépítés: Az I2C busz használatával kevés lábbal is több érzékelőt tudunk kezelni.
- OTA frissítés: Fissítési lehetőség Wifin vagy OTA.
A tartály állapot jelzés automatizálás YAML kódja:
YAML
alias: "Vízszint Riasztás - Sziréna vezérlés"
description: "Ha megtelik a tartály, bekapcsolja a központi szirénát, ha kiürül, kikapcsolja."
mode: restart
trigger:
- platform: state
entity_id: binary_sensor.haloszoba_vizszint_riasztas
from: "off"
to: "on"
id: "megtelt"
- platform: state
entity_id: binary_sensor.haloszoba_vizszint_riasztas
from: "on"
to: "off"
id: "kiurult"
action:
- choose:
# ELSŐ ESET: Megtelt a tartály - Bekapcsolás
- conditions:
- condition: trigger
id: "megtelt"
sequence:
- action: siren.turn_on
target:
entity_id: siren.okos_kozponti_hub_egyseg
# Ha nem akarsz extra paramétereket, a data részt el is hagyhatod:
data: {}
# MÁSODIK ESET: Kiürült a tartály - Kikapcsolás
- conditions:
- condition: trigger
id: "kiurult"
sequence:
- action: siren.turn_off
target:
entity_id: siren.okos_kozponti_hub_egyseg