4.3 KiB
Publikování teploty - Wio Terminal
V této části lekce budete publikovat hodnoty teploty detekované Wio Terminalem přes MQTT, aby mohly být později použity k výpočtu GDD.
Publikování teploty
Jakmile je teplota přečtena, může být publikována přes MQTT do nějakého "serverového" kódu, který hodnoty přečte a uloží je, aby mohly být použity pro výpočet GDD. Mikrokontroléry standardně nečtou čas z internetu a nesledují čas pomocí reálného časového modulu, zařízení musí být naprogramováno, aby to zvládlo, za předpokladu, že má potřebný hardware.
Abychom věci v této lekci zjednodušili, čas nebude odesílán spolu s daty ze senzoru, místo toho může být přidán serverovým kódem později, když přijme zprávy.
Úkol
Naprogramujte zařízení tak, aby publikovalo data o teplotě.
-
Otevřete projekt
temperature-sensor
pro Wio Terminal. -
Opakujte kroky, které jste provedli v lekci 4, abyste se připojili k MQTT a odeslali telemetrii. Budete používat stejný veřejný Mosquitto broker.
Kroky jsou následující:
- Přidejte knihovny Seeed WiFi a MQTT do souboru
.ini
. - Přidejte konfigurační soubor a kód pro připojení k WiFi.
- Přidejte kód pro připojení k MQTT brokeru.
- Přidejte kód pro publikování telemetrie.
⚠️ Podívejte se na instrukce pro připojení k MQTT a instrukce pro odesílání telemetrie z lekce 4, pokud je to potřeba.
- Přidejte knihovny Seeed WiFi a MQTT do souboru
-
Ujistěte se, že
CLIENT_NAME
v hlavičkovém souboruconfig.h
odpovídá tomuto projektu:const string CLIENT_NAME = ID + "temperature_sensor_client";
-
Pro telemetrii, místo odesílání hodnoty světla, odešlete hodnotu teploty přečtenou ze senzoru DHT jako vlastnost v JSON dokumentu nazvanou
temperature
změnou funkceloop
v souborumain.cpp
:float temp_hum_val[2] = {0}; dht.readTempAndHumidity(temp_hum_val); DynamicJsonDocument doc(1024); doc["temperature"] = temp_hum_val[1];
-
Hodnota teploty nemusí být čtena příliš často - v krátkém časovém úseku se příliš nezmění, takže nastavte
delay
ve funkciloop
na 10 minut:delay(10 * 60 * 1000);
💁 Funkce
delay
bere čas v milisekundách, takže pro snadnější čtení je hodnota předána jako výsledek výpočtu. 1 000 ms je jedna sekunda, 60 sekund je jedna minuta, takže 10 x (60 sekund v minutě) x (1 000 ms v sekundě) dává zpoždění 10 minut. -
Nahrajte tento kód do svého Wio Terminalu a použijte sériový monitor, abyste viděli, jak se teplota odesílá do MQTT brokeru.
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- Connecting to WiFi.. Connected! Attempting MQTT connection...connected Sending telemetry {"temperature":25} Sending telemetry {"temperature":25}
💁 Tento kód najdete ve složce code-publish-temperature/wio-terminal.
😀 Úspěšně jste publikovali teplotu jako telemetrii ze svého zařízení.
Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. Ačkoli se snažíme o přesnost, mějte prosím 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.