Blog relacionado a la informática. Principalmente a la plataforma Arduino

Arduino Yun + Node.js + MQTT

No hay comentarios

¿Que es MQTT?

MQTT (Message Queue Telemetry Transport) es un protocolo de conectividad enfocado a M2M (machine-to-machine) y al IOT (Internet of Things) ya que se ha diseñado para ser un protocolo de mensajería extremadamente ligero basado en TCP.

Los mensajes se intercambian a través de un servidor de mensajería de MQTT (Broker). El cliente y el servidor de MQTT manejan las complejidades de entregar mensajes de forma fiable para la aplicación móvil y mantener bajo el precio de la gestión de red.

Usare como Broker/Server MQTT el Servidor público http://test.mosquitto.org/

Pre-requisitos

Mosquitto se basa en varios paquetes de terceros para instalar correctamente. Lo siguiente debe ser instalado antes de Mosquitto según su documentación para Windows:
  • Microsoft Visual C++ 2010 Redistributables
    • Link: http://www.microsoft.com/en-us/download/details.aspx?id=5555
    • Instalar vcredist_x86.exe
  • OpenSSL
    • Link: http://slproweb.com/products/Win32OpenSSL.html
    • Instalar "Win32 OpenSSL <version>"
    • Utilice todos los ajustes predeterminados en el instalador
    • Require de los DLLs: libeay32.dll ssleay32.dll
  • pthreads
    • Link: ftp://sourceware.org/pub/pthreads-win32
    • No se requiere instalación para pthreads-w32-<version>-release.zip
    • Require del DLLs: pthreadVC2.dll
  • DLLs

Instalación:

  • Instalación de Mosquitto
    • Enlace http://mosquitto.org/download/ 
    • Instalar Windows binario mosquitto- <versión> -install-win32.exe (versión nativa, Windows Vista o superior) 
    • Copie los siguientes archivos de la instalación de OpenSSL, C: \ OpenSSL-Win32, a la carpeta raíz de Mosquitto, C: \ Archivos de programa (x86) \ mosquitto: 
      • ssleay32.dll libeay32.dll 
    • Copie el siguiente archivo desde el archivo comprimido pthreads a la carpeta raíz Mosquitto, C: \ Archivos de programa (x86) \ mosquitto: 
      • pthreads-w32-<version>-release.zip\Pre-built.2\dll\x86\pthreadVC2.dll
  • Instalar el npm mqtt, con el comando npm install mqtt --save.



  • Instalar la librería pubsubclient para el código de Arduino.

Códigos

  • Código de Node.js 
var mqtt = require('mqtt')
var client  = mqtt.connect('mqtt://localhost:1883')
 
client.on('connect', function () {
  client.subscribe('outTopic')
  client.publish('inTopic', 'Hello Arduino')
})
 
client.on('message', function (topic, message,packet) { 
  console.log(`Mensaje ${message.toString()}`)
  client.end()
})

  • Código de Arduino Yun
#include <Bridge.h>
#include <BridgeClient.h>
#include <PubSubClient.h>

IPAddress server(192, 168, 1, 88); //Ip de Servidor donde se levanto Mosquitto

BridgeClient briClient;
PubSubClient client(briClient);

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Mensaje recivido [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i=0;i<length;i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
  client.publish("outTopic","Hello Node.js");
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("MQTT conectando...");
    if (client.connect("")) {
      Serial.println("conectado !");
      client.publish("outTopic","Hello Node.js");
      client.subscribe("inTopic");
    } else {
      Serial.print("fallo, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
  }
}

void setup(){
  Serial.begin(57600);
  client.setServer(server, 1883);
  client.setCallback(callback);
  Bridge.begin();
  delay(1500);
}

void loop(){
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
}

  • Ejecutar Mosquitto 
    • Ir a la carpeta raíz de Mosquitto, como C: \ Archivos de programa (x86)\ mosquitto. Y ejecutar mosquitto.
  • Cargar el Código a la Arduino Yun
  • Ejecutar en codigo de Node.js

















No hay comentarios :

Publicar un comentario