Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed to Connect to MQTT broker using ESP8266 #1013

Open
ahmadaufash opened this issue Jun 9, 2023 · 1 comment
Open

Failed to Connect to MQTT broker using ESP8266 #1013

ahmadaufash opened this issue Jun 9, 2023 · 1 comment

Comments

@ahmadaufash
Copy link

ahmadaufash commented Jun 9, 2023

Please help me, i should finish this project as soon
I want to make project monitoring using ESP8266, MQTT, and Node-RED dashboard
but I have an issue that my serial monitors showing cannot connected to MQTT
"Failed to connect to MQTT broker, rc=-2"
I try to test my mqtt in CMD using Sub and Pub, i send some text and it works well. but in my project it's failed.
here is my code:

#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Replace with your Wi-Fi credentials
const char* ssid = "mywifi";
const char* password = "password";

// Replace with your MQTT broker IP address
const char* mqttServer = "127.0.0.1";
const int mqttPort = 1883;

// Replace with your MQTT topics
const char* mqttTopicTemp = "sensors/temperature";
const char* mqttTopicOxygen = "sensors/oxygen";

WiFiClient espClient;
PubSubClient client(espClient);

Adafruit_MLX90614 mlx = Adafruit_MLX90614();
PulseOximeter pox;

void onHeartRateBeatDetected()
{
  float hr = pox.getHeartRate();
  Serial.print("Heart rate:");
  Serial.println(hr);
}

void setup() {
  Serial.begin(115200);

  // Connect to Wi-Fi
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  
  Serial.println("Connected to WiFi");
  
  // Connect to MQTT broker
  client.setServer(mqttServer, mqttPort);
  
  while (!client.connected()) {
    if (client.connect("ESP8266Client")) {
      Serial.println("Connected to MQTT broker");
    }
    else {
      Serial.print("Failed to connect to MQTT broker, rc=");
      Serial.println(client.state());
      delay(2000);
    }
  }

  // Initialize sensors
  mlx.begin();
  pox.begin();

  // Set up a callback for pulse detection
  pox.setOnBeatDetectedCallback(onHeartRateBeatDetected);
}

void loop() {
  // Read temperature from MLX90614 sensor
  float temperature = mlx.readObjectTempC();
  
  // Convert temperature to string
  String tempPayload = String(temperature);
  
  // Publish temperature to MQTT topic
  client.publish(mqttTopicTemp, tempPayload.c_str());

  // Update pulse oximeter
  pox.update();

  // Read oxygen level from MAX30100 sensor
  if (pox.begin()) {
    float oxygen = pox.getSpO2();
  
    // Convert oxygen level to string
    String oxygenPayload = String(oxygen);
  
    // Publish oxygen level to MQTT topic
    client.publish(mqttTopicOxygen, oxygenPayload.c_str());
  }

  delay(1000);  // Adjust the delay based on your needs
}
@superbool
Copy link

Make sure your local PC "127.0.0.1" and the "mywifi" in the same wifi.
You can print you ESP8266's ip address and the PC ip address to check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants