top of page

Publicació de missatges MQTT

Utilitzarem un servidor MQTT públic: mqtt.eclipse.org, que utiltza el port 1883

(Altre servidor públic: broker.hivemq.com)

MQTT_Lab01.png

Publicació bàsica

Objectiu: publicar un missatge al servidor mqtt.eclipse.org

// llibreries
#include <WiFi.h>
#include <PubSubClient.h>  

// objectes associats a la llibreria:
WiFiClient client_wifi;
PubSubClient client_mqtt;

// dades de la xarxa WiFi:
const char* ssid = "NomDeLaXarxa";
const char* pass = "contrassenya";

// dades mqtt:
const char* Servidor = "mqtt.eclipse.org";
const int Port = 1883;

// dades de la publicació:
const char* tema = "test";
const char* missatge = "Hola des de ESP32";

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

  
  WiFi.begin (ssid, pass);  

  connecta_WiFi ( );  

  client_mqtt.setServer (Servidor, Port);  
  client_mqtt.setClient (client_wifi);
  connecta_mqtt ( ); 

 

  client_mqtt.publish (tema, missatge);  
}

void loop ( )

  client_mqtt.loop ( );  

}

void connecta_WiFi ( )
{      
  while (WiFi.status ( ) ! = WL_CONNECTED)
  {
    delay (300); 
    Serial.print ('.');
  }
  Serial.print ("Connectat!");
}

void connecta_mqtt ( )
{
  while (! client_mqtt.connected ( ))
  {
    delay (2000);
    Serial.print ('.');
    client_mqtt.connect ("Carol");
  }
  Serial.print ("Connectat al servidor mqtt");
}

❶ A més de la llibreria WiFi, per treballar amb MQTT cal inserir als programes la llibreria PubSubClient

❷ Per simplificar, s'ha agrupat les instruccions relatives a la connexió WiFi en una funció connecta_WiFi ( )

❸ En aquesta part del programa s'associa l'objecte client_mqtt amb el servidor (dades del servidor prèviament definides) i amb el client_WiFi.

     Les instruccions relatives a la connexió amb el servidor MQTT s'han definit en la funció connecta_mqtt ( ) que connecta al servidor en bucle

     fins a tenir èxit.

     En aquesta funció, el paràmetre de la instrucció connect pot ser qualsevol text.

Un cop connectat, publica el missatge dins el tema (dades prèviament definides com a char*)

❺ La instrucció loop manté la connexió amb el servidor MQTT.

bottom of page