1

Téma: MQTT po restartu

Ovládám jisté funkce SDS pomocí MQTT příkazu z nadřízeného systému. Příkaz očekávám na určitém topiku, k jehož odběru jsem přihlášen. Příkaz je zpracován a protože není RETAIN, na brokeru se vymaže. To vše funguje. Stává se mi však po restartu SDS (chybou nebo vynucením), že jednotka zpracuje nejstarší příkaz z brokeru, ač ten už tam dávno není. Vypadá to tak, že během restartu se MQTT vůbec neodpojí a tím nevymaže subcribe tabulku a já si příkaz přečtu znovu. Je to možné? Nedíval jsem se zatím do dokumentace, protože to celkem spěchá, ale dá se hodnota v subscribe tabulce smazat programově pří startu aplikace?

2

Re: MQTT po restartu

Teď jsem se díval, jak to celé funguje a myslím, že mi stačí po volání mqtt_subscribe() udělat něco takového:

lastSubscribeTimes[index] = SDS_get_u32(SYS_MQTT_RECEIVE_TIME_TABLE + index);

Trigger události si vlastně hlídám sám tím, že porovnávám čas přijaté zprávy systémem s časem, kdy jsem ji přijal v programu.