Pokud chcete vést pěstební deník na jednom telefonu, sledovat senzory z druhého a nechat starý telefon hlídat tent v Hub módu, potřebujete jeden mechanismus, který udrží všechna zařízení v synchronizaci. V GrowVPD Pro tuto roli plní třívrstvá synchronizace: lokální síť, cloud relay a budicí push. (Nezaměňujte ji s witness — to je samostatná služba, která pomáhá číst zařízení Tuya přes cloud, třeba při přihlášení přes Smart Life nebo u bateriových senzorů.)

Cílem této architektury je jednoduchý kompromis: žádný centrální server nikdy nevidí váš deník v čitelné podobě, a přesto vám funguje synchronizace i mimo domácí Wi-Fi.

Soukromí v jedné větě. Sync relay (Cloudflare Worker) nikdy nedešifruje vaše zprávy. Šifrování probíhá end-to-end mezi vašimi zařízeními (identita Ed25519 + výměna klíčů X25519 + AES-GCM). Server vidí pouze hashe veřejných klíčů, časová razítka a zašifrované bloky.

1. Přehled architektury

VrstvaPoužitíLatenceInternet?
1. LAN (mDNS/NSD)Oba na stejné Wi-FisekundyNe
2. Cloud Relay (Cloudflare Worker)Tam, kde přímé spojení po LAN nejdesekundy až desítky sekundAno
3. FCM Push TriggerProbudit spící telefonrůzná (podle systému)Ano

Aplikace volí vrstvu sama: nejdřív LAN, pak Cloud Relay, pak FCM jako budicí signál.

2. Vrstva 1 — Lokální LAN (preferovaná)

Když jsou oba telefony na stejné Wi-Fi, najde je aplikace přes mDNS/NSD. Hub telefon (i GrowVPD Hub na počítači) inzeruje službu _growvpd._tcp a ostatní spárovaná zařízení mu změny posílají přímo přes TCP.

Šifrování:

  • Ed25519 — dlouhodobý podpisový klíč. Autentizace.
  • X25519 — výměna klíčů (Diffie-Hellman), z níž se odvodí společný klíč dvojice.
  • AES-256-GCM — šifrování obsahu.

Ed25519 a X25519 přes knihovnu libsodium. Soukromý klíč je uložený šifrovaně (Android Keystore / iOS Keychain).

Praktická poznámka. LAN vrstva nezná internet. Vypadne ISP? Telefony na vaší Wi-Fi dál posílají změny hubu přímo.

3. Vrstva 2 — Cloud Relay (záloha)

Jeden telefon doma, druhý v práci — NAT brání přímé TCP spojení. Aplikace přepne na Cloud Relay na sync.growvpd.pro.

Relay (Cloudflare Worker) dělá:

  • Drží zašifrované zprávy v Cloudflare KV, dokud si je příjemce nestáhne; každý požadavek je podepsaný HMAC.
  • Směruje podle fromPeerHash → toPeerHash.
  • Nikdy nedešifruje payload.
  • Nevyzvednuté zprávy maže nejpozději po 7 dnech.

Pro vás zdarma.

4. Vrstva 3 — FCM Push Trigger

Když relay uloží zprávu pro telefon, který zrovna spí, pošle mu přes FCM krátký budicí signál sync_pending bez obsahu. Telefon se probudí a zprávy si z relay stáhne. Dokud je aplikace otevřená, kontroluje relay sama zhruba každých 15 sekund.

Mobilní data: ve výchozím stavu povolená, nejvýš jednou za 15 minut a do 50 MB denně. Změníte to v Nastavení → Hub & synchronizace → Spravovat → Síť a data.

5. Párovací postup přes QR

Krok 1

Otevřete párovací obrazovku

Telefon A: Nastavení → Hub & synchronizace → Spravovat → Spárovat telefon → Zobraz QR pro druhý telefon.

Krok 2

QR obsahuje 4 položky

  • Název zařízení.
  • Ed25519 veřejný klíč A (32 B).
  • Náhodné číslo (nonce, 16 B), nové při každém vygenerování.
  • Seznam schopností zařízení (např. sync_v1).
Krok 3

Naskenovat QR

Telefon B: stejná obrazovka, ale Naskenuj QR z druhého telefonu. Fotoaparát detekuje automaticky.

Krok 4

X25519 výměna klíčů

Z veřejného klíče A a svého vlastního klíče si B odvodí společný klíč dvojice (X25519 + HKDF). Tajný klíč nikdy necestuje.

Krok 5

Ověření 8znakovým kódem

Oba telefony ukážou stejný 8znakový kód. Když se shoduje, potvrďte na B tlačítkem „Kódy se shodují — potvrdit pár". Pak totéž obráceně (QR ukáže B, A ho naskenuje), aby měl každý telefon ten druhý mezi spárovanými. Bez hesla, bez PINu.

Krok 6

První plná synchronizace

Hned po potvrzení pošle telefon, který skenoval, druhému všechno, co má: deník, stany, zařízení, pravidla a další synchronizovaná data.

QR obsahuje jen veřejné údaje. Při každém otevření obrazovky (nebo po klepnutí na obnovit) vznikne nový kód s novým náhodným číslem.

6. Co se synchronizuje (a co ne)

Každý záznam má časové razítko HLC (hybrid logical clock). Řešení konfliktů:

  • Záznamy (growy, zápisy, stany, zařízení, pravidla): vyhrává novější zápis (last-writer-wins).
  • Smazání se synchronizuje taky — smazaný záznam zmizí i na ostatních zařízeních.
  • Logy (měření, akce automatizace): append-only.

Synchronizované tabulky

  • grows, grow_entries, grow_rooms, grow_tents
  • smart_devices — bez creds
  • sensor_readings — posledních 30 minut po jednotlivých měřeních, starší data jako hodinové souhrny
  • automation_rules
  • fotky z deníku — záznamy vždy; samotné soubory jen přes Wi-Fi a přes GrowVPD Hub na počítači
  • katalog odrůd — vaše odrůdy a jejich rodokmen
  • plány hnojení a vlastní šablony

Nesynchronizováno

  • Raw logy a diagnostické dumpy.
  • Přihlašovací údaje (Tuya, Mars Hydro, AC Infinity) zůstávají na každém zařízení. Výjimka: když zapnete „Synchronizovat přihlášení mezi telefony", zkopírují se end-to-end šifrovaně na spárované telefony (a jen s dalším souhlasem i do GrowVPD Hub na počítači).
  • BLE bond keys.
  • Nastavení aplikace (motiv, jazyk, zámek PIN) — každé zařízení má vlastní.

7. Hub-as-relay topologie

S Hub módem — hvězdicová topologie: hub čte zařízení a rozesílá měření a záznamy akcí automatizace; deník a pravidla může upravovat kterékoli zařízení.

TopologieMeshHvězda (Hub)
Zdroj pravdyNejnovější HLCHub pro měření a akce, jinak nejnovější HLC

8. Bezpečnost

  • Cloudflare kompromitovaný → útočník vidí jen ciphertext. Bez klíčů nedešifruje.
  • Únik QR kódu → je v něm jen veřejný klíč a název zařízení. Data posíláte jen zařízením, která máte mezi spárovanými.
  • Ztráta telefonu → na ostatních zařízeních ho odeberte ze spárovaných (Nastavení → Hub & synchronizace → Spravovat).
  • GrowVPD jako firma skončí → Cloud Relay zmizí, LAN sync funguje dál.

9. Šířka pásma a kvóty

PoložkaVýchozí nastavení
Synchronizace přes mobilní dataZapnutá (Síť a data → Kdy synchronizovat?)
Interval na mobilních datechNejvýš jednou za 15 minut
Denní limit mobilních dat50 MB, pak jen naléhavé zprávy
Měření na mobilních datechJen hodinové souhrny
FotkyJen přes Wi-Fi

10. Řešení problémů

Synchronizace nejde přes lokální síť

Router izoluje klienty (AP isolation, síť pro hosty, VLAN). Router → AP Isolation: OFF. Jinak data půjdou přes Cloud Relay.

LAN funguje, Cloud Relay ne

Nastavení → Hub & synchronizace → Spravovat → Otestovat cloud relay. „Cloud relay je v pořádku" = OK. „Nedostupné" = vaše síť se k relay nedostane (firewall, DNS filtr, blokovaná doména).

Některé záznamy chybí

Na obrazovce Hub & synchronizace klepněte na Synchronizovat nyní.

Zastaralé odečty

Hub telefon musí běžet (trvalá notifikace „GrowVPD Hub") a být online. Kdy se naposledy ozval, uvidíte v Nastavení → Hub & synchronizace.

11. Časté dotazy

Potřebuje synchronizace internet?
Ne pro LAN. Ano pro Cloud Relay a FCM.
Mohou má data někdo zachytit?
Ne. End-to-end šifrování. Cloudflare vidí jen ciphertext.
Kolik stojí Cloud Relay?
Pro vás zdarma.
Co když ztratím telefon?
Na ostatních zařízeních ho odeberte ze spárovaných. Pak od něj nic nepřijmou a nic mu nepošlou.
Tři a více telefonů?
Ano. Změny jdou všem spárovaným zařízením; pro nepřetržitý provoz přidejte Hub Mode.
iPhone jako primární?
iPhone se páruje s GrowVPD Hub na počítači (součást Pro) a synchronizuje se přes něj; přímo s Android telefonem se nepáruje. Hubem být nemůže.
Jak rychle se data objeví?
Po lokální síti během několika sekund. Přes Cloud Relay si otevřená aplikace kontroluje zprávy zhruba každých 15 s; na pozadí telefon probudí FCM push.
Záloha jinak?
Nastavení → Data → Zálohovat data (Pro) — ZIP soubor, lokální záloha nezávislá na synchronizaci.
Co když firma skončí?
Data jsou lokálně. LAN sync funguje dál.