Sterowanie bramami w domkach jednorodzinnych nie jest tak problematyczne jak sterowanie tego typu urządzeniami w zabudowie wielorodzinnej. Gdzie tak na prawdę nie mamy możliwości ingerowania w instalacje. Mamy do dyspozycji symulację otwierania przy pomocy pilota. W skrajnych przypadkach, takich jak np. mieszkanie po drugiej stronie budynku skąd nie ma szans dotrzeć sygnał radiowy do bramy, zostajemy bez możliwości sterowania bramą przy pomocy telefonu. Ja na szczęście mam widok na bramę z okna kuchennego.
Dodatkowym utrudnieniem jest kodowanie sygnału z pilota. Nie możemy użyć tu np. sonoff RF, który „podszyłby się” pod oryginalny pilot. Dlatego też ostatecznie okazuje się, że jest tylko jedna opcja jaką możemy wykorzystać. Zintegrować oryginalny pilot z ESP. Na wszystkie esp daje espHome i tak też było w tym przypadku. No dobra, znalazłem jeden wyjątek bramka do czajnika na esp32 gdzie zastosowałem autorskie oprogramowanie.
Oprogramowanie
Wgrywamy na płytkę EspHome. Konfigurujemy sobie switch’a z odpowiednim pinem, którym będziemy sterować przekaźnikiem. Osobiście preferuje komunikację po MQTT więc stosowny wpis z konfiguracją brokera musi się pojawić. Pierwotnie zrealizowałem w konfiguracji automatyzację włącznika jako relay, który sam się wyłączał po 500ms. Niestety tak krótkich impulsów nie wyłapywał node-red więc zrobiłem zwykły włącznik a wyłączanie go po 500ms realizuję już w node-red.
switch:
- platform: gpio
pin: D8
name: "Brama MCU - Remote"
icon: "mdi:gate"
Dlaczego ma tu ingerować Node-red ? Chociażby żeby w momencie otwierania bramy alexa dźwięk informujący o otwarciu bramy. Jest to np. przydatne w momencie kiedy, żona wraca z ciężkimi zakupami a ja czym prędzej zbiegam do garażu aby pomóc 😛 Nie musi dzwonić i informować mnie o swoim powrocie 🙂 Poza tym na pewno coś jeszcze wymyślę więc otwarcie sobie drogi i możliwość obsługi pilota z poziomu node-reda wydała mi się uzasadniona.
Ok, to tyle jeśli chodzi o oprogramowanie. Zajmijmy się teraz stroną hardware’ową.
Niezbędne elementy układu
Elementy, które poza oczywistym esp, w moim przypadku node MCU i pilotem, który musiałem rozebrać to: przekaźnik z cewką na 5V, tranzystor NPN, rezystor 4,7kOhm, dioda prostownicza i kilka kabelków oraz płytka prototypowa aby wszystko w miarę trwale i stabilnie utrzymać w harmonii. Całość polutowana według załączonego schematu. Poniżej przedstawiam efekt ostateczny mojego spawania.
Zastanawiam sie jak to teraz ukryć. Na parapecie leżeć nie może. Jakaś wydrukowana czy gotowa obudowa wpłynie negatywnie na komfort użytkowania okna. Najprawdopodobniej wykuję we wnęcę miejsce na puszkę kieszeniową. Doprowadzę tam zasilanie od przycisku rolety dzięki czemu będę mógł tam wrzucić ładowarkę i rozwiążę problem zasilania esp.
Podsumowanie
Po blisko 2 tygodniach użytkowania jestem zadowolony z rozwiązania. Jedynym problemem, który zaobserwowałem to chwilowy, ograniczony dostęp do internetu w podziemnym garażu. Trzeba podjechać pod bramę zanim użyje się przycisku na telefonie. Mam nadzieję, że kogoś mój projekt zainspiruje. Poniżej zamieszczam kompletny kod mojego ESP, które aktualnie zajmuje się tylko bramą. Każdy jednak wie jak to jest z tymi esp i najprawdopodobniej za chwilę wykorzystam pozostałe piny. Chociażby mam juz pomysł na wykonanie przycisku na ścianie. żeby bramę można było otwierać również z poziomu zwykłego przycisku na ścianie.
esphome:
name: brama_mcu
platform: ESP8266
board: nodemcuv2
wifi:
ssid: "ssid"
password: "haslo"
# Optional manual IP
manual_ip:
static_ip: 192.168.1.109
gateway: 192.168.1.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Brama Hotspot"
password: "12345678"
captive_portal:
logger:
ota:
mqtt:
broker: 192.168.1.110
username: login
password: haslo
discovery: True
# Enable Web server
web_server:
port: 80
sensor:
- platform: wifi_signal
name: "Brama MCU - Wifi Signal"
update_interval: 60s
icon: mdi:wifi
- platform: uptime
name: "Node1 - Uptime"
update_interval: 60s
icon: mdi:clock-outline
switch:
- platform: gpio
pin: D8
name: "Brama MCU - Remote"
icon: "mdi:gate"
text_sensor:
- platform: version
name: "Brama MCU - Version"
icon: mdi:cube-outline