#include <WiFi.h>
#include <PubSubClient.h>
#include <ESPping.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqttServer = "c7a9cef0694e46a7a151566ff79f6057.s2.eu.hivemq.cloud";
const int mqttPort = 8883;
const char* mqttUser = "admin";
const char* mqttPassword = "BIGpassword1";
const char* clientId = "ESP32Client";
const float BETA = 3950;
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi")
}
void reconnect() {
// Loop until we're reconnected
while (!client->connected()) {
Serial.print("Attempting MQTT connection...");
String clientId = "ESP32Client - MyClient";
// Attempt to connect
if (client->connect(clientId.c_str(), "admin", "BIGpassword1")) {
Serial.println("connected");
// Once connected, publish an announcement…
client->publish("testTopic", "hello world");
// … and resubscribe
client->subscribe("testTopic");
} else {
Serial.print("failed, rc = ");
Serial.print(client->state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
analogReadResolution(10);
pinMode(34, INPUT); // Assuming the NTC is connected to pin 34
pinMode(14, OUTPUT);
setup_wifi();
}
void loop() {
if (!client->connected()) {
reconnect();
}
client->loop();
int analogValue = analogRead(34);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println(" ℃");
// Publish temperature to MQTT topic
char temperatureStr[10];
sprintf(temperatureStr, "%.2f", celsius);
client.publish("your/temperature/topic", temperatureStr);
client.loop();
// Additional logic using the temperature value, e.g., controlling an output
if (celsius >= 35) {
digitalWrite(14, HIGH);
} else {
digitalWrite(14, LOW);
}
delay(1000);
}
void callback(char* topic, byte* payload, unsigned int length) {
// Handle incoming messages if needed
}