MicroPython MQTT Tutorial Basierend auf Raspberry Pi

Das Himbeer-Pi, entwickelt von der Raspberry Pi Foundation in Großbritannien, ist ein ARM-basiertes Mikrocomputer-Motherboard. Es bietet eine USB-Schnittstelle und eine Ethernet-Schnittstelle zum Anschluss von Tastatur, Maus und Netzwerkkabel. Das Motherboard verfügt über die Grundfunktionen eines PCs, während Raspberry Pi Wi-Fi, Bluetooth und viele GPIOs integriert hat und in Lehre, Home Entertainment, IoT usw. weit verbreitet ist.

MicroPython ist eine vollständige Softwareimplementierung der Programmiersprache Python 3, geschrieben in C und optimiert für einen vollständigen Python-Compiler und ein Laufzeitsystem, das auf MCU-Hardware (Mikrocontrollereinheit) läuft und dem Benutzer eine interaktive Eingabeaufforderung (REPL) zur sofortigen Ausführung bietet die unterstützten Befehle. Zusätzlich zu ausgewählten Python-Kernbibliotheken enthält MicroPython Module, die Programmierern Zugriff auf Low-Level-Hardware ermöglichen, und ist eine optimierte Implementierung der Sprache Python 3, die einen kleinen Teil der Python-Standardbibliothek enthält, die für die Ausführung auf Mikrocontrollern und in eingeschränkten Umgebungen optimiert ist .

MQTT ist ein leichtgewichtiges IoT-Messaging-Protokoll, das auf einem Publish/Subscribe-Modell basiert, das mit minimalem Code und minimaler Bandbreite zuverlässiges Messaging an verbundene Geräte in Echtzeit bereitstellt, wodurch es für Geräte mit begrenzten Hardwareressourcen und Netzwerkumgebungen mit begrenzter Bandbreite geeignet ist. Daher ist das MQTT-Protokoll weit verbreitet in IoT, mobilem Internet, intelligenter Hardware, Telematik, Energie, Energie und anderen Branchen.

In diesem Artikel werden wir besprechen, wie man eine einfache schreibt MQTT-Client auf Raspberry Pi mit MicroPython und implementieren die Funktionen zum Verbinden, Abonnieren und Veröffentlichen zwischen dem Client und MQTT-Broker.

Umgebung einrichten

  1. Installieren Sie MicroPython

Dieses Projekt verwendet MicroPython für die Entwicklung, Sie können den folgenden Befehl verwenden, um es zu installieren.

sudo apt-get update
# Install MicroPython
sudo apt-get -y install micropython

Nachdem die Installation abgeschlossen ist, führen Sie sie aus micropython im Terminal und wenn MicroPython xxx (x bedeutet Zahl) zurückgegeben wird, ist die Installation erfolgreich.

MicroPython

  1. Installieren Sie die MQTT-Client-Bibliothek

Um sich einfach mit dem MQTT-Server verbinden zu können, müssen wir die installieren umqtt.simple Bibliothek.

micropython -m upip install umqtt.simple

Verbindung zum MQTT-Broker herstellen

Dieser Artikel verwendet die kostenloser öffentlicher MQTT-Broker bereitgestellt von EMQ, das auf der Grundlage von erstellt wurde MQTT-Cloud-Dienst – EMQX-Cloud. Die Broker-Zugriffsinformationen lauten wie folgt.

  • Makler: broker.emqx.io
  • TCP-Port: 1883
  • Websocket-Port: 8083

Öffnen Sie einen beliebigen Editor, geben Sie den folgenden Code ein und speichern Sie ihn als sub.py-Datei:

# sub.py
import time
from umqtt.simple import MQTTClient

SERVER="broker.emqx.io"
ClientID = f'raspberry-sub-{time.time_ns()}'
user = "emqx"
password = "public"
topic = "raspberry/mqtt"
msg = b'{"msg":"hello"}'

def sub(topic, msg):
    print('received message %s on topic %s' % (msg, topic))

def main(server=SERVER):
    client = MQTTClient(ClientID, server, 1883, user, password)
    client.set_callback(sub)
    client.connect()
    print('Connected to MQTT Broker "%s"' % (server))
    client.subscribe(topic)
    while True:
        if True:
            client.wait_msg()
        else:
            client.check_msg()
            time.sleep(1)

if __name__ == " __main__":
    main()

Veröffentlichen

Öffnen Sie einen beliebigen Editor, geben Sie den folgenden Code ein und speichern Sie ihn als pub.py-Datei:

# pub.py
import time
from umqtt.simple import MQTTClient

server="broker.emqx.io"
ClientID = f'raspberry-pub-{time.time_ns()}'
user = "emqx"
password = "public"
topic = "raspberry/mqtt"
msg = b'{"msg":"hello"}'

def connect():
    print('Connected to MQTT Broker "%s"' % (server))
    client = MQTTClient(ClientID, server, 1883, user, password)
    client.connect()
    return client

def reconnect():
    print('Failed to connect to MQTT broker, Reconnecting...' % (server))
    time.sleep(5)
    client.reconnect()

try:
    client = connect()
except OSError as e:
    reconnect()

while True:
  print('send message %s on topic %s' % (msg, topic))
  client.publish(topic, msg, qos=0)
  time.sleep(1)

In den obigen Codes rufen wir die publish()-Funktion auf, um eine Nachricht an das Thema „raspberry/mqtt“ zu senden. Der Parameter QoS ist ein weiteres MQTT-Feature. Um mehr über QoS zu erfahren, lesen Sie bitte die Einführung in MQTT QoS (Quality of Service). In diesem Beispiel setzen wir es auf 0.

Testen

Wir benutzen das MQTT 5.0-Client-Tool – MQTT X um die folgenden Tests durchzuführen.

  1. Öffnen Sie ein Terminal, führen Sie den MicroPython-Code aus und warten Sie auf Nachrichten.
micropython sub.py

Mikropython sub

  1. Verwenden Sie den MQTT X-Client, um eine Verbindung mit dem MQTT-Server herzustellen und Nachrichten an das Thema zu senden raspberry/mqtt.

MQTT-Client-Tool

  1. Überprüfen Sie die Terminalinformationen des Raspberry Pi und Sie werden sehen, dass die MQTT X-Veröffentlichungsnachrichten erfolgreich empfangen wurden.

Empfangen Sie MQTT-Nachrichten

Testveröffentlichung

  1. Abonnieren Sie die raspberry/mqtt Thema im MQTT X-Client.

  2. Führen Sie den MicroPython-Code im Terminal aus und veröffentlichen Sie die Nachricht.

micropython pub.py

Veröffentlichen Sie MQTT-Nachrichten

  1. Zeigen Sie im MQTT X-Client die vom Raspberry Pi gesendeten Nachrichten an.

MQTT X abonnieren

Dies ist ein einfaches Beispiel für die Programmierung mit MicroPython auf einem Raspberry Pi. Wir haben einen einfachen Testclient mit MicroPython implementiert umqtt.simple, und schloss die Verbindung und das Senden und Empfangen von Nachrichten zwischen dem Client und dem MQTT-Server ab. Der größte Vorteil von MQTT besteht darin, dass es zuverlässige Messaging-Dienste in Echtzeit für verbundene Remote-Geräte mit sehr wenig Code und begrenzter Bandbreite bietet, während der Raspberry Pi ein kleines, wärmearmes, energiesparendes und relativ umfassendes Hardwaremodul ist. Die Kombination der beiden kann Ihnen helfen, innovativere Anwendungen zu entwickeln, sogar in Mikrocontrollern oder eingeschränkten Umgebungen.

Ursprünglich erschienen bei

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *