Pochopení implementace MQTT v kódu

Zdravím, snažím se porozumět implementaci MQTT, tedy přesněji tomu, jak bych měl implementovat například relé tak, abych ho mohl ovládat z node-red. Metodou pokus omyl jsem už přišel na to že nejlepší výchozí kód je pravděpodobně radio-base, protože je tam vyřešená inicializace bezdrátu. Dokonce už trochu i chápu jak spínat relé třeba tlačítkem, ale co a jak se děje přes MQTT se mi nepodařilo dohledat, kudy tečou jaké informace a jak se předávají. Programátor rozhodně nejsem, spíše se snažím nějak se tím prokousat a něco se přiučit, takže klidně uvítám vysvětlený podrobně každý řádek který se musí kam přidat. Určitě by to slušelo i dokumentaci která se mimochodem opravdu za poslední dva roky zlepšila :slight_smile: Předpokládám že budou i nějaké rozdíly u relé, jakož to u jednoho směru dat a u senzorů, jakožto u druhého směru dat. Předem díky za jakoukoli pomoc :slight_smile:

Zdravím,
asi bych doporučil vycházet z existujících projektů na githubu. Předpokládám že máte na mysli radio-base ve složce _examples. Tento projekt spolu s radio-remote komunikuje napřímo bez Donglu.

Pokud chcete aby MQTT zpráva z počítače šla skrz USB Dongle do nějakého spárovaného node, doporučím projít následujcí projekty:

Pokud chcete ovládat Relay Module nebo relé na Power Module, tak stačí použít hotový firmware generic, který má v názvu “power” a je na rádiu neustále na příjmu. Poté stačí už jen posílat MQTT zprávy viz dokumentace.

Pokud chcete relé mít vlastní externí relé třeba na GPIO, tak můžete vyjít z následujících projektů:

Projekt pro 1-wire relé


Projekt který používá externí relé od firmy Denkovi. Ale postačí si upravit funkci set a v ní můžete ovládat GPIO piny místo posílání příkazů po 1-wire.

Pokud nepoužíváte standradní topicky ve stavebnici pro přijímání zpráv pro relé, LED pásek. Tak si můžete vytvořit a registrovat vlastní MQTT topicky. Core Modul potom po spárování (doporučím jej po flasnutí přepárovat pokud se hned nechytne) odešle do Dongle tyto topicky a USB Dongle potom ví, že na MQTT má na ně naslouchat a přeposílat do Core Module, který si je zaregistroval.

Registrace topicků se provádí zde. První je MQTT topic (pozor, neměnit počet úrovní), druhý parametr datový typ bool, třetí callback, což je funkce kterou Core Module zavolá, pokud přijde zpráva.

Kolega má i hezky zdokumentované topicky

Tady je pak podobný projekt pro externí relé přes Modbus, je kratší protože neobsahuje definice MQTT topicků pro příkazy get.

Téma custom MQTT topic lze najít na mnoha místech tady na fóru.
Doporučím tyto vlákna: