Garaż otwarty definicją: open-source do bramy garażowej

Redakcja 2025-04-23 16:34 / Aktualizacja: 2025-11-26 07:18:03 | Udostępnij:

Garaż otwarty definiuje się jako open-source'ową platformę do zdalnego sterowania bramą garażową poprzez Wi-Fi, bez potrzeby subskrypcji chmurowych usług. Projekt opiera się na module sprzętowym z mikrokontrolerem ESP32, sensorach pozycji bramy i lokalnej aplikacji webowej dostępnej w sieci LAN. Kluczowe elementy to pełne wsparcie dla przeglądarek takich jak Chrome, Firefox czy Edge, wymagające WebSocket do komunikacji w czasie rzeczywistym oraz HTTPS dla bezpieczeństwa. Dzięki temu rozwiązaniu zyskujesz niezależność i kontrolę nad własnym systemem automatyki domowej.

Garaż otwarty definicją

Garaż otwarty: open-source sterowanie bramą

Projekt Garaż otwarty pozwala na pełne sterowanie bramą garażową za pomocą prostego interfejsu sieciowego. Całość działa lokalnie, eliminując zależność od zewnętrznych serwerów. Mikrokontroler odbiera polecenia z aplikacji webowej i aktywuje przekaźnik podłączony do silnika bramy. Sensory optyczne lub magnetyczne monitorują pozycję, zapobiegając kolizjom. Kod źródłowy dostępny na GitHub umożliwia modyfikacje pod własne potrzeby. System integruje się z domową siecią Wi-Fi bez dodatkowych mostków.

Instalacja zaczyna się od pobrania firmware'u dedykowanego dla ESP32. Plik flashowany jest za pomocą narzędzi jak ESPtool lub przeglądarkowego esptool.js. Po restarcie urządzenie tworzy punkt dostępu Wi-Fi do konfiguracji. Ustawiasz SSID i hasło sieci domowej, a potem łączysz się z panelem administracyjnym. Aplikacja webowa pojawia się pod adresem IP modułu. Testujesz otwarcie i zamknięcie bramy przyciskami wirtualnymi.

  • Pobierz firmware z repozytorium projektu.
  • Podłącz ESP32 do komputera przez USB.
  • Uruchom komendę flash: esptool.py write_flash 0x1000 firmware.bin.
  • Przełącz w tryb konfiguracji naciskając przycisk BOOT.
  • Połącz się z siecią OpenGarageAP i skonfiguruj Wi-Fi.
  • Sprawdź status w przeglądarce pod 192.168.4.1.

Bezpieczeństwo zapewnia uwierzytelnianie HTTP Basic lub tokeny API. Logi zdarzeń rejestrowane są w pamięci flash. Aktualizacje OTA pozwalają na zdalne wgrywanie nowych wersji bez demontażu. Integracja z Home Assistant następuje poprzez MQTT lub REST API. Projekt ewoluował od ESP8266 do ESP32 dla lepszej wydajności. Społeczność dzieli się wariantami dla różnych silników bram.

Sprzęt garażu otwartego z ESP32

Moduł ESP32 stanowi serce sprzętu Garaż otwarty dzięki dwóm rdzeniom taktowanym do 240 MHz. Posiada wbudowany Wi-Fi i Bluetooth, co upraszcza komunikację. Piny GPIO obsługują przekaźnik 5V do sterowania silnikiem oraz sensory pozycji. Zasilanie 3.3V pobierane jest z transformatora lub USB. Obudowa drukowana 3D chroni przed wilgocią w garażu. Koszt komponentów nie przekracza 50 zł.

Schemat podłączeń obejmuje pin 5 dla przekaźnika, pin 34 dla sensora otwarcia i pin 35 dla zamknięcia. Rezystory pull-up stabilizują sygnały z sensorów reed. Kondensatory filtrują zakłócenia na liniach zasilania. ESP32 obsługuje watchdog timer, resetując się przy awariach. Diody LED sygnalizują status Wi-Fi i pozycji bramy. Prototyp testowany na płytkach deweloperskich jak NodeMCU.

KomponentPIN ESP32Funkcja
PrzekaźnikGPIO5Sterowanie silnikiem
Sensor otwartyGPIO34Detekcja pozycji
Sensor zamkniętyGPIO35Detekcja pozycji
Przycisk resetENRestart modułu

  • Wylutuj piny GPIO na ESP32.
  • Podłącz przekaźnik z diodą zabezpieczającą.
  • Dopasuj sensory do prowadnic bramy.
  • Przetestuj ciągłość obwodów multimetrem.
  • Zabezpiecz połączenia koszulkami termokurczliwymi.
  • Umieść w obudowie z otworami wentylacyjnymi.

Zużycie prądu w trybie czuwania wynosi poniżej 100 mA. ESP32 obsługuje deep sleep, oszczędzając energię. Kompatybilność z zasilaczami 5V/1A jest standardowa. Warianty z wyświetlaczem OLED pokazują status bramy. Rozszerzenia o kamerę ESP32-CAM umożliwiają podgląd. Montaż trwa około 2 godzin dla majsterkowicza.

Web app lokalna w garażu otwartym

Aplikacja webowa Garaż otwarty hostowana jest bezpośrednio na ESP32 pod adresem IP w LAN. Interfejs zbudowany w HTML5, CSS3 i vanilla JavaScript bez frameworków ciężkich. Panel główny wyświetla status bramy, temperaturę i logi. Przyciski pozwalają na otwarcie, zamknięcie lub zatrzymanie. Automatyzacja oparta na harmonogramach lub wyzwalaczach czasowych. Dostęp z dowolnego urządzenia w sieci domowej.

Struktura plików obejmuje index.html, style.css i app.js flashowane do SPIFFS. Serwer HTTP na porcie 80 obsługuje żądania GET/POST. AJAX aktualizuje stan bez odświeżania strony. LocalStorage przechowuje preferencje użytkownika. Ikony SVG skalują się responsywnie. Motyw nocny przełącza się automatycznie.

  • Otwórz plik index.html w edytorze.
  • Dostosuj SSID i hasło w config.js.
  • Wgraj pliki do SPIFFS za pomocą esptool.
  • Sprawdź dostępność pod IP:80.
  • Testuj przyciski w trybie deweloperskim.
  • Dodaj niestandardowe skrypty automatyzacji.

Interfejs zawiera wykres pozycji bramy z ostatnich 24h. Dane zapisywane w JSON na module. Eksport logów do CSV ułatwia analizę. Powiadomienia push via Web Push API w nowszych przeglądarkach. Wielojęzyczność obejmuje polski interfejs. Optymalizacja pod wolne połączenia LAN minimalizuje opóźnienia.

Wsparcie Chrome w garażu otwartym

Chrome od wersji 49 zapewnia pełne wsparcie dla web app Garaż otwarty dzięki natywnej obsłudze WebSocket i Fetch API. Przeglądarka renderuje interfejs z Bootstrap 4 bez błędów. Responsywność na desktopie i mobile działa płynnie. DevTools pozwalają na debugowanie połączeń w czasie rzeczywistym. Globalne pokrycie Chrome wynosi ponad 65%, co czyni go priorytetem.

W Chrome 120+ aktywne są Service Workers do cache'owania zasobów. PWA instalowalna na pulpicie symuluje natywną app. HTTPS wymuszane jest certyfikatem samopodpisanym generowanym na ESP32. Brak blokad mixed content w LAN. Testy na Android Chrome pokazują opóźnienie poniżej 100 ms.

  • Aktualizuj Chrome do najnowszej wersji stabilnej.
  • Włącz flagi eksperymentalne dla WebSocket jeśli potrzeba.
  • Użyj Incognito do testów bez cache.
  • Sprawdź kompatybilność na CanIUse.com.
  • Optymalizuj pod Chrome poprzez preload zasobów.

Chrome obsługuje Canvas2D do wizualizacji logów. Animacje CSS3 płynne na GPU. Wsparcie dla H.264 w podglądzie wideo. Integracja z Google Home via IFTTT możliwa lokalnie. Błędy CORS rozwiązywane headerami serwera.

Wsparcie Firefox i Edge garaż otwarty

Firefox od wersji 52 wspiera WebSocket i LocalStorage niezbędne dla Garaż otwarty. Interfejs renderowany identycznie jak w Chrome dzięki standardom W3C. Edge 79+ bazujący na Chromium dziedziczy pełną kompatybilność. Oba przeglądarki obsługują Fetch API do zapytań asynchronicznych. Pokrycie rynkowe Firefox to 3-5%, Edge 5-7%.

W Firefox Quantum optymalizacja pamięci minimalizuje zużycie na urządzeniach starszych. Nightly builds testują nowe API wcześniej. Edge na Windows 11 integruje się z Cortana bez konfliktów. Samopodpisane certyfikaty akceptowane po ostrzeżeniu. Responsywność na tabletach Edge działa bez skalowania błędnego.

PrzeglądarkaWersja min.WebSocketFetch API
Firefox52TakTak
Edge79TakTak

  • Testuj w Firefox Developer Edition.
  • W Edge włącz strict site isolation dla bezpieczeństwa.
  • Sprawdź konsolę na błędy WebSocket.
  • Użyj about:config do flag WebRTC jeśli rozszerzasz.
  • Porównaj wydajność z Chrome benchmarkami.
  • Raportuj bugi do repozytorium projektu.

Firefox blokuje trackery automatycznie, co pasuje do lokalnego deploymentu. Edge obsługuje WebAuthn do autentykacji biometrycznej. Oba wspierają IndexedDB do przechowywania historii bramy. Animacje requestAnimationFrame płynne. Brak wsparcia dla starszych wersji jak Firefox 48 wymusza aktualizacje.

Wymagania WebSocket garaż otwarty

WebSocket w Garaż otwarty umożliwia dwukierunkową komunikację real-time między przeglądarką a ESP32. Połączenie nawiązywane na porcie 81 z protokołem ws:// lub wss://. Serwer na module wysyła aktualizacje pozycji co 500 ms. Buforowanie wiadomości zapobiega utracie danych. Fallback na polling dla starszych klientów. Standard RFC 6455 zapewniony w pełni.

Implementacja w JavaScript używa new WebSocket(url). Eventy onopen, onmessage, onerror obsługują stany. Reconnect automatyczny po zerwaniu powyżej 5 sekund. Proxy w sieciach korporacyjnych omijane portem niestandardowym. Wydajność na 10 klientach jednoczesnych bez lagu. Debug w Wireshark pokazuje pakiety.

  • Sprawdź wsparcie WebSocket w przeglądarce via navigator.
  • Nawiązuj połączenie po załadowaniu DOM.
  • Obsłuż heartbeat ping/pong co 30s.
  • Zamknij socket przy unload strony.
  • Testuj z toolami jak websocket.org echo test.
  • Monitoruj latency w Network tab.

ESP32 biblioteką WebSocketsServer obsługuje do 8 połączeń. Kompresja PerMessageDeflate opcjonalna dla oszczędności. Integracja z SSE jako alternatywa. Bezpieczeństwo poprzez Origin check. Logi błędów w Serial monitor.

HTTPS i responsywność garaż otwarty

HTTPS w Garaż otwarty generowane jest certyfikatem samopodpisanym na ESP32 za pomocą OpenSSL. Klucz prywatny i cert flashowane do pamięci. Przeglądarki akceptują po dodaniu wyjątku w LAN. Port 443 dla wss://. Zapobiega sniffingowi haseł i komend. Wymagane dla Service Workers.

Responsywność oparta na media queries CSS i Bootstrap grid. Layout dostosowuje się od 320px do 4K. Flexbox centruje elementy na mobile. Touch events dla gestów swipe. Viewport meta tag zapobiega zoomowi. Testy na emulatorach iOS/Android.

  • Generuj cert: openssl req -newkey rsa:2048 -keyout key.pem -out cert.pem.
  • Wgraj do SPIFFS jako /cert.pem i /key.pem.
  • Włącz HTTPS w config serwera.
  • Dodaj wyjątek w przeglądarce dla IP:443.
  • Testuj responsywność w Chrome DevTools devices.
  • Dostosuj breakpoints: 576px, 768px, 992px.

Vue.js nie używane, czysty JS dla lekkości poniżej 100 KB. Lazy loading obrazów. PWA manifest.json dla instalacji. Offline fallback cache. Wydajność Lighthouse powyżej 90/100. Dostępność ARIA labels dla czytników ekranu.

Wykres obciążenia serwera pokazuje stabilność przy HTTPS.

Pytania i odpowiedzi: Garaż otwarty – definicja

  • Co to jest garaż otwarty według polskiego prawa budowlanego?

    Garaż otwarty definiuje się jako obiekt bez ścian zewnętrznych lub ze ścianami zewnętrznymi niepełnymi, w których otwory okienne i drzwiowe zajmują co najmniej 1/3 powierzchni tych ścian. Definicja ta pochodzi z Rozporządzenia Ministra Infrastruktury w sprawie warunków technicznych, jakim powinny odpowiadać budynki i ich usytuowanie.

  • Jakie warunki musi spełniać garaż, aby uznać go za otwarty?

    Garaż musi mieć brak ścian zewnętrznych lub ściany z otworami o powierzchni minimum 1/3 obwodu zewnętrznego. Taka konstrukcja zapewnia wentylację naturalną, kluczową dla klasyfikacji w przepisach.

  • Dlaczego definicja garażu otwartego jest ważna w kontekście bezpieczeństwa pożarowego?

    Klasyfikacja jako garaż otwarty wpływa na wymagania przeciwpożarowe, np. zmniejsza potrzebę dodatkowych instalacji wentylacyjnych czy oddzielenia przeciwpożarowego, dzięki naturalnej wymianie powietrza i mniejszemu ryzyku gromadzenia się dymu.

  • Czy garaż otwarty jest klasyfikowany jako budowla i jakie ma znaczenie dla usytuowania?

    Tak, garaż otwarty traktowany jest jako budowla wymagająca zgłoszenia lub pozwolenia na budowę. Wpływa to na minimalne odległości od granic działki (np. 3 m lub 4 m w zależności od typu), ułatwiając usytuowanie w porównaniu do garażu zamkniętego.