Přeskočit obsah

Publikování přes devicePublisher

Kdy použít

iDryer::Link už obsahuje dva vestavěné transports: MQTT (cloud) a Local WebSocket (LAN). Další transport není pro většinu úkolů potřeba.

Používej s_link.devicePublisher() když produkt sestavuje vlastní zátěž a musí ji poslat do obou kanálů současně — například když publikuješ konfiguraci nabídky v odpovědi na commands/get_config.

Hotový kód

// main.cpp (fragment)
#include <iDryer.h>

static iDryer::Link s_link(CFG);

// Publikuj libovolnou JSON zátěž do MQTT a Local WS jediným voláním.
static void publishConfig() {
    static char buf[1024];
    size_t len = buildConfigJson(buf, sizeof(buf));  // funkce produktu
    if (len == 0) return;
    s_link.devicePublisher()->publishConfigRaw(buf, len);
}

Jediné volání publishConfigRaw dodělá zátěž do MQTT tématu idryer/{serial}/config a všem aktivním LAN WS klientům. Není třeba vytvářet další klienty nebo témata.

Vysvětlení

devicePublisher() je pomocník duální publikace fasády. Používej jej místo přímého volání mqttClient() nebo LocalAccess, pokud nepotřebuješ publikovat na nestandartní téma.

Telemetrie a stav se publikují automaticky fasádou na časovači — devicePublisher() pro ně není potřeba.

Když je potřeba třetí transport

Přidání třetího kanálu (BLE, Serial JSON, UART proxy) je architektonické rozšíření fasády, ne návod. Drtivá většina zařízení to nepotřebuje.

Pokud to opravdu potřebuješ — vstupní body jsou v lib/idryer-core/src/cloud/ (cloud stavový stroj, MQTT) a lib/idryer-core/src/ (místní přístup). Než budeš pokračovat, potvrď že vestavěné MQTT a Local WS nejsou pro tvůj případ dostatečné.

Plný příklad v repo

publishFullMenu() v iDryer-Storage/src/main.cpp:171 — publikování úplné JSON nabídky přes s_link.devicePublisher()->publishConfigRaw(buf, len).