/* Send the DHT11 Measured Temperature via MQTT */ #include #include #include #include #include "DHTesp.h" // Update these with values suitable for your network. const char* ssid = "JoNelsDarlings"; const char* password = "Paris2016"; const char* mqtt_server = "mqtt.ddns.kawomi.com"; DHTesp dht; WiFiClient espClient; PubSubClient client(espClient); unsigned long lastMsg = 0; #define MSG_BUFFER_SIZE (50) char msg[MSG_BUFFER_SIZE]; void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Create a random client ID String clientId = "ESP32Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect if (client.connect(clientId.c_str())) { Serial.println("MQTT connected"); // Once connected, publish an announcement... } else { Serial.print("MQTT failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output Serial.begin(115200); setup_wifi(); dht.setup(5, DHTesp::DHT11); client.setServer(mqtt_server, 1883); // client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); delay(5000); digitalWrite(BUILTIN_LED,HIGH); delay(1000); digitalWrite(BUILTIN_LED,LOW); float humidity = dht.getHumidity(); float temperature = dht.getTemperature(); const char* status=dht.getStatusString(); if (strcmp(status,"OK") == 0) { // allocate the memory for the document const size_t CAPACITY = JSON_OBJECT_SIZE(3); StaticJsonDocument doc; // create an object JsonObject object = doc.to(); object["temperatureCelsius"] = temperature; object["temperatureFarenheit"] = dht.toFahrenheit(temperature); object["humidity"] = humidity; // serialize the object and send the result to Serial static char sensorStatus[150]; serializeJson(doc, sensorStatus); Serial.println(sensorStatus); client.publish("Outside/Weather", sensorStatus); } else { Serial.print("Error Reading Temp. "); Serial.println(status); } }