//esp32S3 #include #include #include #include #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // WiFi credentials const char* ssid = "你自己的wifi"; const char* password = "密码"; // MQTT Server const char* mqtt_server = "101.43.91.185"; const int mqtt_port = 1883; // MQTT Client IDs const char* client_id = "你设备的id"; // MQTT Username and Password (if required) const char* mqtt_user = "设备用户名"; const char* mqtt_password = "设备密码"; // MQTT Topics const char* topic_rpc = "v1/devices/me/rpc/request/+"; const char* topic_telemetry = "v1/devices/me/telemetry"; // WiFi Client WiFiClient espClient; // MQTT Clients PubSubClient client(espClient); // GPIO pin for LED const int ledPin = 4; void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); String message = ""; for (int i = 0; i < length; i++) { message += (char)payload[i]; } StaticJsonDocument<200> doc; DeserializationError error = deserializeJson(doc, message); if (!error) { const char* method = doc["method"]; if (strcmp(method, "setIO") == 0) { bool params = doc["params"]; digitalWrite(ledPin, params ? HIGH : LOW); Serial.println(params ? "LED ON" : "LED OFF"); } } else { Serial.print(F("deserializeJson() failed: ")); Serial.println(error.f_str()); } } void publishTemperature() { float temperature = dht.readTemperature();再再 if (isnan(temperature)) { Serial.println("Failed to read from DHT sensor!"); return; } StaticJsonDocument<200> doc; doc["temperature"] = temperature; char jsonBuffer[200]; serializeJson(doc, jsonBuffer); client_dht.publish(topic_telemetry, jsonBuffer); Serial.print("Published temperature: "); Serial.println(temperature); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection for test client..."); if (client.connect(client_id, mqtt_user, mqtt_password)) { Serial.println("connected"); client.subscribe(topic_rpc); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void setup() { pinMode(ledPin, OUTPUT); pinMode(chumo, INPUT); digitalWrite(ledPin, LOW); Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); static unsigned long lastMillis = 0; if (millis() - lastMillis >= 2000) { lastMillis = millis(); publishTemperature(); } } //digitalRead //