knolleary / pubsubclient

A client library for the Arduino Ethernet Shield that provides support for MQTT.
http://pubsubclient.knolleary.net/
MIT License
3.82k stars 1.47k forks source link

Can't connect to my hiveq server from arduino using ESP8266 #1061

Open mnasirbaloch opened 3 months ago

mnasirbaloch commented 3 months ago

Error Message:"failed rc=-2"

Code:

include // DHT library which uses some functions from Adafruit Sensor library

include // Library for using ESP8266 WiFi

include // Library for secure WiFi connections

include // MQTT library

include // LittleFS library for ESP8266

define DHTPIN 4

define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

// WiFi credentials const char ssid = "myWifiSSID"; const char password = "myWifiCode";

// MQTT broker information const char mqtt_server = "myHiveQ.cloud"; const int mqtt_port = 8883; const char mqtt_username = "devwithmnasir2"; const char* mqtt_password = "Devwithmnasir123@";

WiFiClientSecure espClient; PubSubClient client(espClient);

void setup() { Serial.begin(9600); dht.begin();

// Initialize LittleFS if (!LittleFS.begin()) { Serial.println("Failed to mount file system"); return; }

// Connect to WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected");

// Load CA certificate from LittleFS File ca = LittleFS.open("/data/certs.ar", "r"); // Adjust path to match your setup if (!ca) { Serial.println("Failed to open CA file"); return; } if (!espClient.loadCACert(ca)) { Serial.println("Failed to load CA certificate"); } ca.close();

// Set secure connection for MQTT espClient.setInsecure(); client.setServer(mqtt_server, mqtt_port); }

void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Connecting to MQTT...");

// Generate a unique client ID String clientId = "ESP8266Client-" + String(millis());

if (client.connect(clientId.c_str(), mqtt_username, mqtt_password)) { Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); delay(2000); } } }

void loop() { if (!client.connected()) { reconnect(); } client.loop();

// Read sensor data every 2 seconds static unsigned long lastReadTime = 0; if (millis() - lastReadTime > 2000) { lastReadTime = millis();

float h = dht.readHumidity(); float t = dht.readTemperature();

if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; }

String payload = "Temperature: " + String(t) + " C, Humidity: " + String(h) + " %"; Serial.print("Publishing data: "); Serial.println(payload);

client.publish("temprature_hum", payload.c_str()); } }