4.4 KiB
Publicar temperatura - Wio Terminal
Nesta parte da lição, irá publicar os valores de temperatura detetados pelo Wio Terminal através de MQTT, para que possam ser usados mais tarde no cálculo do GDD.
Publicar a temperatura
Depois de ler a temperatura, esta pode ser publicada via MQTT para algum código 'servidor' que irá ler os valores e armazená-los, prontos para serem usados no cálculo do GDD. Os microcontroladores não obtêm a hora da Internet nem acompanham o tempo com um relógio em tempo real por padrão; o dispositivo precisa ser programado para isso, assumindo que possui o hardware necessário.
Para simplificar as coisas nesta lição, a hora não será enviada com os dados do sensor; em vez disso, pode ser adicionada pelo código do servidor mais tarde, quando este receber as mensagens.
Tarefa
Programar o dispositivo para publicar os dados de temperatura.
-
Abra o projeto
temperature-sensor
do Wio Terminal. -
Repita os passos que realizou na lição 4 para se conectar ao MQTT e enviar telemetria. Irá usar o mesmo broker público Mosquitto.
Os passos para isso são:
- Adicionar as bibliotecas Seeed WiFi e MQTT ao ficheiro
.ini
- Adicionar o ficheiro de configuração e o código para se conectar ao WiFi
- Adicionar o código para se conectar ao broker MQTT
- Adicionar o código para publicar telemetria
⚠️ Consulte as instruções para se conectar ao MQTT e as instruções para enviar telemetria da lição 4, se necessário.
- Adicionar as bibliotecas Seeed WiFi e MQTT ao ficheiro
-
Certifique-se de que o
CLIENT_NAME
no ficheiro de cabeçalhoconfig.h
reflete este projeto:const string CLIENT_NAME = ID + "temperature_sensor_client";
-
Para a telemetria, em vez de enviar um valor de luz, envie o valor de temperatura lido do sensor DHT numa propriedade do documento JSON chamada
temperature
, alterando a funçãoloop
nomain.cpp
:float temp_hum_val[2] = {0}; dht.readTempAndHumidity(temp_hum_val); DynamicJsonDocument doc(1024); doc["temperature"] = temp_hum_val[1];
-
O valor da temperatura não precisa de ser lido com muita frequência - não mudará muito num curto espaço de tempo, por isso defina o
delay
na funçãoloop
para 10 minutos:delay(10 * 60 * 1000);
💁 A função
delay
recebe o tempo em milissegundos, por isso, para facilitar a leitura, o valor é passado como o resultado de um cálculo. 1.000ms num segundo, 60s num minuto, então 10 x (60s num minuto) x (1.000ms num segundo) dá um atraso de 10 minutos. -
Carregue este código para o seu Wio Terminal e use o monitor serial para ver a temperatura a ser enviada para o broker MQTT.
--- 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}
💁 Pode encontrar este código na pasta code-publish-temperature/wio-terminal.
😀 Conseguiu publicar com sucesso a temperatura como telemetria a partir do seu dispositivo.
Aviso Legal:
Este documento foi traduzido utilizando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.