MQTT mit Amazon AWS

Hallo,

ich nutze das Nightly 0.8.0-2849 auf einem Raspi 3 unter Raspbian Stretch.

Gibt es zu diesem Thema schon etwas Neues ? Ich versuche auch, Homegear über MQTT zur Zusammenarbeit mit AWS IoT zu bewegen und stehe vor der gleichen Fragestellung.

Hier der relevante Teil der mqtt.conf:

# mqtt.conf
#
# MQTT settings.
#

# Set this to "true" to enable MQTT.
# Default: false
#enabled = true

# Hostname or IP address of your MQTT message broker.
brokerHostname = Adresse des Amazon IoT Endpoints

# Port of your MQTT message broker.
brokerPort = 8883

# Name of this client.
clientName = Homegear

# The prefix to use. Every topic starts with this prefix.
# Default: homegear
prefix = homegear

# Unique ID of this Homegear instance. Change this, have you have multiple
# Homegear installations.
# This is not used for IBM Bluemix Watson IOT platform
homegearId = raspi

# Tells the MQTT server to retain received MQTT messages. New clients will then
# receive the last value of a topic on connection.
# Variables of type "Action" are not retained.
retain = true

# When authentication by username and password is enabled, uncomment the following two lines and fill in your username
# and password.
#username = myUser
#password = myPassword

# The number of parallel processing threads.
processingThreadCount = 5

### Topic payload encodings ###

# Enable topic: homegear/HOMEGEAR_ID/plain/PEERID/CHANNEL/VARIABLE_NAME
# Contains the value as is. E. g.: 43.7.
plainTopic = false

# Enable topic: homegear/HOMEGEAR_ID/json/PEERID/CHANNEL/VARIABLE_NAME
# Puts the value in a JSON array to be JSON-compliant: [43.7].
jsonTopic = false

# Enable topic: homegear/HOMEGEAR_ID/jsonobj/PEERID/CHANNEL/VARIABLE_NAME
# Puts the value into a JSON object. The key is value: { "value": 43.7 }.
jsonobjTopic = true



### TLS options ###

# Set to "true" to enable SSL encryption for MQTT.
enableSSL = true

# The path to the certificate authority's certificate
caFile = SFSRootCAG2.pem

# verifyCertificate checks if the server certificate received by the
# MQTT broker is signed by one of the root CAs in /etc/ssl/certs. If you use
# a self signed certificate, please put your root certificate in that
# directory. Only disable the verification for testing purposes. Without
# verification any attacker can pose as your MQTT broker.
# Default: verifyCertificate = true
#verifyCertificate = false

# The path to the PEM encoded client certificate.
certPath = Pfad zum Zertifikat

# The path to the PEM encoded client keyfile.
keyPath = Pfad zum Keyfile

Das CA Root-Zertifikat habe ich von AWS heruntergeladen und lokal auf dem Raspi gespeichert.
Eine Verbindung zum MQTT Broker wird auch erfolgreich hergestellt aber im Logfile sehe ich dann nur folgende Einträge:

01/14/20 19:39:50.860 MQTT Client: MQTT Client Warning: No PUBACK received.
01/14/20 19:39:55.899 MQTT Client: Warning: Connection to MQTT server closed.
01/14/20 19:40:00.861 MQTT Client: Error: No response received to packet: 3332001E686F6D65676561722F72617370692D68672F6A736F6E6F626A2F32342F3500B37B224C45445F535441545553223A327D

In AWS IoT habe ich testweise das Thema homegear/# abonniert, allerdings ich sehe keine MQTT Messages die empfangen werden.

Hat hierzu jemand eine Idee ? Vielen Dank.

Viele Grüße

FiveEights

Unabhängig der Zertifikate hast du mqtt nicht eingeschaltet :wink:

Hallo,

danke, aber zum Testen habe ich MQTT natürlich aktiviert - daran liegt es also leider nicht…

MQTT ist jetzt nur deswegen abgeschaltet, weil es ja für mich nicht mit AWS IoT funktioniert und nur das Logfile vollschreibt.

Viele Grüße

FiveEights

Ok, das hätte ich mir denken können. Leider mit dem AWS MQTT Broker keinerlei Erfahrung.

Vielleicht kann @sathya was dazu sagen?

Hallo,

kurzes Follow-up zu diesem Thema: Über den MQTT-Out Node in Node-Blue funktioniert das Senden von Messages an AWS IoT.

In Node-Blue verwende ich die gleiche TLS Konfiguration, die ich auch in der mqtt.conf eingestellt habe, also scheint diese grundsätzlich korrekt zu sein.

Liegt anscheinend wirklich an der bereits diskutierten Problematik mit dem QoS Level.

Viele Grüße

FiveEights

QoS ist im nächsten Nightly einstellbar (0 oder 1). Allerdings sollte der mqtt-out-Knoten ebenfalls QoS 1 nehmen?

1 Like

Hallo,

zunächst mal vielen Dank, dass Du Dich dieses Thema implementiert hast. Ich hatte schon befürchtet, das ist zu speziell, um es auf die Prio-Liste für die Umsetzung zu schaffen.
Ich bin aber überzeugt, dass die Integration mit AWS IoT eine Menge neue Anwendungsmöglichkeiten für Homegear bieten kann.

AWS Iot unterstützt QoS 0 und 1. Welches QoS Level Node-Blue verwendet, kann ich leider nicht sagen.

Habe jetzt auf das Nightly 0.8.0-2901 upgedatet und konnte bis jetzt allerdings keine Möglichkeit finden, das QoS einzustellen. Ich hätte den Parameter z.B. in der mqtt.conf erwartet.

Ist das Feature in dieser Version noch nicht verfügbar oder habe ich etwas übersehen ?

Viele Grüße

FiveEights

Hallo @FiveEights,

Naja, mit QoS 0 sollte es doch funktionieren, oder?

Müsste in 2901 enthalten sein. Der Parameter in der mqtt.conf heißt qos und mögliche Werte sind 0 oder 1. Siehe: https://github.com/Homegear/Homegear/blob/dev/misc/Config%20Directory/mqtt.conf#L30

Viele Grüße

Sathya

1 Like

Hallo Sathya,

ich habe den „qos“ Parameter jetzt in mqtt.conf gefunden.
Der Package-Installer hatte die bisherige mqtt.conf unverändert gelassen und stattdessen eine neue Datei angelegt und ich hatte noch auf die alte Version geschaut.

Nach meinen ersten Tests funktioniert das Senden von MQTT-Messages aus Homegear an AWS IoT ohne Probleme. Ich musste allerdings den Parameter „retain messages“ deaktivieren.

Den umgekehrten Weg, also die Steuerung von Homematic-Geräten über MQTT habe ich bis jetzt noch nicht ausprobiert.

Die Anbindung an AWS IoT ist wirklich genial. Jetzt kann man z.B. ganz leicht Zeitreihen von Homegear-Variablen in eine AWS-Datenbank speichern.
Der Zugriff über AWS IoT Ist auch ganz hilfreich zum Debuggen, wenn man gerade keinen Zugriff über SSH hat und sehen möchte, was die Homematic-Geräte so anstellen.

Natürlich kann man mittlerweile fast jede gewünschte Logik für Homegear auch lokal über Node-Blue umsetzen, aber ich finde diese einfache Anbindung an die „Cloud“ unglaublich faszinierend.

Viele Grüße

FiveEights