02/09/2024
V dnešní době se chytré domácnosti stávají stále dostupnějšími a populárnějšími. Zatímco mnoho systémů spoléhá na Google Assistant nebo Amazon Alexa, uživatelé Apple často hledají řešení kompatibilní s jejich ekosystémem. Ovládání domácích spotřebičů pomocí Apple HomeKit a Siri je lákavá představa, ale běžně se setkáváme s požadavkem na Apple laptop a aplikaci Homebridge. Tento článek vám ukáže, jak se tomuto požadavku vyhnout a vytvořit plně funkční systém chytré domácnosti s použitím levného a všestranného modulu ESP8266 nebo ESP32, a to zcela bez nutnosti Homebridge. Připravte se na to, že vaše domácnost bude poslouchat na slovo, přímo z vašeho iPhonu!
- Co je knihovna Arduino-HomeKit pro ESP8266/ESP32?
- Potřebný hardware pro projekt Apple HomeKit s ESP8266
- Schéma zapojení a připojení relé modulu k NodeMCU
- Nastavení HomeKitu na ESP8266: Programování v Arduino IDE
- Krok 1: Stažení a instalace knihovny Arduino-HomeKit
- Krok 2: Úprava souboru Example02_Switch.ino
- Krok 3: Konfigurace Wi-Fi v wifi_info.h
- Krok 4: Úpravy v my_accessory.c pro více zařízení
- Krok 5: Změna ID příslušenství
- Krok 6: Změna referencí na přepínače
- Krok 7: Definice charakteristik přepínačů
- Krok 8: Externí deklarace charakteristik v Example02_Switch.ino
- Krok 9: Definice PINů pro přepínače
- Krok 10: Nastavení setter funkcí a inicializace
- Nastavení aplikace Apple HomeKit
- Často kladené otázky (FAQ)
- Závěr
Co je knihovna Arduino-HomeKit pro ESP8266/ESP32?
Základem našeho řešení je speciální knihovna Arduino, která představuje nativní implementaci příslušenství Apple HomeKit pro jádro ESP8266 Arduino. To znamená, že funguje přímo s vaším modulem ESP8266 nebo ESP32, aniž by bylo potřeba jakýchkoli dalších mostů (jako je Homebridge). Tato knihovna je primárně založena na projektu esp-homekit pro ESP-OPEN-RTOS, ale byla převedena do čistého prostředí Arduino. Cílem je umožnit snadné a rychlé vytváření projektů pomocí Arduino IDE (nebo Eclipse se Sloeber, PlatformIO).

Jedním z klíčových poznatků tohoto projektu je, že Apple HomeKit může být implementován a fungovat správně i bez operačního systému v reálném čase (RTOS), což bylo dříve předmětem diskusí. Knihovna byla postavena s ESP8266 Arduino Core 2.6.3 a vyšší verze jsou doporučeny pro bezproblémovou kompilaci. Důležitou zprávou je také plná podpora pro ESP32 (od 15. dubna 2020), která přináší výrazné zlepšení výkonu. Párování s ESP32 trvá přibližně 1,2 sekundy a ověření párování méně než 0,1 sekundy, což je zhruba desetkrát rychlejší než u ESP8266. Pro ESP32 je navíc použita knihovna WolfSSL verze 4.3.0-stable s podporou hardwarové akcelerace, což přispívá k jeho vynikajícímu výkonu.
Potřebný hardware pro projekt Apple HomeKit s ESP8266
Abyste mohli začít s tímto projektem chytré domácnosti, budete potřebovat následující komponenty:
- Modul ESP8266 NodeMCU (nebo ESP32)
- Relé modul 5V (pro ovládání spotřebičů, doporučujeme 4kanálový pro ovládání více zařízení)
- Propojovací vodiče (jumper wires)
- Objímka na žárovku (pro 230V AC)
- Žárovka (60W/100W)
- iPhone SE nebo jakýkoli iPhone/iPad, který podporuje aplikaci Apple HomeKit
Schéma zapojení a připojení relé modulu k NodeMCU
Zapojení obvodu je poměrně jednoduché. Následující tabulka a popis ukazují, jak připojit relé modul k desce NodeMCU. Můžete zapojit až čtyři spotřebiče, pokud použijete 4kanálový relé modul a odpovídající počet žárovek/spotřebičů.
Připojení NodeMCU k relé modulu
| Pin NodeMCU (GPIO) | Pin relé modulu (IN) | Popis |
|---|---|---|
| GPIO2 (D4) | IN1 | Ovládání prvního relé/spotřebiče |
| GPIO16 (D0) | IN2 | Ovládání druhého relé/spotřebiče |
| GPIO4 (D2) | IN3 | Ovládání třetího relé/spotřebiče |
| GPIO5 (D1) | IN4 | Ovládání čtvrtého relé/spotřebiče |
| 3V3 / VIN | VCC relé | Napájení relé modulu |
| GND | GND relé | Zem relé modulu |
Kompletní schéma zapojení pro ovládání žárovky přes relé modul je následující: Vezměte jeden z vodičů objímky žárovky (která je zapojena do sítě 230V AC), přestřihněte jej uprostřed a jeden z konců připojte k pinu COM na relé modulu a druhý k pinu NO (Normally Open). Relé funguje jako spínač, který přeruší nebo spojí tento obvod. Pin NodeMCU (např. GPIO2) připojte k pinu IN relé modulu. Tímto způsobem můžete zapojit i zbývající tři elektrické spotřebiče.
Důležité upozornění: Piny definované v kódu jako např. PIN_SWITCH 2 se vztahují na GPIO piny NodeMCU, nikoli na fyzické piny D0, D1, D2 atd. Tyto GPIO piny jsou na desce NodeMCU obvykle označeny.
Nastavení HomeKitu na ESP8266: Programování v Arduino IDE
Nyní přichází na řadu softwarová část projektu. Budeme pracovat s Arduino IDE a upravovat kód tak, abychom mohli ovládat více relé.
Krok 1: Stažení a instalace knihovny Arduino-HomeKit
Nejprve si stáhněte knihovnu Arduino-HomeKit. Po stažení otevřete Arduino IDE a proveďte následující kroky:
- V Arduino IDE klikněte na
Sketch(Návrh) a poté naInclude Library(Přidat knihovnu). - Dále klikněte na
Add .Zip Library...(Přidat .ZIP knihovnu) a vyberte stažený soubor knihovny HomeKit-ESP8266. - Tímto se do Arduino IDE zahrnou tři důležité soubory:
Example02_Switch.ino,my_accessory.cawifi_info.h.
Krok 2: Úprava souboru Example02_Switch.ino
Otevřete soubor Example02_Switch.ino. Původní kód v tomto souboru je určen pouze pro ovládání jednoho relé. Pro přidání více relé (až čtyř) je potřeba provést několik změn v kódu, které jsou vysvětleny v dalších krocích.
Krok 3: Konfigurace Wi-Fi v wifi_info.h
V souboru wifi_info.h je nutné uvést vaše vlastní SSID (název vaší Wi-Fi sítě) a heslo k ní. Bez správných Wi-Fi údajů se váš modul ESP8266 nepřipojí k síti a nebude komunikovat s HomeKitem.
Krok 4: Úpravy v my_accessory.c pro více zařízení
Tento soubor je klíčový pro definování HomeKit příslušenství. Pro přidání více zařízení (relé) je potřeba zkopírovat a vložit zvýrazněnou část kódu tolikrát, kolik zařízení chcete přidat. Hledejte blok začínající HOMEKIT_ACCESSORY(.id=1, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]).

Krok 5: Změna ID příslušenství
Po zkopírování a vložení bloku kódu je nezbytné změnit .id. Původní je .id=1. Pro druhé zařízení změňte na .id=2, pro třetí na .id=3 a tak dále. Každé příslušenství v HomeKitu musí mít unikátní ID.
Krok 6: Změna referencí na přepínače
Ve zvýrazněné části kódu také najdete řádek &cha_switch_on. Toto je výchozí kód pro číslo kanálu přepínače. Pokud jste přidali nový blok, změňte jej na &cha_switch_on2. Musíte zvyšovat číslo přepínače pokaždé, když přidáte nový blok. Například pro čtyři přepínače budete mít &cha_switch_on, &cha_switch_on2, &cha_switch_on3 a &cha_switch_on4.
Krok 7: Definice charakteristik přepínačů
Dále v témže kódu najdete řádek homekit_characteristic_t cha_switch_on = HOMEKIT_CHARACTERISTIC_(ON, false);. Tuto řádku je také nutné přidat tolikrát, kolik zařízení jste přidali, a přidat číslo přepínače (např. cha_switch_on2). Pro dvě zařízení by to vypadalo takto:
homekit_characteristic_t cha_switch_on = HOMEKIT_CHARACTERISTIC_(ON, false); homekit_characteristic_t cha_switch_on2 = HOMEKIT_CHARACTERISTIC_(ON, false);Krok 8: Externí deklarace charakteristik v Example02_Switch.ino
Vraťte se do souboru Example02_Switch.ino. Zde najdete řádek extern "C" homekit_characteristic_t cha_switch_on;. Tuto řádku je potřeba přidat tolikrát, kolik zařízení jste přidali, a opět změnit switch_on na switch_on2, switch_on3 atd.
Krok 9: Definice PINů pro přepínače
Dále v Example02_Switch.ino najdete řádek #define PIN_SWITCH 2. Zkopírujte tento řádek a přidejte ho tolikrát, kolik nových zařízení jste přidali, a změňte každé číslo pinu. Tento pin definuje GPIO pin na desce NodeMCU, ke kterému je zařízení připojeno přes relé modul. Pro ovládání čtyř spotřebičů jsme použili GPIO2, GPIO16, GPIO4 a GPIO5 NodeMCU. Každý GPIO pin by měl být připojen k odpovídajícímu relé modulu, jak je uvedeno v tabulce připojení.
Krok 10: Nastavení setter funkcí a inicializace
Další řádek, který je třeba zkopírovat a duplikovat, je cha_switch_on.setter = cha_switch_on_setter;. Zde opět změňte switch_on a setter pro každé nové zařízení.
Uvnitř funkce void my_homekit_setup() najdete pinMode(PIN_SWITCH, OUTPUT); a digitalWrite(PIN_SWITCH, HIGH);. Tyto řádky musíte přidat tolikrát, kolik zařízení jste přidali. Pro čtyři zařízení budete muset změnit proměnné (např. PIN_SWITCH2, PIN_SWITCH3 atd.).
Nakonec zkopírujte a duplikujte celý blok funkce void cha_switch_on_setter (const homekit_value_t value) { ... }. Tuto funkci je potřeba zkopírovat tolikrát, kolik zařízení jste přidali, a poté změnit setter, PIN_SWITCH a cha_switch_on v kódu. Tato funkce je v podstatě funkcí .setter, která získává událost přepínače odeslanou ze zařízení Apple iOS a podle toho ovládá fyzický pin.
Po dokončení všech těchto úprav nahrajte kód na desku NodeMCU. Ujistěte se, že máte v Arduino IDE vybranou správnou desku a port.
Nastavení aplikace Apple HomeKit
Jakmile nahrajete kód na NodeMCU, je čas nastavit aplikaci HomeKit na vašem iPhonu nebo iPadu.

- Stáhněte aplikaci Home (Domácnost) z App Store, pokud ji ještě nemáte.
- V pravém horním rohu klikněte na tlačítko plus (
+). - Vyberte
Add Accessory(Přidat příslušenství). Zobrazí se vyskakovací okno. VyberteMore options...(Další možnosti...) pro pokračování. - Objeví se další vyskakovací okno. Zde byste měli najít vaše zařízení „Switch“ (Přepínač). Klikněte na něj.
- Zobrazí se varovná zpráva. Jednoduše klikněte na
Add Anyway(Přesto přidat). - Budete požádáni o zadání 8místného instalačního kódu. Výchozí kód je 11111111.
- Nyní se vás zeptá na umístění přepínače. Můžete si vybrat podle vašeho nastavení (např. Ložnice, Obývací pokoj). Klikněte na
Continue(Pokračovat). - Dále se objeví okno
Display AS(Zobrazit jako). Můžete si vybrat jakékoli z uvedených zařízení, včetně ventilátoru, světla nebo přepínače, pokud jsou připojeny. Poté klikněte naContinue. - Nyní se vás zeptá na název přepínače. Tato funkce vám umožňuje nastavit libovolné vlastní jméno pro váš přepínač (např. „Světlo v ložnici“). Poté klikněte na
Continue. - Nakonec se objeví okno, které potvrdí, že přepínač byl přidán do vaší domácnosti. Klikněte na
Done(Hotovo).
Nyní můžete ručně ovládat všechny čtyři spotřebiče z vašeho iPhonu stisknutím příslušných tlačítek, nebo je ovládat hlasovými příkazy. Funkce „Hey Siri“ vám umožní ovládat spotřebiče pomocí vlastních hlasových příkazů.
Například pro zapnutí světla v ložnici jednoduše řekněte: „Hey Siri, turn on the bedroom light.“ Okamžitě aplikace odpoví hlasem „Ok, the switch is on“ spolu s textem zobrazeným v aplikaci. Zároveň se zapne světlo v ložnici. Podobně pro vypnutí řekněte: „Hey Siri, turn off the bedroom light.“ Aplikace odpoví „Ok, the switch is off“ a světlo se vypne. Stejným způsobem můžete ovládat i ostatní spotřebiče, které jsou připojeny k NodeMCU a naprogramovány v aplikaci.
Často kladené otázky (FAQ)
Zde jsou odpovědi na některé běžné otázky, které byste mohli mít ohledně tohoto projektu:
Potřebuji Homebridge pro tento projekt?
Ne, to je právě krása tohoto řešení! Díky speciální knihovně Arduino-HomeKit pro ESP8266/ESP32, která implementuje nativní HomeKit protokol, nepotřebujete žádný další most jako Homebridge.
Mohu ovládat více než jeden spotřebič?
Ano, s tímto příkladem můžete ovládat až čtyři spotřebiče pomocí 4kanálového relé modulu. Kód je navržen tak, aby se dal snadno rozšířit pro další zařízení jednoduchým kopírováním a úpravou bloků kódu, jak je popsáno v článku.
Jaké moduly ESP jsou podporovány?
Knihovna podporuje jak ESP8266 (doporučeno Arduino Core 2.6.3 a vyšší), tak ESP32. ESP32 nabízí výrazně lepší výkon, zejména při párování.
Co je výchozí instalační kód pro HomeKit?
Výchozí 8místný instalační kód pro přidání zařízení do Apple HomeKit je 11111111.
Proč je ESP32 při párování rychlejší než ESP8266?
ESP32 dosahuje vyšší rychlosti párování a ověřování díky použití knihovny WolfSSL verze 4.3.0-stable s podporou hardwarové akcelerace, což ESP8266 nemá.
Co mám dělat, když se mi po nahrání upraveného kódu zobrazuje chyba „Not available“ v aplikaci HomeKit?
Před nahráním upraveného kódu na NodeMCU se ujistěte, že jste nejprve vymazali flash paměť vašeho NodeMCU. Teprve poté můžete nahrát upravený kód. Jinak se v aplikaci může zobrazit chybová zpráva „Not available“.
Závěr
Vytvoření chytré domácnosti s Apple HomeKit a moduly ESP8266/ESP32 bez Homebridge je nejen možné, ale s touto knihovnou a podrobným návodem i překvapivě jednoduché. Tento projekt otevírá dveře k mnoha dalším možnostem automatizace a integrace do vašeho jablečného ekosystému. Ať už chcete ovládat světla, ventilátory nebo jiné spotřebiče, s tímto základem máte plnou kontrolu. Pamatujte na pečlivé dodržování všech kroků, zejména při úpravách kódu, a v případě problémů se nebojte zkontrolovat zapojení a vymazat flash paměť. Užijte si pohodlí a inovace, které vám chytrá domácnost přináší!
Chceš-li si přečíst další články podobné jako HomeKit a ESP8266: Chytrá Domácnost Bez Homebridge, navštiv kategorii iPhone.
