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.