Minule jsme si postavili detektor garážových vrat. Jeho řídící čip je skrze Wi-Fi připojený do domácí sítě. Dnes si ukážeme několik technik, jak se k němu dostat z internetu.

Minule jsme si postavili detektor garážových vrat. Jeho řídící čip je skrze Wi-Fi připojený do domácí sítě. Dnes si ukážeme několik technik, jak se k němu dostat z internetu.

Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do  vlastní krabičky  z 3D tiskárny.

Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do vlastní krabičky z 3D tiskárny.

Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do  vlastní krabičky  z 3D tiskárny.

Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do vlastní krabičky z 3D tiskárny.

Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do  vlastní krabičky  z 3D tiskárny.

Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do vlastní krabičky z 3D tiskárny.

Ultrazvukový dálkoměr na stropě garáže jako jednoduchý detektor otevřených vrat a zaparkovaných automobilů

Ultrazvukový dálkoměr na stropě garáže jako jednoduchý detektor otevřených vrat a zaparkovaných automobilů

Ultrazvukový dálkoměr na stropě garáže jako jednoduchý detektor otevřených vrat a zaparkovaných automobilů

Ultrazvukový dálkoměr na stropě garáže jako jednoduchý detektor otevřených vrat a zaparkovaných automobilů

Jednoduchá webová stránka Wi-Fi čipu

Jednoduchá webová stránka Wi-Fi čipu

Přesměrování vnějšího TCP portu na vnitřní na routerech se systémem OpenWrt

Přesměrování vnějšího TCP portu na vnitřní na routerech se systémem OpenWrt

Management Google Cloudu a nejslabší virtuální server s Ubuntu, který se však vejde do měsíční bezplatné kvóty – viz přiložená faktura za leden. Spravovat jej mohu třeba skrze standardní konzoli SSH.

Management Google Cloudu a nejslabší virtuální server s Ubuntu, který se však vejde do měsíční bezplatné kvóty – viz přiložená faktura za leden. Spravovat jej mohu třeba skrze standardní konzoli SSH.

Management Google Cloudu a nejslabší virtuální server s Ubuntu, který se však vejde do měsíční bezplatné kvóty – viz přiložená faktura za leden. Spravovat jej mohu třeba skrze standardní konzoli SSH.

Management Google Cloudu a nejslabší virtuální server s Ubuntu, který se však vejde do měsíční bezplatné kvóty – viz přiložená faktura za leden. Spravovat jej mohu třeba skrze standardní konzoli SSH.

Management Google Cloudu a nejslabší virtuální server s Ubuntu, který se však vejde do měsíční bezplatné kvóty – viz přiložená faktura za leden. Spravovat jej mohu třeba skrze standardní konzoli SSH.

Management Google Cloudu a nejslabší virtuální server s Ubuntu, který se však vejde do měsíční bezplatné kvóty – viz přiložená faktura za leden. Spravovat jej mohu třeba skrze standardní konzoli SSH.

Webový správce mojí chytré domácnosti, o kterou se stará Raspberry Pi 4. Webový frontend ale neběží přímo na Raspberry Pi, ale právě na virtuálním serveru Google Cloud, který se teprve skrze technologii  WebSocket  šifrovaně a hlavně obousměrně spojí se základnou v bytě a streamuje z ní údaje v reálném čase ve formátu JSON.

Webový správce mojí chytré domácnosti, o kterou se stará Raspberry Pi 4. Webový frontend ale neběží přímo na Raspberry Pi, ale právě na virtuálním serveru Google Cloud, který se teprve skrze technologii WebSocket šifrovaně a hlavně obousměrně spojí se základnou v bytě a streamuje z ní údaje v reálném čase ve formátu JSON.

Webový správce mojí chytré domácnosti, o kterou se stará Raspberry Pi 4. Webový frontend ale neběží přímo na Raspberry Pi, ale právě na virtuálním serveru Google Cloud, který se teprve skrze technologii  WebSocket  šifrovaně a hlavně obousměrně spojí se základnou v bytě a streamuje z ní údaje v reálném čase ve formátu JSON.

Webový správce mojí chytré domácnosti, o kterou se stará Raspberry Pi 4. Webový frontend ale neběží přímo na Raspberry Pi, ale právě na virtuálním serveru Google Cloud, který se teprve skrze technologii WebSocket šifrovaně a hlavně obousměrně spojí se základnou v bytě a streamuje z ní údaje v reálném čase ve formátu JSON.

Webový správce mojí chytré domácnosti, o kterou se stará Raspberry Pi 4. Webový frontend ale neběží přímo na Raspberry Pi, ale právě na virtuálním serveru Google Cloud, který se teprve skrze technologii  WebSocket  šifrovaně a hlavně obousměrně spojí se základnou v bytě a streamuje z ní údaje v reálném čase ve formátu JSON.

Webový správce mojí chytré domácnosti, o kterou se stará Raspberry Pi 4. Webový frontend ale neběží přímo na Raspberry Pi, ale právě na virtuálním serveru Google Cloud, který se teprve skrze technologii WebSocket šifrovaně a hlavně obousměrně spojí se základnou v bytě a streamuje z ní údaje v reálném čase ve formátu JSON.

Kryptografický otisk, tedy jakási zkratka celého certifikátu

Kryptografický otisk, tedy jakási zkratka celého certifikátu

Příprava URL webhooku a akce, kterou má po jeho zavolání provést služba IFTTT. Zobrazí notifikaci v mobilní aplikaci.

Příprava URL webhooku a akce, kterou má po jeho zavolání provést služba IFTTT. Zobrazí notifikaci v mobilní aplikaci.

Příprava URL webhooku a akce, kterou má po jeho zavolání provést služba IFTTT. Zobrazí notifikaci v mobilní aplikaci.

Příprava URL webhooku a akce, kterou má po jeho zavolání provést služba IFTTT. Zobrazí notifikaci v mobilní aplikaci.

Příprava URL webhooku a akce, kterou má po jeho zavolání provést služba IFTTT. Zobrazí notifikaci v mobilní aplikaci.

Příprava URL webhooku a akce, kterou má po jeho zavolání provést služba IFTTT. Zobrazí notifikaci v mobilní aplikaci.

Získání textové hodnoty kořenového certifikátu we webovém prohlížeči na Windows

Získání textové hodnoty kořenového certifikátu we webovém prohlížeči na Windows

Získání textové hodnoty kořenového certifikátu we webovém prohlížeči na Windows

Získání textové hodnoty kořenového certifikátu we webovém prohlížeči na Windows

Získání textové hodnoty kořenového certifikátu we webovém prohlížeči na Windows

Získání textové hodnoty kořenového certifikátu we webovém prohlížeči na Windows

Získání textové hodnoty kořenového certifikátu we webovém prohlížeči na Windows

Získání textové hodnoty kořenového certifikátu we webovém prohlížeči na Windows

Opět zavoláme HTTPS URL webhooku služby IFTTT, tentokrát ale na čipu ESP32 a kryptografický otisk nahradíme kompletním zněním kořenového certifikátu. Do terminálu sériové linky pro kontrolu vypisujeme detaily HTTPS komunikace.

Opět zavoláme HTTPS URL webhooku služby IFTTT, tentokrát ale na čipu ESP32 a kryptografický otisk nahradíme kompletním zněním kořenového certifikátu. Do terminálu sériové linky pro kontrolu vypisujeme detaily HTTPS komunikace.

Websocketový ping-pong mezi skriptem v Pythonu na serveru od Active24 (černý SSH terminál v pozadí) a destičkou s čipem ESP8266 za několikanásobným NATem v naší redakci (bílý sériový terminál v popředí) 

Websocketový ping-pong mezi skriptem v Pythonu na serveru od Active24 (černý SSH terminál v pozadí) a destičkou s čipem ESP8266 za několikanásobným NATem v naší redakci (bílý sériový terminál v popředí) 

Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do  vlastní krabičky  z 3D tiskárny.
Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do  vlastní krabičky  z 3D tiskárny.
Detektor vrat je založený na desce Wemos D1 Mini s Wi-Fi čipem ESP8266 a ultrazvukovém dálkoměru HC-SR04. Vše schováme do  vlastní krabičky  z 3D tiskárny.
Ultrazvukový dálkoměr na stropě garáže jako jednoduchý detektor otevřených vrat a zaparkovaných automobilů
24
Fotogalerie

Postavili jsme detektor garážových vrat. Haló, krabičko, jak se k tobě dostanu z internetu?

  • Minule jsme si postavili detektor garážových vrat
  • Jeho řídící čip je skrze Wi-Fi připojený do domácí sítě
  • Dnes si ukážeme několik technik, jak se k němu dostat z internetu

Už dříve jsme ukázali, jak pomocí laserového nebo ultrazvukového dálkoměru a drobné destičky s Wi-Fi čipem ESP8266 postavit jednoduchý zabezpečovací systém do garáže.

Prototyp jsme připevnili na strop a ve smyčce stále dokola měřili vzdálenost k nejbližší překážce pod ním. Z těchto dat jsme pak mohli vyčíst, zda je pod senzorem automobil nebo jsou otevřená vrata.

Základní HTTP server v LAN

Jelikož jsme programovali Wi-Fi čip ESP8266, náš firmware se hned po startu připojil do domácí sítě, získal místní IP adresu a na standardním TCP portu 80 spustil jednoduchý HTTP server. Pak už jen stačilo dohledat adresu čipu třeba skrze populární mobilní aplikaci Fing, vyťukat ji do webového prohlížeče a podívat se, jak je na tom právě teď vaše garáž.

d218726f-e805-4598-afea-a08e72ccfc82645235d3-42fa-4f89-b89d-cfd6b9f44c2d
Ultrazvukový dálkoměr na stropě garáže jako jednoduchý detektor otevřených vrat a zaparkovaných automobilů

Primitivní HTTP server běžící přímo na drobném čipu sice v prostředí Arduino naprogramujete velmi jednoduše na několika řádcích kódu, ale má to jeden principiální háček. Web našeho dálkoměru bude ve výchozím stavu dostupný jen z naší vlastní sítě. Sice se tedy podíváme na stav garáže, ale pouze v případě, že budeme doma, což trošku postrádá smysl.

50fdada7-d5dc-4ebd-b5e5-cbc913afb7b0
Jednoduchá webová stránka Wi-Fi čipu

Jak tedy fungují všechny ty ostatní komerční krabičky internetu věcí počínaje chytrými zásuvkami a konče žárovkami, se kterými se skrze mobilní aplikaci spojíme klidně i z dovolené v Bulharsku? Dnes si ukážeme několik technik, s jejichž pomocí by to mohl domácí bastlíř jednoduše vyřešit.

Přesměrování portů

Tím zdaleka nejjednodušším způsobem, byť zároveň nejméně bezpečným, je primitivní pootevření vrátek do naší domácí sítě s veřejnou internetovou IP adresou.

Pokud bude Wi-Fi čip běžet třeba na LAN adrese 192.168.1.10 a jeho HTTP server na TCP portu 80, na domácím Wi-Fi routeru můžeme v sekci přesměrování portů (port forwarding) nastavit pravidlo, že když se někdo z vnějšího internetu pokusí přihlásit na naši veřejnou internetovou IP adresu a TCP port 80, router jej přesměruje na 192.168.1.10:80.

579dfe63-d816-41b9-942c-db31176656e9
Přesměrování vnějšího TCP portu na vnitřní na routerech se systémem OpenWrt

IPv4 adres je ale relativně omezené množství (zhruba 4 miliardy), a tak celý veřejný rozsah průběžně procházejí roboti z Číny, Ruska a dalších končin a zkoušejí, zda na nich nejsou otevřené právě některé z těchto typických TCP portů. Suma sumárum, náš webový server na ESP8266 by se brzy dostal do obřího indexu vyhledávače internetu věcí Shodan. A to fakt nechcete!

Má to nějaké řešení? Pokud chceme zachovat princip přesměrování portů, podstatnou část podobných automatických čmuchalů odstřelíme volbou nějakého atypického portu, kterým může být prakticky jakékoli kladné celé 16bitové číslo. Zatímco na TCP port 80 se podívá každý bot, takový port 20123 už zkontroluje leda v případě hloubkové analýzy.

Technik, jak zabezpečit přesměrovaný port, je samozřejmě více. Základem je šifrování, nějaká forma autentizace, omezení spojení jen na vybrané IP adresy klientů (white list), anebo třeba namísto přesměrování portů přistupovat do domácí sítě LAN skrze šifrovaný VPN tunel.

HTTP server v internetu

No dobrá, ale co když veřejnou a ideálně neměnnou IP adresu nemáme a do naší domácí LAN se zvenčí prostě nedostaneme? V tom případě můžeme celou komunikaci otočit. Namísto toho, abychom se připojovali k HTTP serveru na čipu ESP8266, se budeme připojovat k libovolnému webovému serveru kdesi na internetu. Buď si jej zaplatíme u některé z běžných hostingových společností, Microsoft Azure, Amazon AWS, anebo využijeme Google Cloud.

36b39520-5d2e-4640-a89e-eef6a79a5d4db98485d5-19b6-429c-b2e0-d01330da79f6bca97c9f-df40-494f-807f-1249304f4194
Management Google Cloudu a nejslabší virtuální server s Ubuntu, který se však vejde do měsíční bezplatné kvóty – viz přiložená faktura za leden. Spravovat jej mohu třeba skrze standardní konzoli SSH.

Google totiž u svých cloudových služeb nabízí poměrně slušnou základní bezplatnou kvótu, do které se běžný domácí kutil bez velkých nároků hravě vejde. Zdarma dosáhnete v rámci služby Compute Engine dokonce i na nejnižší virtuální stroj f1-micro s Ubuntu600 MB RAM10GB úložištěm a hlavně veřejnou statickou IP adresou.

ceeadd3c-1f4f-4ace-83bd-2c0efd2e8d224a138f98-3841-4f15-b675-740341eeece0495b9cdb-d0a6-4e69-ad9c-d38b124640d5
Webový správce mojí chytré domácnosti, o kterou se stará Raspberry Pi 4. Webový frontend ale neběží přímo na Raspberry Pi, ale právě na virtuálním serveru Google Cloud, který se teprve skrze technologii WebSocket šifrovaně a hlavně obousměrně spojí se základnou v bytě a streamuje z ní údaje v reálném čase ve formátu JSON.

Získáte tedy zhruba výkon Raspberry Pi Zero, který sice opravdu není na to, abyste na něm rozjeli vlastní Facebook, bude však bohatě stačit k tomu, aby na něm poslouchal jednoduchý server s webovou prezentací jen pro naše soukromé účely. Tedy jakási brána naší vlastní zbastlené chytré domácnosti.

Pokračování článku patří k prémiovému obsahu pro předplatitele

Chci Premium a Živě.cz bez reklam Od 41 Kč měsíčně

Určitě si přečtěte

Články odjinud