4.6 KiB
Publiceer temperatuur - Wio Terminal
In dit deel van de les ga je de temperatuurwaarden die door de Wio Terminal worden gedetecteerd publiceren via MQTT, zodat ze later kunnen worden gebruikt om GDD te berekenen.
Publiceer de temperatuur
Zodra de temperatuur is gemeten, kan deze via MQTT worden gepubliceerd naar een 'server'-code die de waarden leest en opslaat, klaar om te worden gebruikt voor een GDD-berekening. Microcontrollers lezen standaard geen tijd van het internet en houden de tijd niet bij met een real-time klok. Het apparaat moet hiervoor worden geprogrammeerd, ervan uitgaande dat het over de benodigde hardware beschikt.
Om het eenvoudiger te maken voor deze les, wordt de tijd niet samen met de sensorgegevens verzonden. In plaats daarvan kan de tijd later door de servercode worden toegevoegd wanneer deze de berichten ontvangt.
Taak
Programmeer het apparaat om de temperatuurgegevens te publiceren.
-
Open het
temperature-sensor
Wio Terminal-project. -
Herhaal de stappen die je in les 4 hebt uitgevoerd om verbinding te maken met MQTT en telemetrie te verzenden. Je zult dezelfde openbare Mosquitto-broker gebruiken.
De stappen hiervoor zijn:
- Voeg de Seeed WiFi- en MQTT-bibliotheken toe aan het
.ini
-bestand. - Voeg het configuratiebestand en de code toe om verbinding te maken met WiFi.
- Voeg de code toe om verbinding te maken met de MQTT-broker.
- Voeg de code toe om telemetrie te publiceren.
⚠️ Raadpleeg de instructies voor verbinding maken met MQTT en de instructies voor het verzenden van telemetrie uit les 4 indien nodig.
- Voeg de Seeed WiFi- en MQTT-bibliotheken toe aan het
-
Zorg ervoor dat de
CLIENT_NAME
in hetconfig.h
-headerbestand dit project weerspiegelt:const string CLIENT_NAME = ID + "temperature_sensor_client";
-
Voor de telemetrie, in plaats van een lichtwaarde te verzenden, stuur je de temperatuurwaarde die is gemeten door de DHT-sensor in een eigenschap in het JSON-document genaamd
temperature
door deloop
-functie inmain.cpp
te wijzigen:float temp_hum_val[2] = {0}; dht.readTempAndHumidity(temp_hum_val); DynamicJsonDocument doc(1024); doc["temperature"] = temp_hum_val[1];
-
De temperatuurwaarde hoeft niet vaak te worden gemeten - deze verandert niet veel in korte tijd. Stel daarom de
delay
in deloop
-functie in op 10 minuten:delay(10 * 60 * 1000);
💁 De
delay
-functie neemt de tijd in milliseconden, dus om het gemakkelijker te maken wordt de waarde doorgegeven als het resultaat van een berekening. 1.000ms in een seconde, 60s in een minuut, dus 10 x (60s in een minuut) x (1000ms in een seconde) geeft een vertraging van 10 minuten. -
Upload dit naar je Wio Terminal en gebruik de seriële monitor om te zien hoe de temperatuur naar de MQTT-broker wordt verzonden.
--- 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}
💁 Je kunt deze code vinden in de code-publish-temperature/wio-terminal map.
😀 Je hebt de temperatuur succesvol gepubliceerd als telemetrie vanaf je apparaat.
Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we ons best doen voor nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.