std.net.mqtt
MQTT 3.1.1 (ISO/IEC 20922) ist ein schlankes Publish/Subscribe-Protokoll, das speziell für IoT- und M2M-Kommunikation mit geringer Bandbreite und instabilen Verbindungen entwickelt wurde. Clients verbinden sich mit einem Broker und tauschen Nachrichten über Topics aus. Die Unit unterstützt QoS-Stufen 0 (at most once), 1 (at least once) und 2 (exactly once) sowie alle MQTT-Kontrollpakete.
Einsatzbereiche sind Sensornetze, Smart-Home-Systeme, Telemetrie-Plattformen, industrielle Steuerungen (IIoT) und Edge-Computing-Umgebungen mit vielen leichtgewichtigen Clients.
import std.net.mqtt;
var conn: MQTTConn := MQTTConnect("broker.example.com", 1883, "sensor-01");
MQTTPublish(conn, "sensors/temperature", "23.4", 4, 0);
MQTTDisconnect(conn);
Imports
std.net.socketstd.net.dnsstd.net.types
Konstanten
| Name | Typ | Wert | Sichtbarkeit |
|---|---|---|---|
MQTT_PORT | int64 | 1883 | pub |
MQTTS_PORT | int64 | 8883 | pub |
MQTT_PKT_CONNECT | int64 | 1 | pub |
MQTT_PKT_CONNACK | int64 | 2 | pub |
MQTT_PKT_PUBLISH | int64 | 3 | pub |
MQTT_PKT_PUBACK | int64 | 4 | pub |
MQTT_PKT_PUBREC | int64 | 5 | pub |
MQTT_PKT_PUBREL | int64 | 6 | pub |
MQTT_PKT_PUBCOMP | int64 | 7 | pub |
MQTT_PKT_SUBSCRIBE | int64 | 8 | pub |
MQTT_PKT_SUBACK | int64 | 9 | pub |
MQTT_PKT_UNSUBSCRIBE | int64 | 10 | pub |
MQTT_PKT_UNSUBACK | int64 | 11 | pub |
MQTT_PKT_PINGREQ | int64 | 12 | pub |
MQTT_PKT_PINGRESP | int64 | 13 | pub |
MQTT_PKT_DISCONNECT | int64 | 14 | pub |
MQTT_QOS_AT_MOST_ONCE | int64 | 0 | pub |
MQTT_QOS_AT_LEAST_ONCE | int64 | 1 | pub |
MQTT_QOS_EXACTLY_ONCE | int64 | 2 | pub |
MQTT_RC_ACCEPTED | int64 | 0 | pub |
MQTT_RC_UNACCEPTABLE_PROTOCOL | int64 | 1 | pub |
MQTT_RC_IDENTIFIER_REJECTED | int64 | 2 | pub |
MQTT_RC_SERVER_UNAVAILABLE | int64 | 3 | pub |
MQTT_RC_BAD_USERNAME_PASSWORD | int64 | 4 | pub |
MQTT_RC_NOT_AUTHORIZED | int64 | 5 | pub |
Typen
MQTTConn (struct)
| Feld | Typ |
|---|
MQTTPacket (struct)
| Feld | Typ |
|---|
Funktionen
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
MQTTStrLen(s: int64): int64 | pub | Länge eines C-Strings berechnen |
MQTTWriteRemainingLen(buf: int64, pos: int64, length: int64): int64 | pub | Variable Restlänge in Puffer schreiben |
MQTTReadRemainingLen(buf: int64, pos: int64): int64 | pub | Variable Restlänge aus Puffer lesen |
MQTTWriteString(buf: int64, pos: int64, str: int64, len: int64): int64 | pub | UTF-8-String mit Länge in Puffer schreiben |
MQTTReadString(buf: int64, pos: int64): int64 | pub | UTF-8-String aus Puffer lesen |
MQTTNextPacketId(): int64 | pub | Nächste eindeutige Paket-ID erzeugen |
MQTTBuildConnect(clientId: int64, keepAlive: int64, username: int64, password: int64): int64 | pub | CONNECT-Paket aufbauen |
MQTTPublish(topic: int64, payload: int64, payloadLen: int64, qos: int64, retain: int64): int64 | pub | PUBLISH-Paket aufbauen |
MQTTBuildSubscribe(topic: int64, qos: int64): int64 | pub | SUBSCRIBE-Paket aufbauen |
MQTTBuildUnsubscribe(topic: int64): int64 | pub | UNSUBSCRIBE-Paket aufbauen |
MQTTBuildPingReq(): int64 | pub | PINGREQ-Paket aufbauen |
MQTTBuildDisconnect(): int64 | pub | DISCONNECT-Paket aufbauen |
MQTTSend(conn: TCPConn, pkt: int64, pktLen: int64): int64 | pub | MQTT-Paket über TCP senden |
MQTTRecv(conn: TCPConn): int64 | pub | MQTT-Paket über TCP empfangen |
MQTTParseConnack(buf: int64): int64 | pub | CONNACK-Antwort parsen und prüfen |
MQTTParsePublish(buf: int64): MQTTPacket | pub | PUBLISH-Paket parsen |
MQTTConnect(host: int64, port: int64, clientId: int64): MQTTConn | pub | Verbindung zu Broker aufbauen |
MQTTSubscribe(mqtt: MQTTConn, topic: int64, qos: int64): int64 | pub | Topic beim Broker abonnieren |
MQTTPublishMsg(mqtt: MQTTConn, topic: int64, payload: int64, payloadLen: int64, qos: int64): int64 | pub | Nachricht auf Topic veröffentlichen |
MQTTReceive(mqtt: MQTTConn): MQTTPacket | pub | Nächstes eingehendes Paket empfangen |
MQTTSendPing(mqtt: MQTTConn): int64 | pub | Keep-Alive-Ping an Broker senden |
MQTTDisconnect(mqtt: MQTTConn) | pub | Verbindung zum Broker trennen |
MQTTPacketFree(pkt: MQTTPacket) | pub | Paket-Speicher freigeben |
