Esp8266 - mqtt - mosquitto - no connection

Hya,

trying to use the following program with mosquitto broker seams impossible.

The esp8622 connects to my AP, same ip range of the broker, broker working as MQTT explorer shows, but serial of esp8266 shows that mqtt does not connect, message "Falha ao Reconecta".

Anyone aware if there is any special trick to make it work?

Thx in advance!

// LIBRARYS
#include <ESP8266WiFi.h> //ESP8266 Core WiFi Library 
//
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <WiFiManager.h>
#include <WiFiClientSecure.h>
//
#include <PubSubClient.h>
#include <SPI.h>
#include <MFRC522.h>

// DEFINES
#define RST_PIN D3
#define SS_PIN D8

// VARIABLES
const char* SSID     = "myssid"; // rede wifi
const char* PASSWORD = "myssidpwd"; // senha da rede wifi

const char* BROKER_MQTT = "192.168.1.65"; // ip/host do broker
int         BROKER_PORT = 1883; // porta do broker
const char* BROKER_USER = "brokeruser";
const char* BROKER_PASS = "noonethere";

const char* TOPIC_PING = "/rfid/card/ping";

const char* TOPIC_PONG = "/rfid/card/pong";

// PROTOTYPES
void initPins();
void initSerial();
void initRfid();
void initWiFi();
void initMQTT();

// OBJECTS
WiFiClient client;
PubSubClient MQTT(client); // instancia o mqtt
MFRC522 mfrc522(SS_PIN, RST_PIN); // instancia o rfid

// setup
void setup() {
  initSerial();
  initWiFi();
  initMQTT();
  initRfid();

}

void loop() {
  if (!MQTT.connected()) {
    reconnectMQTT();
  }
  recconectWiFi();
  MQTT.loop();

  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    delay(500);
    return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial()) {
    delay(500);
    return;
  }

  rfidProcess();

}

// implementacao dos prototypes

void initSerial() {
  Serial.begin(9600);
}

void initRfid() {
  SPI.begin();
  mfrc522.PCD_Init();
  Serial.println("Aproxime o seu cartao do leitor...");
  Serial.println();
}

void initWiFi() {
  delay(10);
  Serial.println("Conectando-se em: " + String(SSID));

  WiFi.begin(SSID, PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Conectado na Rede " + String(SSID) + " | IP => ");
  Serial.println(WiFi.localIP());
}

// Funcão para se conectar ao Broker MQTT
void initMQTT() {
  MQTT.setServer(BROKER_MQTT, BROKER_PORT);
  MQTT.setCallback(mqtt_callback);
}

//Função que recebe as mensagens publicadas
void mqtt_callback(char* topic, byte* payload, unsigned int length) {

  String message;
  for (int i = 0; i < length; i++) {
    char c = (char)payload[i];
    message += c;
  }
  Serial.println("Tópico => " + String(topic) + " | Valor => " + String(message));

  Serial.flush();
}

void reconnectMQTT() {
  while (!MQTT.connected()) {
    Serial.println("Tentando se conectar ao Broker MQTT: " + String(BROKER_MQTT));
    if (MQTT.connect("ESP8266-ESP12-E", BROKER_USER, BROKER_PASS )) {
      Serial.println("Conectado");
      MQTT.subscribe("/rfid/card/pong");

    } else {
      Serial.println("Falha ao Reconectar");
      Serial.println("Tentando se reconectar em 2 segundos");
      delay(2000);
    }
  }
}

void recconectWiFi() {
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    Serial.print(".");
  }
}

void rfidProcess()
{
  Serial.print("UID da tag : ");
  String conteudo = "";
  byte letra;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""));
    conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  char UUID[9];
  conteudo.toCharArray(UUID, 9);
  Serial.println(conteudo);
  MQTT.publish(TOPIC_PING, UUID);
}

mosquitto.conf

# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

allow_anonymous false
password_file /etc/mosquitto/passwd

# MQTT plain
#listener 1883
port 1883
protocol mqtt

# MQTT over TLS/SSL
listener 8883
protocol mqtt
cafile /etc/ssl/certs/PSign_TrustCenter_Root_CA-chain.pem  
keyfile /etc/mosquitto/certs/server.key
certfile /etc/mosquitto/certs/server.crt
#tls_version  tlsv1

# MQTT over WS
listener 1884
protocol websockets

log_type all

include_dir /etc/mosquitto/conf.d

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.