Página 1 de 1

Servidor MQTT disponible

Publicado: 09 Mar 2017, 16:03
por Naguissa
Acabo de poner diponible para cualquiera un servidor MQTT privado basado en Mosquitto para cada usuario/aplicación creada.

Funciona con los mismos usuarios de la API de datos.

Podéis ver los detalles en la página de documentación: Servidor MQTT v3.1 privado de ForoElectro.Net

Cualquier duda o problema podéis comentarlos aquí.

Re: Servidor MQTT v3.1 disponible

Publicado: 09 Oct 2019, 14:38
por Naguissa
Se ha mejorado la funcionalidad habilitando múltiples topics para cada usuario, de manera que se puedan controlar distintos elementos dentro del mismo.

Además, os dejo un ejemplo de programa, para Arduino y ESP8266:

Código: Seleccionar todo

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Update these:
const char* ApiKey = "ApiKey de https://www.foroelectro.net/arduino/es/mqtt-doc";
const char* email = "email corresponding to previous ApiKey";
const char* ssid = "SSID WIFI";
const char* password = "PASSWORD WIFI";

// Other variables
const char* mqtt_server = "foroelectro.net";
char topicOut[200];
char topicIn[200];

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  randomSeed(micros());
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("arduinoClient", ApiKey, email)) {
      Serial.println("connected");
      client.publish(topicOut, "hello world - connected");
      client.subscribe(topicIn);
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  String stopicOut = ApiKey;
  stopicOut.concat("/topicOut");
  stopicOut.toCharArray(topicOut, 200);
  String stopicIn = ApiKey;
  stopicIn.concat("/topicIn");
  stopicIn.toCharArray(topicIn, 200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  long now = millis();
  if (now - lastMsg > 2000) {
    lastMsg = now;
    ++value;
    snprintf (msg, 50, "hello world %ld", value);
    Serial.print("Publish message: ");
    Serial.println(msg);
    client.publish(topicOut, msg);
  }
}
Podéis actuar con él usando las herramientas del servidor mosquitto; en Linux es el paquete mosquitto-clients

Para susbribirse:

Código: Seleccionar todo

mosquitto_sub -i ID_CLIENTE_DESEADA -h foroelectro.net -u API_KEY -P EMAIL -t API_KEY/+
Ese "/+" del topic se añade para suscribirse a TODOS los subtopics.

Para enviar un mensaje:

Código: Seleccionar todo

mosquitto_pub -i ID_CLIENTE_DESEADA -h foroelectro.net -u API_KEY -P EMAIL -t API_KEY/SUBTOPIC -m "MENSAJE A ENVIAR"

Re: Servidor MQTT disponible

Publicado: 17 Mar 2020, 14:03
por Naguissa
He actualizado el servidor Mosquitto a la versión 3.6.9.

Esta versión soporta los protocolos MQTT 3.1, 3.1.1 y 5.0

Re: Servidor MQTT disponible

Publicado: 23 Feb 2022, 15:48
por Naguissa
Acabo de añadir a la web de servicios dos extras para el servidor MQTT:
1) Un formulario para que, estando identificado, podamos enviar datos a nuestro espacio en el servidor MQTT
2) Una API para hacer lo mismo desde cualquier proyecto IoT, web, o lo que deseemos.

Podéis ver los detalles aquí: arduino/es/mqtt

Re: Servidor MQTT disponible

Publicado: 25 Feb 2022, 11:26
por Naguissa
Naguissa escribió: 23 Feb 2022, 15:48 Acabo de añadir a la web de servicios dos extras para el servidor MQTT:
1) Un formulario para que, estando identificado, podamos enviar datos a nuestro espacio en el servidor MQTT
2) Una API para hacer lo mismo desde cualquier proyecto IoT, web, o lo que deseemos.

Podéis ver los detalles aquí: arduino/es/mqtt
Acabo de añadir a esta misma página un sistema de presets, de manera que puedes tener botones que directamente envían el mensaje que hayas grabado previamente.