問卷調查[mqtt dht]

任務

this code uses esp32-wroom-32 and dht11 to read the humidty and temperature, besieds,? ? ? ? ? it will send the meassage to the cloud platform. All communication is conducted through MQTT.

打分標準

您應該對以下代碼進行評級,并且必須遵守如下所示的評級規則。

您只能根據以下標準對1、2、3、4或5進行評分:

1.如果只有一個main function 或只有文本注釋,甚至沒有基本代碼,則得1分(如下為1分代碼);

#include <stdio.h>
#include "xtimer.h"// Self Executable: Test basic functionality by printing a message
int main(void) {printf("Starting Riot-OS code generation process...\n");return 0;
}

2.如果僅實現了部分功能,例如僅實現通信(如使用mqtt協議通信)或僅實現外設控制(如傳感器讀取溫濕度),則得分為2(如下為2分代碼);

#include <stdio.h>
#include "ztimer.h"
#include "dht.h"
#include "dht_params.h"// Placeholder for MQTT – we will validate dependencies in the next step#define DELAY (5 * 1000000) // 5 seconds in microsecondsint main(void) {dht_t dev;int16_t temp, hum;puts("Initializing DHT temperature and humidity sensor...");if (dht_init(&dev, &dht_params[0]) != DHT_OK) {puts("Failed to initialize DHT sensor.");return 1;}puts("DHT sensor initialized successfully!");// Placeholder section for MQTT – will be connected after validationwhile (1) {ztimer_sleep(ZTIMER_USEC, DELAY);if (dht_read(&dev, &temp, &hum) != DHT_OK) {puts("Failed to read data from DHT sensor.");continue;}printf("Temperature: %d.%d°C, Humidity: %d.%d%%\n",temp / 10, temp % 10, hum / 10, hum % 10);}return 0;
}

3.如果功能大部分已實現,但缺少一些特定的操作代碼或使用注釋代替代碼(例如,缺少pwm庫控制亮度,缺少adc庫,LED缺少進行煙霧探測,缺少dht讀數),則得分為3;

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "paho_mqtt.h"
#include "MQTTClient.h"
#include "xtimer.h"
#include "periph/gpio.h"// MQTT Parameters
#define MQTT_SERVER "101.133.196.127"
#define MQTT_PORT 1883
#define MQTT_USER "YOUR_MQTT_USERNAME"
#define MQTT_PASSWORD "YOUR_MQTT_PASSWORD"
#define MQTT_CLIENT_ID "YOUR_MQTT_CLIENT_ID"
#define SUBSCRIBE_TOPIC "YOUR_SUBSCRIBE_TOPIC"
#define REPORT_TOPIC "YOUR_REPORT_TOPIC"// GPIO Configurations for DHT11
#define DHT_GPIO 4  // Assuming GPIO 4 for DHT11 sensor// MQTT Client Buffer Sizes
#define BUF_SIZE 1024
#define COMMAND_TIMEOUT_MS 6000
#define KEEP_ALIVE_INTERVAL 60static MQTTClient client;
static Network network;
static unsigned char buf[BUF_SIZE];
static unsigned char readbuf[BUF_SIZE];// Function prototypes
void mqtt_setup(void);
void init_gpio(void);
int reconnect(void);
void report_property(const char* topic, char* json);
void messageArrived(MessageData* data);// Placeholder for fetching sensor data; real implementation should replace this
float* fetch_sensor_data(void);void mqtt_setup(void) {NetworkInit(&network);MQTTClientInit(&client, &network, COMMAND_TIMEOUT_MS, buf, BUF_SIZE, readbuf, BUF_SIZE);printf("MQTT client initialized\n");
}void init_gpio(void) {if (gpio_init(DHT_GPIO, GPIO_IN) < 0) {printf("Error initializing GPIO for DHT11\n");} else {printf("DHT11 GPIO initialized successfully\n");}
}int reconnect(void) {MQTTPacket_connectData data = MQTTPacket_connectData_initializer;data.MQTTVersion = 4;data.clientID.cstring = MQTT_CLIENT_ID;data.username.cstring = MQTT_USER;data.password.cstring = MQTT_PASSWORD;data.keepAliveInterval = KEEP_ALIVE_INTERVAL;data.cleansession = 1;int rc = NetworkConnect(&network, MQTT_SERVER, MQTT_PORT);if (rc != 0) {printf("Failed to connect to network (%d)\n", rc);return rc;}rc = MQTTConnect(&client, &data);if (rc != 0) {printf("Failed to connect to broker (%d)\n", rc);return rc;}MQTTSubscribe(&client, SUBSCRIBE_TOPIC, QOS1, messageArrived);printf("Connected to broker and topic subscribed\n");return 0;
}void report_property(const char* topic, char* json) {MQTTMessage message;message.qos = QOS0;message.retained = 0;message.payload = json;message.payloadlen = strlen(json);if (MQTTPublish(&client, topic, &message) == SUCCESS) {printf("Published: %s\n", json);} else {printf("Failed to publish message\n");}
}void messageArrived(MessageData* data) {char* payload = (char*)data->message->payload;printf("Message arrived [%.*s]: %.*s\n",(int)data->topicName->lenstring.len, data->topicName->lenstring.data,(int)data->message->payloadlen, payload);if (strstr(payload, "\"command\":\"ALARM_ON\"")) {gpio_set(DHT_GPIO);} else if (strstr(payload, "\"command\":\"ALARM_OFF\"")) {gpio_clear(DHT_GPIO);}
}float* fetch_sensor_data(void) {static float sensor_data[2] = {25.0, 60.0};  // Replace with real DHT11 logicreturn sensor_data;
}int main(void) {mqtt_setup();init_gpio();while (1) {if (!client.isconnected) {NetworkDisconnect(&network);reconnect();}float* sensor_data = fetch_sensor_data();char json[256];snprintf(json, sizeof(json), "{\"temperature\": %.1f, \"humidity\": %.1f}",sensor_data[0], sensor_data[1]);report_property(REPORT_TOPIC, json);MQTTYield(&client, 1000);xtimer_sleep(5);}return 0;
}
// Self Executable

4.如果功能大多是在不使用注釋代替代碼的情況下實現的,但實現尚未完善(例如,缺乏重新連接、缺乏初始化、缺乏關閉等),則得分為4;

#include <stdio.h>
#include "periph/gpio.h"
#include "periph/i2c.h"
#include "dht.h"
#include "xtimer.h"
#include "paho_mqtt.h"
#include "MQTTClient.h"// Definitions
#define DHT_PIN GPIO_PIN(0, 4) // GPIO pin for DHT connection
#define MQTT_SERVER "101.133.196.127"
#define MQTT_PORT 1883
#define MQTT_USER "YOUR_MQTT_USERNAME"
#define MQTT_PASSWORD "YOUR_MQTT_PASSWORD"
#define MQTT_CLIENT_ID "YOUR_MQTT_CLIENT_ID"
#define REPORT_TOPIC "YOUR_REPORT_TOPIC"// MQTT Buffers
#define BUF_SIZE 1024
#define COMMAND_TIMEOUT_MS 6000
#define KEEP_ALIVE_INTERVAL 60static MQTTClient client;
static Network network;
static unsigned char buf[BUF_SIZE];
static unsigned char readbuf[BUF_SIZE];// Function declarations
void mqtt_setup(void);
int reconnect(void);
void report_property(const char *topic, char *payload);void mqtt_setup(void) {NetworkInit(&network);MQTTClientInit(&client, &network, COMMAND_TIMEOUT_MS, buf, BUF_SIZE, readbuf, BUF_SIZE);printf("MQTT client initialized\\n");
}int reconnect(void) {MQTTPacket_connectData data = MQTTPacket_connectData_initializer;data.MQTTVersion = 4;data.clientID.cstring = MQTT_CLIENT_ID;data.username.cstring = MQTT_USER;data.password.cstring = MQTT_PASSWORD;data.keepAliveInterval = KEEP_ALIVE_INTERVAL;data.cleansession = 1;int rc = NetworkConnect(&network, MQTT_SERVER, MQTT_PORT);if (rc != 0) {printf("Network connection failed (%d)\\n", rc);return rc;}rc = MQTTConnect(&client, &data);if (rc != 0) {printf("MQTT connection failed (%d)\\n", rc);return rc;}printf("MQTT broker connected\\n");return 0;
}void report_property(const char *topic, char *payload) {MQTTMessage message;message.qos = QOS0;message.retained = 0;message.payload = payload;message.payloadlen = strlen(payload);MQTTPublish(&client, topic, &message);printf("Message published: %s\\n", payload);
}int main(void) {mqtt_setup();if (reconnect() != 0) {return -1;}// Define DHT parametersdht_params_t dht_params = {.pin = DHT_PIN,.type = DHT11};dht_t dev;if (dht_init(&dev, &dht_params) != DHT_OK) {printf("Failed to initialize DHT sensor\\n");return -1;}// Initialize DHT and reading variablesint16_t temperature, humidity;char json[256];while (1) {if (dht_read(&dev, &temperature, &humidity) == DHT_OK) {snprintf(json, sizeof(json), "{\"temperature\": %d.%d, \"humidity\": %d.%d}",temperature / 10, temperature % 10, humidity / 10, humidity % 10);report_property(REPORT_TOPIC, json);} else {printf("Failed to read DHT sensor\\n");}xtimer_sleep(5); // Pause for 5 seconds}return 0;
}

5.如果所有功能都得到充分徹底的實施,則得5分。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "periph/gpio.h"
#include "dht.h"
#include "dht_params.h"
#include "ztimer.h"
#include "ztimer/periodic.h"
#include "paho_mqtt.h"
#include "MQTTClient.h"
#include "xtimer.h"// Define GPIO pins
#define JDQ_PIN GPIO_PIN(0, 16) // GPIO pin for additional control (relay)
#define DHT_PIN GPIO_PIN(0, 17) // GPIO pin connected to DHT11 data pin// Setup for interval
#define SEND_INTERVAL_SEC 5     // Interval for periodic data reading// Setup for DHT sensor
static dht_t dht_sensor;
static int16_t temperature, humidity;// MQTT Parameters
#define MQTT_SERVER "101.133.196.127"
#define MQTT_PORT 1883
#define MQTT_USER "mma845x&k1untKoVRjM"
#define MQTT_PASSWORD "3b48b9f5eaffff3e55a7e944aaaedcd91b4bf5abcb84c6fba736f455a7619ce0"
#define MQTT_CLIENT_ID "k1untKoVRjM.mma845x|securemode=2,signmethod=hmacsha256,timestamp=1731296949691|"
#define REPORT_TOPIC "/sys/k1untEWIVZV/dht11/thing/service/property/set"// MQTT Client Buffer Sizes
#define BUF_SIZE 1024
#define COMMAND_TIMEOUT_MS 6000
#define KEEP_ALIVE_INTERVAL 60static MQTTClient client;
static Network network;
static unsigned char buf[BUF_SIZE];
static unsigned char readbuf[BUF_SIZE];// Function Prototypes
void setup_gpio(void);
void dht_read_action(void);
void mqtt_setup(void);
int reconnect(void);
void publish_sensor_data(void);
_Bool timer_callback(void *arg);int main(void) {puts("Initializing peripherals...");// Initialize GPIOsetup_gpio();// Initialize DHT sensorputs("Initializing DHT sensor...");if (dht_init(&dht_sensor, &dht_params[0]) == DHT_OK) {puts("[OK] DHT sensor initialized");} else {puts("[Error] Failed to initialize DHT sensor");return 1;}// Initialize MQTTmqtt_setup();// Setup ZTIMER Periodic for scheduled executionstatic ztimer_periodic_t periodic_timer;ztimer_periodic_init(ZTIMER_MSEC, &periodic_timer, timer_callback, NULL, SEND_INTERVAL_SEC * 1000);ztimer_periodic_start(&periodic_timer);puts("Started periodic DHT reading and MQTT reporting...");while (1) {// Ensure main thread stays aliveztimer_sleep(ZTIMER_MSEC, SEND_INTERVAL_SEC * 1000);}return 0;
}void setup_gpio(void) {// Initialize JDQ_PIN as output for relay controlif (gpio_init(JDQ_PIN, GPIO_OUT) != 0) {puts("[Error] Failed to initialize JDQ_PIN as output");return;}gpio_clear(JDQ_PIN);puts("[OK] GPIO initialized for JDQ_PIN");
}void dht_read_action(void) {// Read temperature and humidityif (dht_read(&dht_sensor, &temperature, &humidity) != DHT_OK) {puts("[Error] Failed to read data from DHT sensor");} else {printf("Temperature: %d.%d°C, Humidity: %d.%d%%\n",temperature / 10, temperature % 10,humidity / 10, humidity % 10);}
}void mqtt_setup(void) {NetworkInit(&network);MQTTClientInit(&client, &network, COMMAND_TIMEOUT_MS, buf, BUF_SIZE, readbuf, BUF_SIZE);printf("MQTT client initialized.\n");if (reconnect() != 0) {puts("[Error] Failed to connect to MQTT broker");return;}
}int reconnect(void) {MQTTPacket_connectData data = MQTTPacket_connectData_initializer;data.MQTTVersion = 4;data.clientID.cstring = MQTT_CLIENT_ID;data.username.cstring = MQTT_USER;data.password.cstring = MQTT_PASSWORD;data.keepAliveInterval = KEEP_ALIVE_INTERVAL;data.cleansession = 1;int rc = NetworkConnect(&network, MQTT_SERVER, MQTT_PORT);if (rc != 0) {printf("Failed to connect to network (%d).\n", rc); return rc;}rc = MQTTConnect(&client, &data);if (rc != 0) {printf("Failed to connect to broker (%d).\n", rc); return rc;}printf("Connected to broker successfully.\n");return 0;
}void publish_sensor_data(void) {char json[256];snprintf(json, sizeof(json), "{\"temperature\": %d.%d, \"humidity\": %d.%d}",temperature / 10, temperature % 10,humidity / 10, humidity % 10);MQTTMessage message;message.qos = QOS0;message.retained = 0;message.payload = json;message.payloadlen = strlen(json);if (MQTTPublish(&client, REPORT_TOPIC, &message) == 0) {printf("Published: %s\n", json);} else {puts("[Error] Failed to publish message");}
}_Bool timer_callback(void *arg) {(void)arg;// Perform DHT readdht_read_action();// Publish data to MQTT brokerpublish_sensor_data();return 1;
}

代碼

代碼1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "paho_mqtt.h"
#include "MQTTClient.h"
#include "xtimer.h"
#include "periph/gpio.h"
#include "dht.h"
#include "dht_params.h"
#include "ztimer.h"// Define GPIO pins according to specific ESP32 board configuration
#define DHT_PIN            GPIO_PIN(0, 17)  // Example GPIO pin for ESP32
#define LED_PIN            GPIO_PIN(0, 2)   // Example GPIO pin for ESP32// Define the delay in microseconds
#define DELAY (2U * (1000 * 1000))// MQTT Parameters
#define MQTT_SERVER "101.133.196.127"
#define MQTT_PORT 1883
#define MQTT_USER "mma845x&k1untKoVRjM"
#define MQTT_PASSWORD "password"
#define MQTT_CLIENT_ID "unique_client_id"
#define SUBSCRIBE_TOPIC "/sys/k1untEWIVZV/dht11/thing/service/property/set"
#define REPORT_TOPIC "/sys/k1untEWIVZV/dht11/thing/service/property/report"// MQTT Client Buffer Sizes
#define BUF_SIZE 1024
#define COMMAND_TIMEOUT_MS 6000
#define KEEP_ALIVE_INTERVAL 60static MQTTClient client;
static Network network;
static unsigned char buf[BUF_SIZE];
static unsigned char readbuf[BUF_SIZE];// Function Prototypes
void mqtt_setup(void);
int reconnect(void);
void report_property(const char* topic, char* payload);
void messageArrived(MessageData* data);
void init_gpio(void);void mqtt_setup(void) {NetworkInit(&network);MQTTClientInit(&client, &network, COMMAND_TIMEOUT_MS, buf, BUF_SIZE, readbuf, BUF_SIZE);printf("MQTT client initialized\\n");
}int reconnect(void) {MQTTPacket_connectData data = MQTTPacket_connectData_initializer;data.MQTTVersion = 4;data.clientID.cstring = MQTT_CLIENT_ID;data.username.cstring = MQTT_USER;data.password.cstring = MQTT_PASSWORD;data.keepAliveInterval = KEEP_ALIVE_INTERVAL;data.cleansession = 1;int rc = NetworkConnect(&network, MQTT_SERVER, MQTT_PORT);if (rc != 0) {printf("Failed to connect to network (%d)\\n", rc);return rc;}rc = MQTTConnect(&client, &data);if (rc != 0) {printf("Failed to connect to broker (%d)\\n", rc);return rc;}MQTTSubscribe(&client, SUBSCRIBE_TOPIC, QOS1, messageArrived);printf("Subscribed to topic: %s\\n", SUBSCRIBE_TOPIC);return 0;
}void report_property(const char* topic, char* json) {MQTTMessage message;message.qos = QOS0;message.retained = 0;message.payload = (void*)json;message.payloadlen = strlen(json);MQTTPublish(&client, topic, &message);printf("Published: %s\\n", json);
}void messageArrived(MessageData* data) {char* payload = (char*)data->message->payload;printf("Message arrived [%.*s]: %.*s\\n",(int)data->topicName->lenstring.len, data->topicName->lenstring.data,(int)data->message->payloadlen, payload);// Add your message handling logic here, if needed
}void init_gpio(void) {gpio_init(LED_PIN, GPIO_OUT);
}int main(void) {dht_t dev;int16_t temp, hum;puts("DHT temperature and humidity sensor + MQTT application\\n");// Initialize DHT sensor with specified parametersdht_params_t params = {.pin = DHT_PIN,.type = DHT11,};if (dht_init(&dev, &params) != DHT_OK) {puts("Error: Could not initialize DHT11 sensor");return 1;}mqtt_setup();init_gpio();while (1) {if (!MQTTIsConnected(&client)) {NetworkDisconnect(&network);if (reconnect() != 0) {xtimer_sleep(1);continue;}}// Read data from DHT sensorif (dht_read(&dev, &temp, &hum) == DHT_OK) {printf("Temperature: %d.%d°C, Humidity: %d.%d%%\\n", temp / 10, temp % 10, hum / 10, hum % 10);// Turn on LED if temperature is above 25.0°C (threshold)if (temp > 250) {gpio_set(LED_PIN);} else {gpio_clear(LED_PIN);}// JSON payload constructionchar json[256];snprintf(json, sizeof(json), "{\\\"temperature\\\": %d.%d, \\\"humidity\\\": %d.%d}",temp / 10, temp % 10, hum / 10, hum % 10);// Publish data via MQTTreport_property(REPORT_TOPIC, json);} else {puts("Error reading values from DHT11 sensor");}MQTTYield(&client, 1000);xtimer_sleep(5);  // Sleep for 5 seconds}return 0;
// Self Executable
}

評分:?

代碼2

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "periph/gpio.h"
#include "xtimer.h"
#include "paho_mqtt.h"
#include "MQTTClient.h"#define SENSOR_INTERVAL 5000  // Interval to poll DHT11 data in milliseconds// MQTT Configuration
#define MQTT_SERVER "test.mosquitto.org"
#define MQTT_PORT 1883
#define MQTT_USER NULL
#define MQTT_PASSWORD NULL
#define MQTT_CLIENT_ID "esp32-dht11-client"
#define SUBSCRIBE_TOPIC "/dht11/commands"
#define REPORT_TOPIC "/dht11/data"#define BUF_SIZE 1024
#define COMMAND_TIMEOUT_MS 6000
#define KEEP_ALIVE_INTERVAL 60static MQTTClient client;
static Network network;
static unsigned char buf[BUF_SIZE];
static unsigned char readbuf[BUF_SIZE];void init_sensor_and_hardware(void);
void mqtt_setup(void);
void report_property(const char* topic, char* payload);
void publish_sensor_data(float temperature, float humidity);
int reconnect(void);
int read_sensor_data(float* temperature, float* humidity);// Initialize sensor and GPIO
void init_sensor_and_hardware(void) {printf("Mock: Sensor initialized successfully\n");
}// Mock reading temperature and humidity values
int read_sensor_data(float* temperature, float* humidity) {if (!temperature || !humidity) {return -1;}*temperature = 25.0;  // Mock data*humidity = 60.0;     // Mock dataprintf("Mock: Read Temperature = %.2f°C, Humidity = %.2f%%\n", *temperature, *humidity);return 0;
}// Setup MQTT
void mqtt_setup(void) {NetworkInit(&network);MQTTClientInit(&client, &network, COMMAND_TIMEOUT_MS, buf, BUF_SIZE, readbuf, BUF_SIZE);printf("MQTT client initialized\n");reconnect();
}// Reconnect to MQTT broker
int reconnect(void) {MQTTPacket_connectData data = MQTTPacket_connectData_initializer;data.MQTTVersion = 4;data.keepAliveInterval = KEEP_ALIVE_INTERVAL;data.cleansession = 1;data.clientID.cstring = MQTT_CLIENT_ID;int rc = NetworkConnect(&network, MQTT_SERVER, MQTT_PORT);if (rc != 0) {printf("Mock: Failed to connect to network (%d)\n", rc);return rc;}rc = MQTTConnect(&client, &data);if (rc != 0) {printf("Mock: Failed to connect to broker (%d)\n", rc);return rc;}printf("Mock: MQTT connected\n");return 0;
}// Publish sensor data to MQTT
void publish_sensor_data(float temperature, float humidity) {char json[128];snprintf(json, sizeof(json), "{\"temperature\": %.2f, \"humidity\": %.2f}", temperature, humidity);report_property(REPORT_TOPIC, json);
}// Helper to publish property
void report_property(const char* topic, char* payload) {MQTTMessage message;message.qos = QOS0;message.retained = 0;message.payload = payload;message.payloadlen = strlen(payload);MQTTPublish(&client, topic, &message);printf("Mock: Published: %s\n", payload);
}int main(void) {printf("Starting ESP32-DHT11 MQTT application\n");init_sensor_and_hardware();mqtt_setup();while (1) {float temperature = 0, humidity = 0;if (read_sensor_data(&temperature, &humidity) == 0) {publish_sensor_data(temperature, humidity);}xtimer_sleep(SENSOR_INTERVAL / 1000);}return 0;
}
// Self Executable

?評分:

代碼三

#include <stdio.h>
#include <string.h>
#include "paho_mqtt.h"
#include "MQTTClient.h"
#include "ztimer.h"
#include "dht.h"
#include "dht_params.h"// MQTT Parameters
#define MQTT_SERVER "101.133.196.127"
#define MQTT_PORT 1883
#define MQTT_USER "YOUR_MQTT_USERNAME"
#define MQTT_PASSWORD "YOUR_MQTT_PASSWORD"
#define MQTT_CLIENT_ID "YOUR_MQTT_CLIENT_ID"
#define REPORT_TOPIC "YOUR_REPORT_TOPIC"// MQTT Client Buffer Sizes
#define BUF_SIZE 1024
#define KEEP_ALIVE_INTERVAL 60
#define UPDATE_INTERVAL     (2 * US_PER_SEC) // 2 seconds delaystatic MQTTClient client;
static Network network;
static unsigned char buf[BUF_SIZE];
static unsigned char readbuf[BUF_SIZE];void mqtt_setup(void) {NetworkInit(&network);MQTTClientInit(&client, &network, 4000, buf, BUF_SIZE, readbuf, BUF_SIZE);printf("MQTT client initialized\n");
}int mqtt_connect(void) {MQTTPacket_connectData data = MQTTPacket_connectData_initializer;data.MQTTVersion = 4;data.clientID.cstring = MQTT_CLIENT_ID;data.username.cstring = MQTT_USER;data.password.cstring = MQTT_PASSWORD;data.keepAliveInterval = KEEP_ALIVE_INTERVAL;data.cleansession = 1;int rc = NetworkConnect(&network, MQTT_SERVER, MQTT_PORT);if (rc != 0) {printf("Failed to connect to network (%d)\n", rc);return rc;}rc = MQTTConnect(&client, &data);if (rc != 0) {printf("Failed to connect to broker (%d)\n", rc);return rc;}return 0;
}void report_property(const char* topic, char* json) {MQTTMessage message;message.qos = QOS0;message.retained = 0;message.payload = json;message.payloadlen = strlen(json);MQTTPublish(&client, topic, &message);printf("Published: %s\n", json);
}void read_and_publish_data(dht_t *dev) {int16_t temperature, humidity;if (dht_read(dev, &temperature, &humidity) != DHT_OK) {puts("Failed to read from DHT sensor");return;}char payload[256];snprintf(payload, sizeof(payload), "{\"temperature\": %.1f, \"humidity\": %.1f}", temperature / 10.0, humidity / 10.0);report_property(REPORT_TOPIC, payload);
}int main(void) {dht_t sensor;mqtt_setup();if (mqtt_connect() != 0) {return 1;}if (dht_init(&sensor, &dht_params[0]) != DHT_OK) {puts("Failed to initialize DHT sensor");return 1;}printf("Successfully initialized DHT sensor\n");while (1) {read_and_publish_data(&sensor);MQTTYield(&client, 1000);  // MQTT client task handlingztimer_sleep(ZTIMER_USEC, UPDATE_INTERVAL);  // Sleep for update interval}return 0;
}

評分:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86536.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86536.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86536.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

swift 對象轉Json

在 Swift 中將對象轉換為 JSON 可以通過以下方法實現&#xff1a; 使用 Codable 協議 Swift 的 Codable 協議&#xff08;Encodable 和 Decodable 的組合&#xff09;是處理 JSON 編碼和解碼的推薦方式。 struct Person: Codable {var name: Stringvar age: Int }let person…

Python學習Day43

學習來源&#xff1a;浙大疏錦行 import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as transforms import numpy as np import matplotlib.pyplot as plt from PIL import Image import os # 設置隨機…

了解一下Unity AssetBundle 的幾種加載方式

Unity 的 AssetBundle 系統提供了多種加載方式&#xff0c;以滿足不同場景下的資源管理和性能需求。 同步加載&#xff08;LoadFromFile&#xff09; 同步加載使用 AssetBundle.LoadFromFile 方法從文件系統中直接加載 AssetBundle。這種方式會阻塞主線程&#xff0c;直到加載…

鴻蒙邊緣智能計算架構實戰:多線程圖像采集與高可靠緩沖設計

目錄 一、技術背景與挑戰二、鴻蒙邊緣計算架構的核心特性1. 分布式軟總線&#xff1a;打破設備孤島2. 輕量化多線程模型 三、多線程圖像采集的穩定性設計1. 分層緩沖隊列架構2. 線程優先級策略 四、邊緣側高可靠緩沖機制1. 基于分布式數據管理的容錯設計2. 動態帶寬調節 五、實…

excel中vba開發工具

1、支持單元格點擊出現彈框進行選擇 支持模多次模糊查詢 Private Sub CommandButton1_Click() Call vehicle_查詢 End SubPrivate Sub Worksheet_Activate()Call vehicle_取出車架號和公司名稱 取出不重復的車架號Sheet13.ComboBox1.Visible False 車架號顯示Sheet13.ComboB…

CatBoost:征服類別型特征的梯度提升王者

基于有序提升與對稱樹的下一代GBDT框架&#xff0c;重塑高維分類數據處理范式 一、CatBoost的誕生&#xff1a;解決類別特征的終極挑戰 2017年由俄羅斯Yandex團隊開源&#xff0c;CatBoost&#xff08;Categorical Boosting&#xff09;直指機器學習中的核心痛點&#xff1a;類…

使用 WSL 啟動ubuntu.tar文件

使用 WSL 啟動ubuntu.tar文件&#xff0c;可按以下步驟進行3&#xff1a; 檢查 WSL 版本&#xff1a;確保你的 WSL 版本為 2.4.8 或更高版本。可以在命令行中輸入wsl --update來更新 WSL 到最新版本。 設置默認 WSL 版本&#xff1a;如果還沒有將 WSL 2 設置為默認版本&#x…

vue-23(創建用于邏輯提取的可重用組合組件)

創建用于邏輯提取的可重用組合組件 可重用的組合式是 Vue 組合式 API 的基石&#xff0c;它使你能夠在多個組件中提取和重用有狀態邏輯。這有助于編寫更清晰的代碼&#xff0c;減少冗余&#xff0c;并提高可維護性。通過將特定功能封裝到組合式中&#xff0c;你可以輕松地共享…

數據透視表學習筆記

學習視頻&#xff1a;Excel數據透視表大全&#xff0c;3小時從小白到大神&#xff01;_嗶哩嗶哩_bilibili 合并行標簽 初始數據透視表 不顯示分類匯總 以大綱形式顯示 在組的底部顯示所有分類匯總 以表格形式顯示 合并單元格-右鍵-數據透視表選項 選中-合并并劇中排列帶…

吃透 Golang 基礎:測試

文章目錄 go test測試函數隨機測試測試一個命令白盒測試外部測試包 測試覆蓋率基準測試剖析示例函數 go test go test命令是一個按照一定的約定和組織來測試代碼的程序。在包目錄內&#xff0c;所有以xxx_test.go為后綴名的源文件在執行go build時不會被構建為包的一部分&#…

酒店服務配置無門檻優惠券

1.查看酒店綁定的是那個倉庫&#xff1b; 凱里亞德酒店(深圳北站壹城中心店)&#xff0c;綁定的是“龍華民治倉&#xff08;睿嘀購” 2.“門店列表”選擇“龍華民治倉&#xff08;睿嘀購””中的“綁定場所” 3.通過酒店名字查找綁定的商品模板&#xff1b; 凱里亞德酒店(深圳…

IoT創新應用場景,賦能海外市場拓展

在數字化浪潮席卷全球的當下&#xff0c;物聯網&#xff08;Internet of Things, IoT&#xff09;正以革命性的力量重塑產業生態。這項通過傳感器、通信技術及智能算法實現設備互聯的技術&#xff0c;不僅推動全球從“萬物互聯”邁向“萬物智聯”&#xff0c;更成為賦能企業開拓…

Idea中Docker打包流程記錄

1. maven項目&#xff0c;先打package 2.添加Dockerfile 3.執行打包命令 注意最后的路徑 . docker buildx build -t xxx-app:版本號 -f Dockerfile . 4.下載文件 docker save -o xxx-app-版本號.tar xxx-app:版本號 5.加載鏡像 docker load -i xxx-app-版本號.tar 6.編…

硬件工程師筆試面試高頻考點-電阻

目錄 1.1 電阻選型時一般從哪幾個方面進行考慮? 1.2上拉下拉電阻的作用 1.3 PTC熱敏電阻作為電源電路保險絲的工作原理 1.4 如果阻抗不匹配&#xff0c;有哪些后果 1.5 電阻、電容和電感0402、0603和0805封裝的含義 1.6 電阻、電容和電感的封裝大小與什么參數有關 1.7 …

小程序入門:小程序 API 的三大分類

在小程序開發中&#xff0c;API&#xff08;Application Programming Interface&#xff09;起著至關重要的作用&#xff0c;它為開發者提供了豐富的功能和能力&#xff0c;使我們能夠創建出功能強大、用戶體驗良好的小程序。小程序 API 大致可分為以下三大分類&#xff1a;事件…

算法第55天|冗余連接、冗余連接II

冗余連接 題目 思路與解法 #include <iostream> #include <vector> using namespace std; int n; // 節點數量 vector<int> father(1001, 0); // 按照節點大小范圍定義數組// 并查集初始化 void init() {for (int i 0; i < n; i) {father[i] i;} } //…

Docker單獨部署grafana

Docker單獨部署grafana 環境說明 操作前提&#xff1a; 先去搭建PC端的MySQL和虛擬機 自行找參考 Linux部署docker參考文章&#xff1a; 02-Docker安裝_docker安裝包下載-CSDN博客 本文參考文章&#xff1a; 運維小記 說明&#xff1a; 本文的操作均以搭建好的PC端的MySQL和虛…

【數據分析,相關性分析】Matlab代碼#數學建模#創新算法

【數據分析&#xff0c;相關性分析】118-matlab代碼 #數學建模#創新算法 相關性分析及繪圖 基于最大互信息系數的特征篩選 最大互信息系數 皮爾遜相關系數 spearman相關系數 kendall秩相關系數 請自帶預算時間與需求以便高效溝通&#xff0c;回復超快&#xff0c;可以加急…

淺談C++ 中泛型編程(模版編程)

C 是一種強大且靈活的編程語言&#xff0c;支持多種編程范式&#xff0c;使得開發者能夠選擇最適合特定問題的解決方案。在實際開發中&#xff0c;面向對象編程、泛型編程、函數式編程和元編程是最常用的幾種范式。 今天主要與大家一起來介紹和學習泛型編程&#xff08;即模版…

iOS開發中的KVO以及原理

KVO概述 KVO(Key-Value-Observing)是iOS開發中一種觀察者模式實現&#xff0c;允許對象監聽另一個對象屬性的變化。當被觀察屬性的值發生變化時&#xff0c;觀察者會收到通知。KVO基于NSKeyValueObserving協議實現&#xff0c;是Foundation框架的核心功能之一。 1.KVO的基本使…