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á.

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čkaProtokolCloud-free?Status
Tuya Wi-Fi (zásuvky, klima, hub)LAN v3.3/v3.4/v3.5 (TCP 6668)Ano po pairinguOvěřeno hardware
Tuya kameryTuya cloud (živý obraz, snímky)NeImplementováno
Mars Hydro (DimBox, iTime)Mars Hydro cloud (MQTT) + Bluetooth pro nastaveníČástečně (Bluetooth v dosahu)Ověřeno hardware
Spider FarmerSpider Farmer cloud (MQTT)NeImplementováno, ověřuje se
AC Infinity (UIS)REST (cloud výrobce)NeImplementováno, ověřuje se
VivosunAWS IoT cloud + RESTNeImplementováno, ověřuje se
Bluelab EdenicREST (Edenic cloud)NeImplementováno, ověřuje se
SANlightBLE MeshAnoExperimentální
Generická BLE THBLE (advertising)AnoOvěř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.3AES-128-ECB (PKCS7 padding)Žádný, klíč rovnou z local_key
v3.4AES-128-ECB + PKCS7 padding3-fázový SESS_KEY_NEG s HMAC
v3.5AES-128-GCM3-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

  1. Per-device mutex okolo všech TCP operací.
  2. Persistentní socket. Forget jen na změnu IP / verze / auth failure.
  3. Sledujte sekvenční čísla v logu — rostoucí seq = socket žije.
  4. 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í

  1. GrowVPD → Automatizace → Přidat zařízení → Mars Hydro a přihlaste se účtem Mars Hydro.
  2. Zvolte „Spárovat nové přes Bluetooth" a držte telefon u zapnutého zařízení.
  3. Klepněte na nalezené zařízení — GrowVPD ho připojí k Wi-Fi a zaregistruje k účtu.
  4. 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

  1. Telefon (s GrowVPD) na Wi-Fi.
  2. Tuya/AC Infinity/Vivosun zařízení na stejné Wi-Fi (ne guest).
  3. Bluetooth senzory v dosahu (zhruba do 10 m).
  4. 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íť.

10. FAQ

Proč lokální LAN lepší než cloud?
Latence (LAN odpoví ve zlomku sekundy, cloud za sekundy), soukromí (data neopustí domov), odolnost (cloud výpadky), žádné předplatné.
LAN bez internetu?
Ano pro Tuya v3.x, světla Mars Hydro přes Bluetooth (v dosahu), SANlight, generická BLE. Cloud-only zařízení (AC Infinity, Bluelab, Vivosun, Tuya battery wsdcg) nemůžou aktualizovat.
Kabelový Ethernet pro telefon?
Ano přes USB-Ethernet adaptér. Záleží jen na stejném IPv4 subnetu.
Mars Hydro na iPhonu?
Ano. Přihlášení i ovládání jde přes cloud Mars Hydro, nová zařízení se nastavují přes Bluetooth (CoreBluetooth). KMP shared module sdílí logiku.
Klima pomalá v odezvě?
~30s firmware cooldown po disconnectu. GrowVPD drží persistentní socket, takže to nastane jen tehdy, když spojení převezme jiná aplikace.
Úplně vypnout cloud?
Pro Tuya: Nastavení → Smart zařízení → Spravovat → Tuya / Smart Life a vypněte „Cloud (IoT) — odkudkoli". Tuya battery senzory přestanou posílat údaje, LAN zařízení běží beze změny. AC Infinity, Bluelab a Vivosun fungují jen přes svůj cloud.
Změna IP po restartu routeru?
v3.5: UDP discovery port 7000 detekuje. v3.3/v3.4: UDP porty 6666/6667, jako záloha sken podsítě na TCP 6668. Aktualizujeme uloženou adresu, otevíráme nový socket transparentně.
Více telefonů na stejných zařízeních?
Ano, ale pozor 1 TCP slot. Aplikace obnovuje údaje každých 30 s, když je otevřená — kolize vzácná. Pro koordinaci použijte Hub Mode.
Neznámé Tuya zařízení?
Tuya má desítky kategorií. GrowVPD pokrývá hlavní pro grow. Ostatní dostanou obecné ovládání odvozené z jejich datových bodů (DP). Pošlete DP dump.
LAN-only pairing bez Smart Life?
Ne se stock Tuya firmware. Initial pairing potřebuje cloud (přes Smart Life).