MQTT Broker

MQTT (Message Queuing Telemetry Transport) ist ein offenes Nachrichtenprotokoll für Machine-to-Machine-Kommunikation (M2M), das die Übertragung von Telemetriedaten in Form von Nachrichten zwischen Geräten ermöglicht, trotz hoher Verzögerungen oder beschränkter Netzwerke. Im Voipio wird es eingesetzt für die Kommunikation zwischen SIP Registrierungen und GPIO Pins bzw LEDs und Buzzern.

Eingesetzt wir m̀osquitto als Server, der im Docker Container läuft und über die docker-compose.yml Datei konfiguriert wird.

version: "3.1"
services:
  mqtt:
    image: reg.cloud.trizwo.it/t2t/voipio-mqtt:armv7-latest
    ports:
      - 1883:1883
    volumes:
      - ${PWD}/data/mqtt:/data:rw
    restart: always

Beim ersten Start wird im /data/ Ordner eine Password Datei erstellt.:

root@9ea59274fb79:/# ls /data/
mosquitto.passwd

In dieser sind drei Accounts mit Standart Passwörtern vorkonfiguriert. Der Account admin mit Passwort admin, server / server und display / display.

Bemerkung

in der Standart Konfiguration wird server von den SIP/GPIO Container verwendet, display vomDisplay, admin von Node-RED bzw. Nutzern.

Es lassen sich neue Benutzer erstellen undd löschen. Dazu wird das Tool mosquitto_passwd benötigt, welches im Container installiert ist. Man kann mit Portainer schnell in die Container, oder via:

docker-compose exec mqtt bash

Im Container kann mosquitto_passwd gestartet werden:

root@9ea59274fb79:/# mosquitto_passwd
mosquitto_passwd is a tool for managing password files for mosquitto.

Usage: mosquitto_passwd [-c | -D] passwordfile username
       mosquitto_passwd -U passwordfile
 -c : create a new password file. This will overwrite existing files.
 -D : delete the username rather than adding/updating its password.
 -U : update a plain text password file to use hashed passwords.

See http://mosquitto.org/ for more information.

Mosquitto erlaubt in der mitgelieferten Konfiguration unverschlüsselten Zugriff und globale Nachrichte versende Rechte von Nutzern. Umfanreiche ACL Regeln können definiert werden. Siehe dazu siehe Projekt Dokumentation.