Proyecto aTIC (III) - Broker MQTT

 Broker MQTT. 

En el primer post (Proyecto aTIC (I) - Introducción) ya se ha determinado que la RPI2 va a alojar un broker MQTT en el que el ordenador, mediante un script de python, publicará los datos recogidos del sensor bajo un topic. El nombre del topic es "Datos OBD".


Este broker MQTT es de mosquitto (como se puede ver en la siguiente sección de código), donde se muestra el Docker Compose de la RPI2. De nuevo, como en la RPI1, se emplea Docker Compose y se especifican los servicios de Portainer, Grafana, Mosquitto y Python.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
version: '2'
services:

  portainer:
    container_name: portainer
    image: portainer/portainer
    restart: unless-stopped
    ports:
      - 9000:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./volumes/portainer/data:/data

  grafana:
    container_name: grafana
    image: grafana/grafana:6.3.6
    restart: unless-stopped
    user: "0"
    ports:
      - 3000:3000
    env_file:
      - ./services/grafana/grafana.env
    volumes:
      - ./volumes/grafana/data:/var/lib/grafana
      - ./volumes/grafana/log:/var/log/grafana

  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto
    restart: unless-stopped
    user: "1883"
    ports:
      - 1883:1883
      - 9001:9001
    volumes:
      - ./volumes/mosquitto/data:/mosquitto/data
      - ./volumes/mosquitto/log:/mosquitto/log
      - ./services/mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf


  python:
    container_name: python
    build: ./services/python/.
    restart: unless-stopped
    network_mode: host
    volumes:
      - ./volumes/python/app:/usr/src/app

Como se observa, el servicio de Mosquitto es accesible desde el puerto 1883 y gracias a que se ha configurado una DNS mediante Duck DNS como en el caso de la base de datos InfluxDB de la RPI1, el broker es accesible remotamente mediante la dirección:

http://aticrpi2.duckdns.org:1883

Así, el ordenador que recoge los datos del sensor puede publicar datos en el topic aunque no se encuentre conectado a la misma red. Para comprobar que esta publicación de datos se realizaba correctamente remotamente, se ha hecho uso de MQTT.fx para visualizar las publicaciones bajo el topic "Datos OBD". Se ha confiurado el broker al que acceder de la siguiente manera en la herramienta MQTT.fx, donde se ve que se emplea la DNS y se accede remotamente.

Gracias a esto, y suscribiéndose al topic "Datos OBD", se pudo comprobar que los datos se publicaban correctamente desde el ordenador y quedaban disponibles para la RPI2 para enviarlos por HTTP a la base de datos de InfluxDB alojada en la RPI1.
Este servicio bridge que realiza la RPI2 que se acaba de describir, se explica con más profundidad en el siguiente post de esta serie: Proyecto aTIC (IV) - Bridge MQTT/InfluxDB.

Comentarios

Entradas populares de este blog

Proyecto aTIC (I) - Introducción

Proyecto aTIC (V) - Grafana

Proyecto aTIC (IV) - Bridge MQTT/InfluxDB