This page is also available in the other languages: English Deutsch

MQTT

MQTT ist ein offenes Netzwerkprotokoll für Machine-to-Machine-Kommunikation, das die Übertragung von Telemetriedaten.

Mit dem “mqtt” Package können MQTT-Nachrichten gesendet und empfangen werden. Das Package ist seit hkknx v2.7.0 verfügbar und unterstützt MQTT v3.1.1.

Nachricht senden

Für das Senden von Nachrichten wird ein Publisher verwendet. Wie der Name schon verrät kann ein Publisher Nachrichten senden (“publishen”). Eine MQTT-Nachricht beinhaltet die Nutzdaten (Bytes) und das Topic. Zum versenden einer Nachricht steht die Methode Publish zur Verfügung.

 1var mqtt = import("mqtt")
 2
 3// Neue Konfiguration erstellen und die Addresse
 4// des Brokers angeben.
 5var config = new(mqtt.Config)
 6config.Addr = "broker.emqx.io:1883"
 7// Benutzername und Passwort sind bei 
 8// diesem Broker nicht erforderlich
 9// config.Username = "..."
10// config.Password = "..."
11
12var publisher, err = mqtt.NewPublisher(config)
13if err != nil {
14    println(err)
15    return
16}
17
18var msg = make(mqtt.Message)
19msg.Bytes = "Hallo"
20msg.Topic = "hello/world"
21err = publisher.Publish(msg)
22return err

In diesem Beispiel wird eine Verbindung zu dem Broker broker.emqx.io auf Port 1883 aufgebaut und die Nachricht “Hallo” an das Topic “hello/world” gesendet.

Mit der Methode Publish wird die Nachricht mit der Service-Qualität (QoS) 0 an den Broker gesendet. Für höhere Service-Qualitäten stehen weitere Methoden zur Verfügung. Mehr dazu gibt es auf der Dokumentationsseite nachzulesen.

Nachrichten empfangen

Für das Empfangen von Nachrichten wird ein Subscriber verwendet. Ein Subscriber kann Nachrichten von einem oder mehreren Topics subskribieren. Der Broker leitet dann Nachrichten an den Subscriber weiter.

Im folgenden Beispiel wird wieder eine Verbindung zu dem Broker broker.emqx.io auf Port 1883 aufgebaut. Danach wird das Topic hello/world subskribiert und in der for-Schleife solange gewartet bis eine Nachricht empfangen wird.

 1var mqtt = import("mqtt")
 2
 3// Neue Konfiguration erstellen und die Addresse
 4// des Brokers angeben.
 5var config = new(mqtt.Config)
 6config.Addr = "broker.emqx.io:1883"
 7// Benutzername und Passwort sind bei 
 8// diesem Broker nicht erforderlich
 9// config.Username = "..."
10// config.Password = "..."
11
12subscriber, err = mqtt.NewSubscriber(config)
13if err != nil {
14    println(err)
15    return
16}
17
18err = subscriber.Subscribe("hello/world")
19if err != nil {
20    println(err)
21	return
22}
23
24for {
25	msg = <-subscriber.C()
26	if msg == nil { // nil means that the connection is down
27		return subscriber.Err() // stop execution
28	}
29	
30	printf("%s %s\n", msg.Topic, msg.Bytes)
31}

© Matthias Hochgatterer – MastodonGithubRésumé