blog.vyoralek.cz

IoT produkty s ESP8266 napojené na HomeKit

Dnes se podíváme na jeden s alternativních firmwarů, který slibuje možnost přímé integrace ESP8266 IoT produktů na HomeKit.

🎙 Poslední aktualizace článku 16.1.2020. Pokud najdete nějaké rozdíly v aktuálním stavu, dejte vědět v komentářích, díky.

Projekt s názvem Home Accessory Architect (dále HAA) – dříve známý pod názvem RavenCore – přináší nativní podporu Apple HomeKit pro jakékoliv zařízení běžící na ESP8266 čipu.

Můžete tak díky přehrání firmware začít používat vaše IoT produkty s ESP8266 se systémem HomeKit bez nutnosti mít nějakého dalšího prostředníka – například HomeAssistant, což může být pro někoho výhoda.

Jaký HW budeme potřebovat?

Nejprve si vybereme nějaký IoT produkt používající ESP8266 . Kromě poměrně obsáhlé nabídky od firmy Sonoff (přehled 1. část, 2.část), tak i například WiFi zásuvku od BlitzWolf (popis v článku) nebo LED pásek (popis v článku).

Postup nahrání alternativního firmware se může lišit – od použití HW UART sériového rozhraní pro Sonoff až po možnost bez nutnosti rozebrání.

Pro účely HAA si úplně nejsem jistý, zda je možné nějakým způsobem využít možnost bez rozbrání, jelikož budeme potřebovat podstrčit více než jeden binární soubor – což nám nepříjemně komplikuje i situaci pokud už na zařízení máme např. Tasmotu, která by se pro nahrání dala použít.

Dále si tak ukážeme první způsob přes UART sériového rozhraní.

Instalace firmware

Pro instalaci budeme potřebovat hned tři soubory:

  1. bootovací obraz – rboot.bin
  2. hlavní soubor s firmware HAA – main.bin
  3. prázdnou konfiguraci – blank_config.bin

💡V oficiálním návodu najdete ještě alternativní možnost instalace přes OTA přímo z Internetu, ale tento způsob zatím není příliš doporučovaný a já jsem nebyl ani schopen přes něj firmware nainstalovat.

1. Promazání stávajícího firmware

V závislosti na použitém HW tak připojíme UART sériového rozhraní a aplikaci pro manipulaci s firmware – já doporučuji už několik článků ESPTool, který je napsán v Pythonu.

➜ esptool.py -p /dev/cu.SLAB_USBtoUART erase_flash

Doporučuji ještě před spuštěním esptool provést kontrolu zda neexistuje novější verze pomocí příkazu:

➜ pip install esptool --upgrade

🥁Nezapomeňte, že po úspěšném použití esptool je hardware restartováno a často tak vypnut mód umožňující nahrávání firmware.

2. Nahrání nového firmware

Přepneme se do adresáře kam jsme si uložili všechny tři výše uvedené binární soubory a spustíme příkaz:

➜ esptool.py -p /dev/cu.SLAB_USBtoUART --baud 115200 write_flash -fs 1MB -fm dout -ff 40m \
0x0 rboot.bin 0x1000 blank_config.bin 0x2000 main.bin
esptool.py v2.8
Serial port /dev/cu.SLAB_USBtoUART
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 5c:cf:7f:58:2f:21
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash params set to 0x0320
Compressed 3104 bytes to 2169...
Wrote 3104 bytes (2169 compressed) at 0x00000000 in 0.6 seconds (effective 42.2 kbit/s)...
Hash of data verified.
Compressed 2048 bytes to 23...
Wrote 2048 bytes (23 compressed) at 0x00001000 in 0.4 seconds (effective 44.3 kbit/s)...
Hash of data verified.
Compressed 473792 bytes to 338728...
Wrote 473792 bytes (338728 compressed) at 0x00002000 in 39.3 seconds (effective 96.4 kbit/s)...
Hash of data verified.

Nastavení WiFi a konfigurace

Po úspěšném nahrání všech tří binárních souborů bychom už v sériové konzoli měli vidět něco jako následující řádky o aktivaci Hotspotu:

>>> wifi_config: http_task: Got 64 incomming data
!!! wifi_config: Unknown endpoint: GET /hotspot-detect.html
>>> wifi_config: http_task: Got 64 incomming data
>>> wifi_config: http_task: Got 3 incomming data
>>> wifi_config: wifi_config_server_on_message_complete: Unknown endpoint
>>> wifi_config: client_send_redirect: Redirecting to http://192.168.4.1/settings
>>> wifi_config: Client disconnected
>>> wifi_config: http_task: Got 64 incomming data
>>> wifi_config: http_task: Got 50 incomming data

a můžeme se tak podívat na mobilní telefon a nebo i počítač a snažit se najít vytvořený Hotspot s názvem HAA-XXX, kde XXX je adresa vašeho IoT zařízení a měla by nám vyskočit nastavovací obrazovka:

HAA konfigurační okno

Je potřeba jednak zadat JSON konfiguraci (nazývané též HAA template) , což je specifické nastavení pro váš IoT produkt a pak vybrat vaší WiFi a zadat heslo.

Uvedu zde rovnou pár příkladů a více si můžete přečíst na GitHubu:

Sonoff Basic/SV/Mini/TH/POW Standard Switch

{"c":{"l":13,"b":[{"g":0,"t":5}]},"a":[{"0":{"r":[{"g":12}]},"1":{"r":[{"g":12,"v":1}]},"b":[{"g":0}]}]}

Sonoff S20/S26 bez UART výstupu, se status LEDkou a tlačítkem

{"c":{"l":13,"b":[{"g":0,"t":5}]},"a":[{"t":2,"0":{"r":[{"g":12}]},"1":{"r":[{"g":12,"v":1}]},"b":[{"g":0}]}]}

Sonoff Mini

{"c":{"l":13,"b":[{"g":0,"t":5}]},"a":[{"0":{"r":[{"g":12}]},"1":{"r":[{"g":12,"v":1}]},"b":[{"g":0},{"g":4},{"g":4,"t":0}]}]}

Po restartu bychom měli zařízení už vidět v síti a např. u Sonoff Basic přes sériovou linku je možno vidět přepínání pomocí tlačítka:

HAA > Digital output GPIO 12 -> 1
HAA > Setter ON
HAA > Digital output GPIO 12 -> 0
HAA > Setter ON
HAA > Digital output GPIO 12 -> 1
HAA > Setter ON

Přidání zařízení do Homekitu

V mobilu si otevřeme aplikaci domácnost a klikneme na přidání nového příslušenství z naskenujeme následující kód:

Pairing code image

.. popř. ho přidáme ručně.

Budeme ještě upozornění, že se jedná o necertifikované zařízení:

Přidání zařízení do HomeKitu

… a čeká nás pak cca půl minuty až minuta čekání, ale na konci bychom měli být úspěšně přidání zařízení do Apple HomeKitu.

Zatím si neodvážím udělat nějaký větší závěr, ale pokud tento firmware nějakou dobu používáte budu rád za sdílení zkušeností.

21 comments

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • Používám 2x sonoff basic s ravencore a spokojenost. Občas je potřeba znovu připojit při výpadku napájení či restartujte wi-fi, ale jinak se jednal spolehlivé řešení.
    Nyní hledám způsob jak spínat pulzem garážových vrata pomoci vhodneho zarizeni s HAA. Za případný článek bych b\l vdecen.

    • Dobrý den, vyřešil jste nějak ty garážová vrata? Chtěl bych do budoucna udělat totéž… Díky za info

  • Dobré odpoledne Firmware Sonoff mini r3, ale tlačítko S1 + S2 nefunguje. Existuje firmware pro sonoff mini s pracovním tlačítkem z kontaktů S1 S2?

    • Tahleta konfigurace by pro Mini měla fungovat správně: {"c":{"l":13,"b":[{"g":0,"t":5}]},"a":[{"0":{"r":[{"g":12}]},"1":{"r":[{"g":12,"v":1}]},"b":[{"g":0},{"g":4},{"g":4,"t":0}]}]}

        • Supr! Btw. nevím proč, ale váš komentář skončil původně ve spamu, nicméně už je zpět.

  • Zdravím všechny, mám problém s prvky Sonoff v HomeKitu. Po bezchybném asi ročním používání došlo cca před měsícem k problému s automatizaci těchto prvků v systému HomeKit. Přepínače Sonoff jsou normálně viditelné v aplikaci HomeKit, jejich stav je známý a lze je ovládat (přepínat) z aplikace HomeKit úplně normálně. Problém je, pokud jsou tyto Sonoff přepínače zahrnuty v jakékoli automatizaci. Např. v čase „t“ zapni, nebo sepni po aktivaci spínače detektoru pohybu. Pokud v této automatizaci existuje prvek Sonoff spolu s jiným prvkem (Eva, Hue, Koogeek …), pak pouze tento certifikovaný prvek (prvky) bude reagovat a Sonoff se nepřepne!!
    Mám několik Sonnoff Basic, S26 a 2CH. Prvky se chovají takto stejně s FW RavenSystem HAA 1.2.1 nebo FW Grupio 1.0. Zdá se, že se jedná o problém s necertifikovanými prvky (?). Jako HomeKit používám Apple TV s nejnovějšími os 13.3. Všechno dříve fungovalo normálně (včetně Sonoof) a nyní pouze prvky certifikované HomeKit chodí bez vady. Pochopitelně se nemůžu obrátit na podporu Apple, takže hledám radu jinde …. ??? Nemáte nějaký nápad? Restart Apple TV pochopitelně proveden několikrát, odpojení a znovupřipojení Domácnosti též proběhlo a žádná změna. Bez automatizace těchto prvků jsou víceméně k ničemu, jelikož přepínání jen přes aplikaci nebo Siri je méně jak poloviční :(.
    Děkuji všem za nápady.

    • Navazuji na svůj předchozí příspěvek – nikdo nic k tomu neměl a já jsem nijak zvlášť nepochodil. Další pokusy přinesly pouze stejný stav. Snad jen upřesním poznatky, že jelikož aktualizace stavů jednotlivých zařízení v HomeKitu probíha uvnitř sítě bez problémů u všech, tak naopak z venku (z jiných sítí), tak stav zařízení se ukáže u všech ostatních prvků HomeKitu a jen u Sonoff zařízení se napíše „Bez odpovědi“. Takže to vidím na problém s daty HomeKitu na iCloudu…???… Stejný stav je i po resetu Apple TV (bridge pro mé centrum HomeKitu) a jeho aktualizace na poslední tvOS 13.3.1.

  • Zdravím,
    mám dotaz ohledně sonoff TH16. Flashnul jsem přes ESPtool a mám problém s funkčním JSON. Jeden z odkazu výše se netvářil jako termostat, fungoval pouze jako spínač a při hledání na githubu jsem vložil jiný, který už zobrazoval i teplotu, ale po chvíli začlo relé přepínat v určitých intervalech. Nemohl by mi prosím někdo pomoci s funkčním kódem?
    Díky Kuba

    • Ahoj, našel jsi nakonec správný JSON, který by se tvářil jako termostat a né jen ukazatel teploty?

  • Dobry den,
    uspesne som podla tohto navodu integroval Sonoff Mini V1.2 do HomeKitu a vcelku spolahlivo fungoval. Mam vsak problem so zmenou nazvu wifi siete – po zmacknuti a pridrzani prepinaca (cca 10s) sa objavi wifi siet s rovnakym nazvom HAA-XXX ako pocas prveho prihlasovania, avsak nie je mozne sa k nej pripojit (skusal som to z roznych zariadeni – Smart aj PC). Prosim o radu.
    Vdaka.

    • @gustav

      Mohu se zeptat jak se vam povedlo nahrat HAA do Sonoff Mini?
      Rad bych Sonoff Mini dal do vsech vypinacu, ale jsem zaseknuty na dvou vecech.

      Prave jak nahrat HAA do Sonoff Mini, bez rozebrani a pajeni pinu? Tahle cesta se mi povedla u sonoff basic, kde jsem si dopajel do desky 4 piny a pres UART a esptool jsem nahral (dle navodu pana Vyoralka) do sonoff basic HAA. Co jsem ale koukal u sonoff mini je na desce jeste mene mista a mam pocit, ze UART snad ani nelze pripojit.
      Nevim jestli HAA umi OTA upgrade. Zatim co u Tasmoty tahle moznost je, u HAA si už nejsem jist (nemam zkusenost). Desi mne predstava, ze bych musel pro kazdy update otevrit krabici s vypinacem (cca. 14 ks) a napojit UART.

      Aktualne mam u 3 sonoff mini Tasmotu, ale chybí mi prime pripojeni do Homekitu jako provozuji u nekolika Sonoff Basic. Nechce se mi kvuli vypinacum zprovoznovat a provozovat Home Assistant nebo Home Bridge.

      Predem diky za jakoukoliv radu.

      Petr

      • Já mám jden Sonoff Mini s Tasmotou už rozchozený, ale je to co se týče nahrávání firmware jeden z těch složitějších, jelikož jak píšete je tam hrozně málo místa a rozhodně se tam nadá dát PIN header. Viděl jsem na internetu řešení formou speciálního adaptéru s PINy vytištěném na 3D tiskárně, což je asi jediná možnost pokud jich chcete udělat více. S tímhle „udělátkem“ už to pak zase jde poměrně jednoduše.

        • Dobrý den,
          ano je to přesně jak píšete. Já jsem po prolození internetu našel podobný adaptér https://www.thingiverse.com/thing:3817574, ale moc recenzí/zkušeností k měmu také není.

          V každém případě tasmotu lze jednoduše dostat do sonoff mini, zapojením připraveného jumperu na desce a připojení na speciální wifi (sonoffDiy) a http. Chvilku to zabere, ale pak uz je to rutina. Mam takhle 3 ks flashnuté.

          Bohužel, jak jsem psal zřejmě bez Home Assistant to nedostanu do Home Kitu.

          Nahravát a hlavně aktualizovat, přes UART i s tím vytisknutým adapterém HAA do každého vypínače je bohužel velmi nepraktická záležitost 🙁

          Mé znalosti jsou v tomto velmi malé, tak mne napadlo jestli třeba někdo ze zdejších čtenářů nemá lepší zkušenost a neví o cestě jak se procesu s fyzickým zapojením vyhnout.

          Díky,
          Petr

          • Předpokládám, že to s tím WiFi je ta možnost Sonoff DiY že? Já s tím pravda laboroval možná až příliš brzy u Sonoff Basic R3 a byla tam hromada problémů, takže jsem šel pak nakonec hezky postaru přes sériové rozhraní, ale pravda, že u tohodle Mini to dává mnohem větší smysl, jelikož je tam to sériové rozhraní komplikovanější.

            Ohledně HAA já více momentálně neporadím, jelikož mi to zůstalo jen ve fázi vyzkoušet a reálně stále používám Tasmotu s HomeAssistentem, který je pak v Homekitu, ale chápu že to řešení bez centrálního bodu (HA) může být pro některé velice zajímavé.

          • @jvyoralek

            Dobrý den,

            pzn. na začátek. Nevím proč ale již nemohu odpovedět na váš příspěvěk níže. Pod vaším příspěvkem je pouze „To se mi libi“, ale link na Odpověd ne 🙂

            Ano stačí zařízení přepnout do DIY módu (pomocí jumperu) poté se automaticky připojí wif-fi „sonoffDiy“ síť kterou musíte ručně vytvořit, např. jako hotspot na svém telefonu a poté z jiného zařízení (z kterého se bude provádět flash) na stejné sití přes http requesty nahrát/ flashnout tasmota firmware.

            Tuším, že jsem někde četl, že aby se přeflešování zdařilo je potřeba mít současný sonoff firmware ve verzi tuším alespoň 3.2.. Čehož docílíte připojením a aktualizací přes eWeLink app. To možná byl ten problém proč Vám to nešlo.

            Pokud byste měl zájem mohu vám případně poslat kokrentněji v bodech jak jsem postupoval.

            Petr

          • ô ok, jj, jestli můžete popsat v bodech a poslat budu rád. Zkusím tomu dát ještě šanci 🙂 Díky

  • Zdravím pánové,
    Mám dotaz ohledně flashnutí Shelly. Vím, že je to zde více o Sonoffu, ale rád bych zjistil něco víc o Shelly 1 a 2.5.
    Zajímá mne, jestli se dá flashnout stejně jako sonoff v ESPtoolu, jestli a jak by šlo i měření jako u originál softu a jestli už to někdo více používá. Díky za odpovědi. Kuba

  • Dobrý den,chtěl jsem se zeptat,jakým způsobem se dá dostat do tlačítka sonoff t3 a jestli se dá použít stejný postup jako u sonoff mini a nebo je k tomu jiný postup. zkoušel jsem postup který je od vás a zkoušel jsem to v podstatě to stejné přes aplikaci nodemcu-pyflasher.4.0 ale nejde se do tlačítka nabourat a vymazat starý firmware. děkuji za radu s pozdravem

  • Ahojte, mám už asi 10 Sonoffů s HAA a šlapou skvěle. Teď jsem ale v situaci, kdy bych potřeboval k Sonoffu mini přpojit externí ne spínač, ale tlačítko. A nějak nemůžu přijít na to, jak ho v HAA přepnout do teho puszního režimu (aby nereagoval na tu druhoiu hranu, když tlačítko pustím). Na Tasmotě to je OK, ale mně se nějak víc líbí HAA:. Díky moc..

Odebírejte blog emailem

Mějte ihned informaci o novém článku ze světa technologií.