5. Cloud-Rufsystem mit @MQTT¶
Das Message Queuing Telemetry Transport (MQTT) ist ein einfaches Nachrichtenprotokoll. Es ist zudem das gängigste Protokoll für das Internet der Dinge (IoT).
MQTT-Protokolle legen die Art und Weise fest, wie IoT-Geräte Daten übertragen. Sie sind ereignisgesteuert und verwenden das Pub/Sub-Modell für die Vernetzung. Sender (Publisher) und Empfänger (Subscriber) kommunizieren über Topics. Ein Gerät veröffentlicht eine Nachricht zu einem spezifischen Topic, und alle Geräte, die dieses Topic abonniert haben, erhalten die Nachricht.
In diesem Abschnitt wird ein Service-Klingelsystem mit Pico W, HiveMQ (einem kostenlosen öffentlichen MQTT-Broker-Dienst) und vier Tasten vorgestellt. Die vier Tasten stehen für vier Tische im Restaurant. Über HiveMQ können Sie sehen, an welchem Tisch Gäste Bedienung benötigen, wenn ein Kunde die Taste drückt.
1. Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten:
Ein Komplettset zu kaufen, ist definitiv praktisch. Hier ist der Link:
Bezeichnung |
ELEMENTE IM SET |
LINK |
---|---|---|
Kepler-Kit |
450+ |
Die Einzelteile können auch separat über die untenstehenden Links erworben werden.
SN |
KOMPONENTE |
MENGE |
LINK |
---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
4(10KΩ) |
||
6 |
4 |
||
7 |
1 |
||
8 |
18650 Akku |
1 |
|
9 |
Batteriehalter |
1 |
2. Schaltkreis aufbauen
Warnung
Achten Sie darauf, dass Ihr Li-Po-Ladegerät wie im Schaltplan dargestellt angeschlossen ist. Andernfalls könnte ein Kurzschluss Ihre Batterie und den Schaltkreis beschädigen.
3. HiveMQ besuchen
HiveMQ ist eine MQTT-Broker- und Client-basierte Nachrichtenplattform, die eine schnelle, effiziente und zuverlässige Datenübertragung zu IoT-Geräten ermöglicht.
Öffnen Sie HiveMQ Web Client in Ihrem Browser.
Verbinden Sie den Client mit dem öffentlichen Standard-Proxy.
Klicken Sie auf Neues Topic-Abonnement hinzufügen.
Tragen Sie die Topics ein, die Sie verfolgen möchten, und klicken Sie auf Abonnieren. Wählen Sie persönliche Topics, um Nachrichten von anderen Benutzern zu vermeiden, und achten Sie auf die Groß- und Kleinschreibung.
4. MQTT-Modul installieren
Bevor wir mit dem Projekt starten können, müssen wir das MQTT-Modul für Pico W installieren.
Verbinden Sie sich mit dem Netzwerk, indem Sie
do_connect()
in der Shell ausführen, wie zuvor beschrieben.Bemerkung
Geben Sie die folgenden Befehle in die Shell ein und drücken Sie
Enter
, um sie auszuführen.Falls Sie die Skripte
do_connect.py
undsecrets.py
noch nicht auf Ihrem Pico W haben, beziehen Sie sich bitte auf 1. Zugang zum Netzwerk, um sie zu erstellen.
from do_connect import * do_connect()
Nach einer erfolgreichen Netzwerkverbindung importieren Sie das
mip
-Modul in der Shell und verwendenmip
zur Installation desumqtt.simple
-Moduls, einem vereinfachten MQTT-Client für MicroPython.import mip mip.install('umqtt.simple')
Nach Abschluss der Installation sehen Sie, dass das
umqtt
-Modul im/lib/
-Pfad des Pico W installiert ist.
5. Skript ausführen
Öffnen Sie die Datei
5_mqtt_publish.py
im Verzeichniskepler-kit-main/iot
.Klicken Sie auf die Schaltfläche Aktuelles Skript ausführen oder drücken Sie F5, um es zu starten.
Kehren Sie zu HiveMQ Web Client zurück und sobald Sie eine der Tasten auf dem Steckbrett drücken, werden Sie die Nachrichten im HiveMQ erscheinen sehen.
Falls Sie möchten, dass dieses Skript beim Hochfahren ausgeführt wird, speichern Sie es auf dem Raspberry Pi Pico W als
main.py
.
Wie funktioniert es?
Das Raspberry Pi Pico W muss mit dem Internet verbunden sein, wie in 1. Zugang zum Netzwerk beschrieben. Für dieses Projekt reicht das aus.
from do_connect import *
do_connect()
Initialisieren Sie 4 Tasten-Pins.
sensor1 = Pin(16, Pin.IN)
sensor2 = Pin(17, Pin.IN)
sensor3 = Pin(18, Pin.IN)
sensor4 = Pin(19, Pin.IN)
Erstellen Sie zwei Variablen, um die URL
und die Client-ID
des MQTT-Brokers zu speichern, mit dem wir uns verbinden werden.
Da wir einen öffentlichen Broker verwenden, wird unsere Client-ID
nicht verwendet, selbst wenn eine erforderlich ist.
mqtt_server = 'broker.hivemq.com'
client_id = 'Jimmy'
Verbinden Sie sich mit dem MQTT-Agenten und halten Sie die Verbindung für eine Stunde. Bei einem Fehlschlag wird der Pico W zurückgesetzt.
try:
client = MQTTClient(client_id, mqtt_server, keepalive=3600)
client.connect()
print('Connected to %s MQTT Broker'%(mqtt_server))
except OSError as e:
print('Failed to connect to the MQTT Broker. Reconnecting...')
time.sleep(5)
machine.reset()
Erstellen Sie eine Variable topic
, die das Thema angibt, dem der Abonnent folgen muss. Es sollte dasselbe wie das im Schritt 4 unter 2. HiveMQ besuchen ausgefüllte Thema sein.
Übrigens konvertiert b
hier den String in Bytes, da MQTT ein binärbasiertes Protokoll ist, bei dem die Steuerelemente Binärbytes und keine Textstrings sind.
topic = b'SunFounder MQTT Test'
Setzen Sie Unterbrechungen für jede Taste. Wenn eine Taste gedrückt wird, wird eine Nachricht unter topic
veröffentlicht.
def press1(pin):
message = b'button 1 is pressed'
client.publish(topic, message)
print(message)
sensor1.irq(trigger=machine.Pin.IRQ_RISING, handler=press1)