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 ovládáme Mars Hydro lampy přes BLE, 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. Cloud round-trip 5–30 s. LAN paket Tuya v3.3 pod 200 ms.
  • Žádné předplatné. Některé brandy zavádějí „premium konektivitu" za $2–5/měsíc. LAN to obchází.
  • Soukromí. Vaše příkazy nikdy neopustí domácí síť.
  • Odolnost. Tuya výpadky 2023 a 2024 vás nevyřadí. ~99,5 % uptime.
Realita Tuya cloudu: v posledních dvou letech tři významné výpadky (jeden 6 hodin, dva nad 2 hodiny). 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 kameryLAN RTSP + cloud controlČástečněOvěřeno
Mars Hydro TS-řadaBLE GATTAnoOvěřeno na TS600
Spider Farmercloud ((skrytý broker))NeKód připraven
AC Infinity (UIS)REST (cloud výrobce)Ne~85 % UIS parity
VivosunAWS IoT cloud + REST + BLE + RTSPNe (LAN oznámen)Kód připraven
Bluelab EdenicREST ((skrytý REST endpoint))NeKód připraven
SANlightBLE MeshAnoExperimentální
Generická BLE THBLE GATTAnoOvěř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, Klimo, Lidl, Brennenstuhl, BlitzWolf). Všechna Wi-Fi zařízení 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 (NoPadding)Žádný, klíč rovnou z local_key
v3.4AES-128-ECB + PKCS7 padding3-fázový SESS_KEY_NEG s HMAC
v3.5AES-128-GCMModifikovaný + 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ží do Room.

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 Cloud Bridge Deep Dive.

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.
  • CONTROL_NEW (cmd 0x10) pro čtení stavu.

Ověřeno (květen 2026)

  • Tuya Smart Plug (v3.5) — LAN-only po pairingu. Stabilní.
  • Tuya klima (Klimo, v3.3) — LAN-only, ~30s firmware cooldown při reconnectu.
  • Tuya Multi-Mode Gateway (v3.4) — funkční po nedávné aktualizaci. Sub-devices přes HUB_LAN. Postup v Tuya Zigbee Hub Setup.
  • Tuya kamera — částečně LAN. RTSP video lokálně, ovládání cloud.

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 ((interní mutex) v (náš device manager)).

Lesson learned: „responded but empty DP map" není router. V 100 % případů to byl souběžný read.

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 spolehlivě každých 20 s.

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 přes BLE

Mars Hydro TS-řada (TS600, TS1000, TS2000+) má dvě cesty: BLE (lokál) a cloud (cloud sdílený se Spider Farmer). GrowVPD preferuje BLE v dosahu (5–10 m), padá na cloud mimo.

BLE GATT struktura

  • Service UUID 0xfff0 — kořen Mars Hydro.
  • Characteristic 0xfff4 — read/notify (stav).
  • Characteristic 0xfff1 — write (příkazy).

Příkazy

  • zapnout/vypnout (multi-port 1–4).
  • 0–100 %.
  • světelný plán (např. 6:00–18:00 pro 12/12).
  • manuál / auto / sunrise / sunset ramp.

Spárování

  1. GrowVPD → Zařízení → Přidat → BLE skenování.
  2. Zapněte Mars Hydro lampu, počkejte 10–20 s. Objeví se jako „MarsHydro".
  3. Klepněte — GrowVPD spáruje, přečte stav.
  4. Test: změňte jas na 50 %. Reakce pod 1 s = BLE běží.

Detailní průvodce v Connect Mars Hydro.

cloud fallback

Mimo BLE dosah GrowVPD přejde na (skrytý broker) (Mars Hydro + Spider Farmer = MZ Group, sdílená cloud infra). Topiky: (interní topic) a (interní topic).

Stav hardware testu: ověřeno pouze TS600. Ostatní TS modely sdílí stejnou rodinu čipů, ale hardware test čeká.

7. 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 (skrytý REST API).

8. Vivosun, Bluelab, SANlight

Vivosun — hybrid AWS IoT + REST + BLE + RTSP

Nejpestřejší stack: AWS IoT cloud přes (skrytý AWS IoT endpoint), REST pro účet, BLE pro některé senzory, RTSP pro kamery. Příkazy: AWS device shadow updates — {"desired": {"brightness": 80}}. LAN-only mód oznámen, ETA neznámé.

Bluelab Edenic — REST cloud only

Bluelab Guardian (pH/EC/teplota) jede přes (skrytý REST endpoint). API key (roční expirace). Rate limit 1 req/min. Žádná LAN. Pro cloud-free pH/EC zvažte Atlas Scientific s ESP32 (DIY).

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

9. 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 používá UDP broadcasty na portech 6666 a 6667 (v3.5 plus 7000). „Smart" routery, které blokují broadcasty, naruší discovery.

4. IPv6

Tuya jede výhradně IPv4.

5. VLANy

Broadcasty se přes VLAN hranice nepropagují. Pokud máte IoT VLAN, nastavte unicast routing na porty 6666/6667/6668 a cross-VLAN provoz.

Doporučená topologie

  1. Telefon (s GrowVPD) na Wi-Fi.
  2. Tuya/AC Infinity/Vivosun zařízení na stejné Wi-Fi (ne guest).
  3. BLE zařízení v dosahu (Mars Hydro do 10 m).
  4. Volitelně: druhý telefon jako Hub Mode bridge.

10. 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. od nedávné aktualizace GrowVPD drží persistent socket. Aktualizujte.

„Všechny Tuya OK, jen jedna zlobí"

Zastaralý local_key (po re-pair). Smart Life → Device → Remove → znovu Add. GrowVPD → Witness Sync now — 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"

Některé routery (CG-NAT) blokují port 1883. GrowVPD zkusí TLS 8883. Pokud i to selže, ISP příliš restriktivní.

„Tuya kamera má RTSP, ovládání nereaguje"

Očekávané. Video lokálně RTSP, příkazy cloud.

11. FAQ

Proč lokální LAN lepší než cloud?
Latence (LAN <200 ms vs cloud 5–30 s), soukromí (nikdy ne home), odolnost (cloud výpadky), žádné předplatné.
LAN bez internetu?
Ano pro Tuya v3.x, Mars Hydro BLE, SANlight, generická BLE. Cloud-only zařízení (AC Infinity, Bluelab, Vivosun do LAN módu, 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 BLE na iPhonu?
Ano. iOS přes CoreBluetooth. KMP shared module sdílí logiku.
Klima pomalá v odezvě?
~30s firmware cooldown po disconnectu. Persistent socket od začátku května 2026 řeší. Aktualizujte aplikaci.
Úplně vypnout cloud?
Settings → Privacy → Local-only mode. Tuya battery senzory přestanou, AC Infinity i Bluelab přestanou. LAN devices běží beze změny.
Změna IP po restartu routeru?
v3.5: UDP discovery port 7000 detekuje. v3.3/v3.4: UDP porty 6666/6667. Aktualizujeme Room záznam, otevíráme nový socket transparentně.
Více telefonů na stejných zařízeních?
Ano, ale pozor 1 TCP slot. Default 20s refresh interval — 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. Exotic → „Generic Tuya device" se surovou DP mapou. Pošlete DP dump.
LAN-only pairing bez Smart Life?
Ne se stock Tuya firmware. Initial pairing potřebuje cloud (přes Smart Life). Pro plně LAN-only: Sonoff iHost ($90) nebo flash vlastním firmware (Tasmota, ESPHome).