Windinator – az állóventillátor.
Okos ventillátor fillérekért, az Aroma Diffuser után. Ezekből egy olyan, ami kész termék, 15k környékén van, ennyit azért nem akartam kiadni érte.

Erről a jószágról van szó, szintén LIDL loot, nem volt drága, 5-6k forint környékén vettem. Mondom miért ne, van egy rakás relém itthon, felokosítom én magamnak, easy.
Ventillátor okosítás

Abszolút nem egy bonyolult történet. A gombok eredetileg egyszerűen 3 kábelt kapcsoltak felváltva a 3 sebességhez, ill. van még egy gomb, amivel az oszcillációt lehet kapcsolni (ez egy külön motor az aljában).
Ehhez egy 4-es relékártya elég volt, az oszcillációt kapcsoló relét külön felvettem, a másik hármat pedig interlockolva egymást, mint sebesség kapcsoló állítottam be ESPHome-ban.
fan:
- platform: speed
output: custom_fan
name: "Windinator"
speed_count: 3
oscillation_output: output_osc
output:
- id: output_osc
platform: gpio
pin:
number: 14
inverted: true
- platform: template
id: custom_fan
type: float
write_action:
- if:
condition:
lambda: return ((state == 0));
then:
# action for off
- switch.turn_off: switch_speed_1
- switch.turn_off: switch_speed_2
- switch.turn_off: switch_speed_3
- if:
condition:
lambda: return ((state > 0) && (state < 0.4));
then:
# action for speed 1
- switch.turn_off: switch_speed_2
- switch.turn_off: switch_speed_3
- switch.turn_on: switch_speed_1
- if:
condition:
lambda: return ((state > 0.4) && (state < 0.7));
then:
# action for speed 2
- switch.turn_off: switch_speed_1
- switch.turn_off: switch_speed_3
- switch.turn_on: switch_speed_2
- if:
condition:
lambda: return ((state > 0.7));
then:
# action for speed 3
- switch.turn_off: switch_speed_1
- switch.turn_off: switch_speed_2
- switch.turn_on: switch_speed_3
switch:
- platform: gpio
name: "Speed 1"
id: switch_speed_1
internal: true
pin:
number: 27
inverted: true
interlock: [switch_speed_2, switch_speed_3]
- platform: gpio
name: "Speed 2"
id: switch_speed_2
internal: true
pin:
number: 26
inverted: true
interlock: [switch_speed_1, switch_speed_3]
- platform: gpio
name: "Speed 3"
id: switch_speed_3
internal: true
pin:
number: 25
inverted: true
interlock: [switch_speed_1, switch_speed_2]
A kód egész nagy, de hidd el, nem bonyolult. Az interlock itt nagyon fontos, hogy ne kapjon a motor mindkét vezetéken áramot ilyenkor. Nem hiszem, hogy szeretné.
Van 3 belső kapcsoló és egy templateből összerakott float output, mivel a fan entitáshoz a sebességet kizárólag floatnak tudja átadni. Ez a custom float output pedig a 3 kapcsolót állítja a százalékos érték alapján.
Ez Home Assistantban tök szépen megjelenik így:

Mi a probléma ezzel?
Felmerülhet benned a kérdés, mégis mi lehet itt a gond, hát szépen össze van lőve, meg van írva a kód, jól meg is jelenik HA-ban, kurva jó, nem?
A relék kapcsolásakor jelentkező tüske a probléma. Ezek ugyanis meghülyítik az ESP-t, újraindul miattuk. Legjobb, amikor visszaáll az előzőleg beállított módra ahogy visszatölti a reboot miatt a státuszt, ezzel pedig újra kinyírva magát.
Szóval gyakorlatilag használhatatlan a cucc. Ha max fokozaton indítom el, akkor általában működik, de ha innen kikapcsolom megint megmakkan. A villanymotor a probléma forrása, mert elég sok relét használok és más dolgokkal nincs ilyen gebasz.
Rendeltem egy rakás motorokhoz való zavarszűrős akármit, ami gyakorlatilag pár kondi meg egy ellenállás, csak helyettem már rátették egy PCB-re a kínaiak.
Ha megérkezik updatelek, mert jó lenne ez a herehűtő az asztal alá.
Update – javítás

A „motorokhoz való zavarszűrős akármi” még mindig érkezett meg (3 hónapja rendeltem), viszont vettem egy 4 csatornás SSR modult. Az SSR (Solid State Relay) egy reléket helyettesítő alkatrész. Ahogy a neve is jelzi, nincs benne mozgó alkatrész. Az SSR tehát nem fog tüskéket visszafele árasztani magából az áramkörbe, mert nincsenek benne összeérő fém érintkezők, amik ezt okozzák.
Az SSR modulok drop-in cserélhetőek a sima relé modulokkal, szóval nem volt vele sok dolgom. Ahogy kicseréltem, hibátlanul kezdett működni a ventillátor és így nincs relékattogás sem, ha állítgatom.