Lokální síť je v GrowVPD preferovaná cesta pro ovládání chytrých zařízení. Žádný cloud, žádná latence, žádné předplatné, žádná závislost na tom, jestli zrovna jedou servery výrobce. Tento průvodce vysvětluje, jak GrowVPD mluví přímo s Tuya Wi-Fi zařízeními po TCP, jak Mars Hydro využívá Bluetooth a cloud, kdy padáme do cloud/REST cloudu a co dělat, když síť neposlouchá.
Obsah
1. Proč lokální LAN a co tím získáte
Většina chytrých zařízení má dva režimy: lokální (přímo přes Wi-Fi/BLE bez internetu) a cloudový (přes servery výrobce). GrowVPD jde opačnou cestou: nejdřív zkusí lokál, cloud je až záchranná síť.
- Nezávislost na internetu. Garáž, sklep, chalupa, slabý signál? LAN běží i bez WAN.
- Latence pod 1 sekundu. Cesta přes cloud trvá sekundy, Tuya v LAN odpoví ve zlomku sekundy.
- Žádné předplatné. Některé brandy si za cloudové funkce účtují předplatné. LAN to obchází.
- Soukromí. Vaše příkazy nikdy neopustí domácí síť.
- Odolnost. Výpadek cloudu vás nevyřadí.
Realita Tuya cloudu: i cloudové služby občas vypadnou. Lokální LAN se těchto chvil ani nedotkne.
2. Mapa protokolů
| Značka | Protokol | Cloud-free? | Status |
|---|---|---|---|
| Tuya Wi-Fi (zásuvky, klima, hub) | LAN v3.3/v3.4/v3.5 (TCP 6668) | Ano po pairingu | Ověřeno hardware |
| Tuya kamery | Tuya cloud (živý obraz, snímky) | Ne | Implementováno |
| Mars Hydro (DimBox, iTime) | Mars Hydro cloud (MQTT) + Bluetooth pro nastavení | Částečně (Bluetooth v dosahu) | Ověřeno hardware |
| Spider Farmer | Spider Farmer cloud (MQTT) | Ne | Implementováno, ověřuje se |
| AC Infinity (UIS) | REST (cloud výrobce) | Ne | Implementováno, ověřuje se |
| Vivosun | AWS IoT cloud + REST | Ne | Implementováno, ověřuje se |
| Bluelab Edenic | REST (Edenic cloud) | Ne | Implementováno, ověřuje se |
| SANlight | BLE Mesh | Ano | Experimentální |
| Generická BLE TH | BLE (advertising) | Ano | Ověřeno |
3. Tuya LAN protokol (v3.3 / v3.4 / v3.5)
Tuya je největší výrobce IoT komponentů (tisíce značek: Smart Life, Lidl, Brennenstuhl, BlitzWolf). Všechna Wi-Fi zařízení (kromě kamer) mluví stejným proprietárním protokolem na TCP portu 6668.
Tři verze, tři kryptografie
| Verze | Šifrování | Handshake |
|---|---|---|
| v3.3 | AES-128-ECB (PKCS7 padding) | Žádný, klíč rovnou z local_key |
| v3.4 | AES-128-ECB + PKCS7 padding | 3-fázový SESS_KEY_NEG s HMAC |
| v3.5 | AES-128-GCM | 3-fázový SESS_KEY_NEG jako v3.4 + UDP discovery port 7000 |
Local_key — srdce LAN řetězce
Každé Tuya zařízení má unikátní 16-bajtový local_key. Vytvořený při prvním pairingu ve Smart Life. Jediné tajemství mezi telefonem a zařízením. GrowVPD ho stáhne z Tuya cloudu při importu a uloží ho šifrovaně v telefonu.
Re-pair ve Smart Life? Vygeneruje se nový local_key, starý je neplatný. GrowVPD detekuje chybu dešifrování a spustí witness rotate — vyžádá fresh klíč z cloudu. Detaily v Tuya Cloud Bridge Setup.
v3.5 GCM a UDP discovery
- AES-128-GCM — authenticated encryption (chrání integritu).
- UDP broadcast discovery port 7000 — REQ_DEVINFO, zařízení odpovídají IP + verzí. Užitečné při změně IP po restartu routeru.
- DP_QUERY_NEW (cmd 0x10) pro čtení stavu.
Ověřeno (květen 2026)
- Tuya Smart Plug (v3.5) — LAN-only po pairingu. Stabilní.
- Tuya klima (v3.3) — LAN-only, ~30s firmware cooldown při reconnectu.
- Tuya Multi-Mode Gateway (v3.4) — funkční. Sub-devices jdou přes hub v LAN (štítek „via Hub"). Postup v Tuya Zigbee Hub Setup.
4. Persistentní socket a jeden TCP slot
Pravidlo č. 1: 1 TCP spojení na port 6668
Dva paralelní readery stejného zařízení = druhý dostane „odpověděl, ale prázdná DP mapa". Řešení: mutex pro každé deviceId.
Lesson learned: „responded but empty DP map" není router. V našich testech to byl téměř vždy souběžný read; stejně se projeví i zastaralý local_key.
Pravidlo č. 2: Persistentní socket, ne forget-and-reconnect
Tuya klima firmware má po každém disconnectu ~30sekundový reconnect cooldown. Když zavřete socket a hned otevřete, firmware vás 30 s ignoruje.
Původní implementace volala tuyaLocalClient.forget() před každým čtením. Výsledek: klima nečetla nikdy spolehlivě. Oprava: forget jen tehdy, když se materiálně něco změnilo (nová IP, nová verze). Po fixu vidíme seq=1, seq=2, seq=3, seq=4 — ten samý socket. Klima teď čte spolehlivě při každém obnovení.
Co si vzít, když píšete vlastní Tuya klient
- Per-device mutex okolo všech TCP operací.
- Persistentní socket. Forget jen na změnu IP / verze / auth failure.
- Sledujte sekvenční čísla v logu — rostoucí
seq= socket žije. - Backoff: 30 s před dalším pokusem po neodpovědi (firmware cooldown).
5. Mars Hydro: Bluetooth a cloud
Světla Mars Hydro a časovače iTime GrowVPD ovládá přes cloud Mars Hydro (MQTT). Přihlásíte se svým účtem Mars Hydro — jeden účet má jen jedno aktivní přihlášení, takže přihlášení na dalším zařízení odhlásí to první. Bluetooth slouží k přidání nového zařízení: GrowVPD ho najde, připojí k vaší Wi-Fi a zaregistruje k účtu. Když cloud neodpovídá, může GrowVPD poslat příkaz světlu v dosahu přímo přes Bluetooth.
Příkazy
- zapnout/vypnout (u iTime každou zásuvku zvlášť).
- 0–100 %.
- světelný plán uložený přímo v lampě (např. 6:00–18:00 pro 12/12).
- manuál / auto / sunrise / sunset ramp.
- iTime: denní rozvrh a opakovaný cyklus.
Spárování
- GrowVPD → Automatizace → Přidat zařízení → Mars Hydro a přihlaste se účtem Mars Hydro.
- Zvolte „Spárovat nové přes Bluetooth" a držte telefon u zapnutého zařízení.
- Klepněte na nalezené zařízení — GrowVPD ho připojí k Wi-Fi a zaregistruje k účtu.
- Test: změňte jas na 50 %.
Detailní průvodce v Connect Mars Hydro.
Stav hardware testu: ověřeno s ovladačem světla Mars Hydro DimBox a časovači iTime. Ostatní zařízení Mars Hydro zatím na hardwaru testována nebyla.
6. AC Infinity REST API
AC Infinity je v komunitě populární značka pro ventilátory a controllery (Controller 67, 69, UIS). Bohužel nemají lokální port — pouze cloud přes REST API výrobce.
7. Vivosun, Bluelab, SANlight
Vivosun — AWS IoT + REST
AWS IoT cloud pro ovládání, REST pro účet a údaje. Příkazy: AWS device shadow updates — {"desired": {"brightness": 80}}.
Bluelab Edenic — REST cloud only
Bluelab Guardian (pH/EC/teplota) jede přes cloudové API Bluelab Edenic. API key (roční expirace). Rate limit 1 req/min. Žádná LAN.
SANlight BLE Mesh — experimentální
SANlight LED bary (rakouský výrobce) používají proprietární BLE Mesh. Reverzně inženýrované, experimentální — budoucí firmware může věci rozbít. Pro produkční pěstovny: Tuya zásuvka před LED + on/off ovládání.
8. Topologie sítě a router
1. AP Isolation = OFF
AP Isolation (někdy „Client Isolation") zakazuje zařízením na stejné Wi-Fi navzájem komunikovat. Nejčastější příčina „zařízení se spárovalo v Smart Life, ale GrowVPD ho nevidí". TP-Link „AP Isolation", ASUS „AP Isolated", Mikrotik „Default Forward".
2. Guest network = ne Tuya tam
Guest Wi-Fi izoluje klienty. Telefon main + Tuya guest = vzájemně neviditelní.
3. mDNS / Bonjour
Pomáhá s discovery, ale není nutné. GrowVPD poslouchá UDP broadcasty na portech 6666 a 6667 (v3.5 plus 7000), a když žádné nepřijdou, projde vaši lokální podsíť na TCP portu 6668. Routery, které blokují broadcasty, discovery zpomalí.
4. IPv6
Tuya jede výhradně IPv4.
5. VLANy
Broadcasty se přes VLAN hranice nepropagují a GrowVPD prochází jen podsíť, ve které je telefon. Telefon a Tuya zařízení mějte ve stejné síti.
Doporučená topologie
- Telefon (s GrowVPD) na Wi-Fi.
- Tuya/AC Infinity/Vivosun zařízení na stejné Wi-Fi (ne guest).
- Bluetooth senzory v dosahu (zhruba do 10 m).
- Volitelně: starý Android telefon jako Hub Mode bridge.
9. Troubleshooting
„Tuya se spárovalo v Smart Life, ale GrowVPD nevidí"
AP Isolation. Vypněte v routeru.
„Klima čte jednou, pak 30 s nic"
Firmware reconnect cooldown. GrowVPD drží jeden persistentní socket, takže to nastane jen tehdy, když spojení převezme jiná aplikace (třeba Smart Life na stejné Wi-Fi).
„Všechny Tuya OK, jen jedna zlobí"
Zastaralý local_key (po re-pair). Smart Life → Device → Remove → znovu Add. GrowVPD → Tuya / Smart Life → Znovu načíst zařízení ze Smart Life — nový klíč přijde z cloudu.
„Mars Hydro BLE se spáruje, hned odpojí"
Interference. BLE dosah 5–10 m při přímé viditelnosti. Stěny, kov tentu, jiná BLE zařízení zhoršují.
„cloud k Spider Farmer brokeru selže za NAT"
GrowVPD se ke cloudu Spider Farmer i Mars Hydro připojuje šifrovaným MQTT (TLS, port 8883). Pokud vaše síť odchozí port 8883 blokuje, spojení selže — zkuste jinou síť.