Instalando y configurando Mosquitto en la Raspberry Pi

Mosquitto es un broker MQTT. Se trata, en pocas palabras, de un servidor en el que podemos publicar información, o suscribirnos a la información que se publique. ¿Qué utilidad puede tener esto para nosotros? Pues en un sistema  como el que estamos desarrollando, en el que tenemos ciertos nodos sensores que reciben información del medio de forma bastante heterogénea (sensores RF, comandos en sistemas Linux, sensores de luz, información meteorológica obtenida de páginas web, …) tiene muchísima utilidad. Podemos hacer que los sensores publiquen toda esta información en un lugar centralizado, y luego mediante openHAB suscribirnos a esa información y provocar ciertos comportamientos en base a ella (como encender unas farolas si hay poca luz y nos encontramos en el lugar, o regar las plantas si la humedad del suelo baja demasiado, …).

Vamos a ello. Añadimos el repositorio oficial de Mosquitto y lo instalamos:

Actualización 20-05-2015: Parece que han cambiado el nombre del fichero mosquitto-repo.list a mosquitto-jessie.list o mosquitto-wheezy.list y dependiendo de la versión de la distribución que tengáis, deberéis cambiar el comando anterior para bajaros una u otra. Gracias a Alberto por la nota.

Una vez hecho esto, si todo ha ido bien, deberemos tener el servidor mosquitto funcionando, escuchando peticiones en el puerto 1883, registrando errores en /var/log/mosquitto/mosquitto.log, y usando la configuración de /etc/mosquitto/mosquitto.conf. Lo podemos comprobar con el comando:

Vamos a ir un poco más allá de la configuración por defecto y vamos a activar el soporte de cifrado SSL/TLS. Necesitaremos crear un certificado autofirmado para nuestra autoridad de certificación (CA), y después generar un certificado, firmado por esta CA, para nuestro servidor mosquitto (o pagar y pedir uno a Verisign…). En este punto, el autor del programa mqttitude, Jean-Piet Mens ha pensado en todos y ha creado un script que lo hace por nosotros. Lo descargamos, y lo ejecutamos:

Antes de ejecutar el script mosquitto-setup.sh tenemos que cambiar unas lineas para que nos deje todos los archivos en las rutas correspondientes a nuestra instalación en lugar de en la carpeta /tmp/mosquitto, y con los permisos correctos para el usuario mosquitto:

De forma opcional también podemos revisar y cambiar algunos valores del script generate-CA.sh, como las variables ALT_HOSTNAMES, CA_ORG y CA_DN a valores que nos gusten para esos campos de los certificados. Si los dejamos tal cual, no pasa nada, el funcionamiento será el mismo, pero a la hora de ver las propiedades de los certificados veremos las diferencias (cadenas de texto en los atributos del certificado). Ejecutamos el script mosquitto_setup.sh y comprobamos que tenemos todos los certificados en las carpetas /etc/mosquitto/ca_certificates y /etc/mosquitto/certs, y el fichero de configuración en /etc/mosquitto/mosquitto.conf.

 Con todo esto, ya podemos iniciar el servicio (/etc/init.d/mosquitto start) y comprobar que ahora tenemos el servidor escuchando por los puertos 1883 (normal) y 8883 (seguro).

Para probarlo abrimos dos terminales, y en uno ejecutamos el subscriptor:

y en el otro vamos publicando mensajes con:

En siguientes entradas del blog, iré profundizando más en la configuración de MQTT y configuraremos la aplicación mqttitude para que nos publique cada cierto tiempo la posición de nuestro móvil Android en el servidor mosquitto, y más adelante configuraremos openHAB para que actúe en función de la localización del móvil. Espero que os guste, estad atentos porque ya están las entradas en el horno…

ACTUALIZACIÓN 17/04/2014: Parte 2 disponible aquí.

Comentarios

  1. Por Paqui

    Responder

    • Por José María

      Responder

      • Por Paqui

        Responder

        • Por Alberto Alonso

          Responder

  2. Por Paqui

    Responder

    • Por José María

      Responder

      • Por Paqui

        Responder

        • Por José María

          Responder

          • Por Paqui

          • Por José María

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *