Imádom az ESPHome-ot. Rengeteg szenzort csináltam és okosítottam fel eredetileg nem okos cuccot. Ez most épp egy ultrahangos aroma diffuser.
Aroma Diffuser
Konkrétan a tegnapi projektem, egy egész napos szenvedés volt, de végül egész jó lett az eredmény.

A márka alapján kitalálhattad, hogy ez egy Lidl termék. Nem volt kifejezetten drága sem. Tulajdonképpen ez egy ultrahangos párásító, amibe vizet teszel meg pár csepp illóolajat.
Automatizálni mókolás nélkül nem tudod: egy gomb megnyomásával kapcsolod ki és be. Így ha mondjuk egy smart socketet tennél mögé, max kikapcsolni tudod, ha előtte kézzel bekapcsoltad. Időzíteni a kikapcsolást legalább így is lehet, állítható hány óra múlva kapcsoljon ki, ill. okos annyira, hogy szépen kikapcsol, ha kifogy belőle a lötyi.
Szerettem volna ki- és bekapcsolni Home Assistantból, illetve jó lett volna az RGB ledeket is felokosítani, hogy azt is onnan lehessen beállítani. Kvázi lámpaként világít a cucc egész teteje, egész jól.
Okosítás
Vettem egy rakás ESP01-S-t még korábban és állítható DC-DC konvertereket.

24V-os a cucc, amit a DC-DC konverterrel 3.3V-ra kellett csökkenteni.
Szerencsére egész sok hely van belül, így elfértem mindennel: a DC-DC konverter, az ESP01S és két optocsatoló kellett.
A működése tök egyszerű:
- az egyik optocsatoló a bekapcsoló gombra van kötve, ezt röviden meghúzva fogjuk tudni ki- és bekapcsolni
- a másik optocsatoló egy olyan pontra van kötve a panelen, amin akkor van csak áram, ha éppen be van kapcsolva. Ebből fogjuk tudni az aktuális állapotot.
ESPHome-ban ez amúgy így néz ki:
esphome:
name: aroma-diffuser
friendly_name: aroma_diffuser
on_boot:
priority: -100
then:
- switch.turn_off: aroma_diffuser_power
switch:
# A power gomb rövid megnyomását intézi
- platform: gpio
name: "Power button momentary"
icon: "mdi:electric-switch"
pin:
number: GPIO3
id: power_short_press
internal: true
inverted: no
on_turn_on:
- delay: 150ms
- switch.turn_off: power_short_press
# Template switch, amivel ki/be lehet kapcsolni a gépet a státusz alapján
- platform: template
name: "Aroma Diffuser"
id: aroma_diffuser_power
icon: "mdi:scent"
lambda: |-
if (id(pc_power_status).state) {
return true;
} else {
return false;
}
turn_on_action:
- switch.turn_on: power_short_press
turn_off_action:
- switch.turn_on: power_short_press
# Template sensor, amit bekapcsoltra állítunk, ha van legalább 1 pulse/sec
binary_sensor:
- platform: template
name: "Status"
id: pc_power_status
# Pulse Counterrel vizsgálom, hogy küldött-e jelet a panel, hogy be van kapcsolva
sensor:
- platform: pulse_counter
pin: GPIO0
name: "Power on pulses"
internal: true
update_interval: 1s
on_value:
then:
- binary_sensor.template.publish:
id: pc_power_status
state: !lambda 'return x > 1;'
Ez a bizonyos „akkor van csak rajta áram, ha be van kapcsolva” annyira nem volt egyszerű. Valami olyan pontot találtam, amin tök jól 1-3V közötti fesz ingadozik folyamatosan, ha megy a gép.
Ehhez emiatt egy pulse countert raktam be, ami azt számolja, hányszor lesz HIGH a jel azon a GPIO-n. Másodpercenként elég sokszor, így 1 másodpercre tehettem az update_intervalt, ami nagyon fasza, mert szinte azonnal tudjuk így, hogy milyen állapotban van a ketyere.
Erre egyszerűen tettem egy eseményt, ami lefut, ha változik az érték. Ez az érték ha pedig nagyobb, mint 1, akkor tudjuk, hogy be van kapcsolva a gép. Ezzel az információval pedig egy binary_sensort pont lehet kapcsolgatni, így mindig tudjuk az aktuális állapotot.
A switch, amivel pedig ki-be lehet kapcsolni a cuccot, ez alapján marad bekapcsolt vagy kikapcsolt állapotban.

Home Assistantban így néz ki.
Mostantól tök jól automatizálható:
- bekapcsol, ha reggel felkelünk,
- kikapcsol, ha elmegyünk itthonról,
- ha a bekapcsolás után azonnal kikapcsol, az azt jelenti, hogy kifogyott belőle a víz, szóval tud értesítést küldeni, hogy újra kell tölteni
- x időnként kikapcsol, hogy ne legyen „túl sok” az illat
One comment on “ESPHome okosítás – Aroma Diffuser”