4.1 KiB
Ovládejte svůj noční světlo přes internet - Wio Terminal
V této části lekce se naučíte, jak se přihlásit k odběru příkazů zasílaných z MQTT brokeru do vašeho Wio Terminalu.
Přihlášení k odběru příkazů
Dalším krokem je přihlásit se k odběru příkazů zasílaných z MQTT brokeru a reagovat na ně.
Úkol
Přihlaste se k odběru příkazů.
-
Otevřete projekt nočního světla ve VS Code.
-
Přidejte následující kód na konec souboru
config.h
, abyste definovali název tématu pro příkazy:const string SERVER_COMMAND_TOPIC = ID + "/commands";
SERVER_COMMAND_TOPIC
je téma, ke kterému se zařízení přihlásí, aby přijímalo příkazy pro LED. -
Přidejte následující řádek na konec funkce
reconnectMQTTClient
, aby se zařízení přihlásilo k odběru tématu příkazů při opětovném připojení MQTT klienta:client.subscribe(SERVER_COMMAND_TOPIC.c_str());
-
Přidejte následující kód pod funkci
reconnectMQTTClient
.void clientCallback(char *topic, uint8_t *payload, unsigned int length) { char buff[length + 1]; for (int i = 0; i < length; i++) { buff[i] = (char)payload[i]; } buff[length] = '\0'; Serial.print("Message received:"); Serial.println(buff); DynamicJsonDocument doc(1024); deserializeJson(doc, buff); JsonObject obj = doc.as<JsonObject>(); bool led_on = obj["led_on"]; if (led_on) digitalWrite(D0, HIGH); else digitalWrite(D0, LOW); }
Tato funkce bude zpětné volání, které MQTT klient zavolá, když obdrží zprávu ze serveru.
Zpráva je přijímána jako pole 8bitových neznačených celých čísel, takže je třeba ji převést na pole znaků, aby mohla být zpracována jako text.
Zpráva obsahuje JSON dokument, který je dekódován pomocí knihovny ArduinoJson. Vlastnost
led_on
z JSON dokumentu je přečtena a v závislosti na její hodnotě se LED zapne nebo vypne. -
Přidejte následující kód do funkce
createMQTTClient
:client.setCallback(clientCallback);
Tento kód nastaví
clientCallback
jako zpětné volání, které bude zavoláno, když MQTT broker odešle zprávu.💁 Zpětné volání
clientCallback
je voláno pro všechna témata, ke kterým jste přihlášeni. Pokud později napíšete kód, který poslouchá více témat, můžete získat téma, na které byla zpráva odeslána, z parametrutopic
předaného zpětnému volání. -
Nahrajte kód do svého Wio Terminalu a použijte Serial Monitor, abyste viděli úrovně světla odesílané do MQTT brokeru.
-
Upravte úrovně světla detekované vaším fyzickým nebo virtuálním zařízením. Uvidíte zprávy, které jsou přijímány, a příkazy, které jsou odesílány v terminálu. Také uvidíte, jak se LED zapíná a vypíná v závislosti na úrovni světla.
💁 Tento kód najdete ve složce code-commands/wio-terminal.
😀 Úspěšně jste naprogramovali své zařízení, aby reagovalo na příkazy z MQTT brokeru.
Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. I když se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.