#include WiFih#include OneWireh#include DallasTemperatureh#include PubSubClienth#include Servoh WiFi信息const char ssid = HONOR Play4T;const char password = 12345678; OneNet信息const char server = mqtthec
如果你需要获取湿度,可以使用DHT库来获取。这里提供一个修改后的代码:
#include <WiFi.h> #include <DHT.h> #include <PubSubClient.h> #include <Servo.h>
// WiFi信息 const char* ssid = "HONOR Play4T"; const char* password = "12345678";
// OneNet信息 const char* server = "mqtt.heclouds.com"; const int port = 6002; const char* deviceId = "1099655073"; const char* apiKey = "L=ljQ23ELQoOmTvhDGkFKnMZ77E="; const char* topicPub = "/topicPub"; const char* topicSub = "/topicSub";
// 温湿度传感器信息 #define DHTPIN 4 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); float tempC; float humid;
// 伺服舵机信息 Servo myservo; int servoPos = 0;
// MQTT客户端 WiFiClient espClient; PubSubClient client(espClient);
// 连接WiFi和MQTT void setup_wifi_mqtt() { 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()); client.setServer(server, port); }
// 湿温度传感器初始化 void setup_sensors() { dht.begin(); }
// 获取湿温度 void get_sensors() { tempC = dht.readTemperature(); humid = dht.readHumidity(); Serial.print("Temperature: "); Serial.print(tempC); Serial.println(" *C"); Serial.print("Humidity: "); Serial.print(humid); Serial.println(" %"); }
// 连接OneNet并上传数据 void connect_onenet() { if (!client.connected()) { Serial.print("Connecting to OneNet..."); String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); if (client.connect(clientId.c_str(), deviceId, apiKey)) { Serial.println("connected"); String payload = "{"datastreams":[{"id":"temperature","datapoints":[{"value":""; payload += String(tempC); payload += ""}]},{"id":"humidity","datapoints":[{"value":""; payload += String(humid); payload += ""}]}]}"; client.publish(topicPub, payload.c_str()); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" retrying in 5 seconds"); delay(5000); } } client.loop(); }
// 订阅命令并控制舵机 void subscribe_control() { client.subscribe(topicSub); client.setCallback([](char* topic, byte* payload, unsigned int length) { String command = ""; for (int i = 0; i < length; i++) { command += (char)payload[i]; } Serial.print("Received command: "); Serial.println(command); if (command == "0") { servoPos = 0; } else if (command == "1") { servoPos = 180; } else { servoPos = 0; } myservo.write(servoPos); }); }
void setup() { Serial.begin(9600); setup_wifi_mqtt(); setup_sensors(); myservo.attach(7); }
void loop() { get_sensors(); connect_onenet(); subscribe_control(); delay(1000);
原文地址: https://www.cveoy.top/t/topic/hi2k 著作权归作者所有。请勿转载和采集!