Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
In diesem Tutorial konfigurieren Sie einen PC für die Verwendung mit AWS IoT. Diese Anweisungen unterstützen Windows, Linux PCs und Macs. Um dies zu erreichen, müssen Sie einige Software auf Ihrem Computer installieren. Wenn Sie keine Software auf Ihrem Computer installieren möchten, können Sie mit Erstellen Sie ein virtuelles Gerät mit Amazon EC2 versuchen, die gesamte Software auf einer virtuellen Maschine zu installieren.
In diesem Tutorial führen Sie die folgenden Aktivitäten durch:
Einrichten Ihres PCs
Um dieses Tutorial abzuschließen, benötigen Sie einen Windows- oder Linux-PC oder einen Mac mit Internetverbindung.
Bevor Sie mit dem nächsten Schritt fortfahren, stellen Sie sicher, dass Sie ein Befehlszeilenfenster auf Ihrem Computer öffnen können. cmd.exe auf einem Windows-PC verwenden. Verwenden Sie auf einem Linux-PC oder Mac Terminal.
Installieren Sie Git, Python und das AWS IoT Geräte-SDK für Python
In diesem Abschnitt installieren Sie Python und das AWS IoT Device SDK für Python auf Ihrem Computer.
Installieren Sie die neueste Version von Git und Python
In diesem Verfahren wird erklärt, wie Sie die neueste Version von Git und Python auf Ihrem PC installieren.
Um Git und Python herunterzuladen und auf Ihrem Computer zu installieren
-
Überprüfen Sie, ob Git auf Ihrem Computer installiert ist. Geben Sie an der Befehlszeile den folgenden Befehl ein.
git --version
Wird mit dem Befehl die Git-Version angezeigt, ist Git installiert und Sie können mit dem nächsten Schritt fortfahren.
Wenn der Befehl einen Fehler anzeigt, öffnen Sie
https://git-scm.com/download
und installieren Sie Git für Ihren Computer. -
Überprüfen Sie, ob Python bereits installiert ist. Geben Sie in der Kommandozeile den Befehl ein.
python -V
Anmerkung
Wenn dieser Befehl einen Fehler:
Python was not found
ausgibt, liegt das möglicherweise daran, dass Ihr Betriebssystem die ausführbare Python v3.x-Datei alsPython3
aufruft. Ersetzen Sie in diesem Fall alle Instanzen vonpython
durchpython3
und fahren Sie mit dem Rest dieses Tutorials fort.Wenn der Befehl die Python-Version anzeigt, ist Python bereits installiert. Dieses Skript erfordert Python 3.7 oder höher.
-
Wenn Python installiert ist, können Sie die restlichen Schritte in diesem Abschnitt überspringen. Wenn nicht, fahren Sie fort.
-
Öffnen Sie https://www.python.org/downloads/
und laden Sie das Installationsprogramm für Ihren Computer herunter. -
Wenn der Download nicht automatisch mit der Installation gestartet wurde, führen Sie das heruntergeladene Programm aus, um Python zu installieren.
-
Überprüfen Sie die Installation von Python.
python -V
Vergewissern Sie sich, dass der Befehl die Python-Version anzeigt. Wenn die Python-Version nicht angezeigt wird, versuchen Sie erneut, Python herunterzuladen und zu installieren.
Installieren Sie das AWS IoT Geräte-SDK für Python
So installieren Sie das AWS IoT Device SDK für Python auf Ihrem Computer
-
Installieren Sie Version 2 des AWS IoT Geräte-SDK für Python.
python3 -m pip install awsiotsdk
-
Klonen Sie das AWS IoT Device SDK for Python-Repository in das Verzeichnis aws-iot-device-sdk -python-v2 Ihres Home-Verzeichnisses. Dieses Verfahren bezieht sich auf das Basisverzeichnis für die Dateien, unter denen Sie die Installation durchführen.
home
Der tatsächliche Speicherort des
home
Verzeichnisses hängt von Ihrem Betriebssystem ab.In macOS und Linux ist das
home
Verzeichnis~
.cd ~ git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
Anmerkung
Wenn Sie Windows PowerShell anstelle von verwendencmd.exe, verwenden Sie den folgenden Befehl.
echo $home
Weitere Informationen finden Sie im GitHub Repository AWS IoT
Device SDK for Python
Vorbereiten der Ausführung von Beispielanwendungen
Vorbereiten der Ausführung von Beispielanwendungen
-
Erstellen des
certs
Verzeichnisses. Kopieren Sie die Dateien für den privaten Schlüssel, das Gerätezertifikat und das Stammzertifikat der Zertifizierungsstelle, die Sie bei der Erstellung und Registrierung des Objekts gespeichert haben, in AWS IoT Ressourcen erstellen descerts
Verzeichnisses. Die Dateinamen der einzelnen Dateien im Zielverzeichnis sollten mit denen in der Tabelle übereinstimmen.Bei den Befehlen im nächsten Abschnitt wird davon ausgegangen, dass Ihr Schlüssel und Ihre Zertifikatdateien wie in dieser Tabelle gezeigt auf dem Gerät gespeichert sind.
Führen Sie diesen Befehl aus, um das Unterverzeichnis
certs
zu erstellen, das Sie beim Ausführen der Beispielanwendungen verwenden werden.mkdir ~/certs
Kopieren Sie die Dateien in das neue Unterverzeichnis in die Zieldateipfade, die in der folgenden Tabelle aufgeführt sind.
Namen der Zertifikatsdateien Datei
Dateipfad
Privater Schlüssel
~/certs/private.pem.key
Gerätezertifikat
~/certs/device.pem.crt
CA-Stammzertifikat
~/certs/Amazon-root-CA-1.pem
Führen Sie diesen Befehl aus, um die Dateien im Verzeichnis
certs
aufzulisten und sie mit den in der Tabelle aufgeführten Dateien zu vergleichen.ls -l ~/certs
Konfigurieren Sie die Richtlinie und führen Sie die Beispielanwendung aus
In diesem Abschnitt richten Sie Ihre Richtlinie ein und führen das pubsub.py
Beispielskript aus, das sich im aws-iot-device-sdk-python-v2/samples
Verzeichnis von befindet AWS IoT-Geräte-SDK for Python. Dieses Skript zeigt, wie Ihr Gerät die MQTT-Bibliothek verwendet, um MQTT-Nachrichten zu veröffentlichen und zu abonnieren.
Die pubsub.py
Beispiel-App abonniert ein Thema, test/topic
, veröffentlicht 10 Nachrichten zu diesem Thema und zeigt die Nachrichten so an, wie sie vom Message Broker empfangen wurden.
Zur Ausführung der Beispielanwendung pubsub.py
benötigen Sie die folgenden Informationen:
Parameter |
Wo der Wert gefunden werden kann |
---|---|
your-iot-endpoint |
|
Der your-iot-endpoint
Wert hat das Format:
, zum Beispielendpoint_id
-ats.iot.region
.amazonaws.com.rproxy.goskope.coma3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com
.
Bevor Sie das Skript ausführen, stellen Sie sicher, dass die Richtlinie für Ihr Objekt die Berechtigungen für das Beispielskript zum Herstellen einer Verbindung, zum Abonnieren, Veröffentlichen und Empfangen vorsieht.
Um das Richtliniendokument für eine Objektressource zu finden und zu überprüfen
-
Suchen Sie in der AWS IoT -Konsole
in der Liste Objekte nach der Objektressource, die Ihrem Gerät entspricht. -
Wählen Sie den Link Name der Objektressource, die für Ihr Gerät steht, um die Seite mit den Objektdetails zu öffnen.
-
Wählen Sie auf der Seite mit den Objektdetails auf der Registerkarte Zertifikate das Zertifikat aus, das an die Objektressource angehängt ist. Die Liste sollte nur ein Zertifikat enthalten. Wenn es mehrere gibt, wählen Sie das Zertifikat aus, dessen Dateien auf Ihrem Gerät installiert sind und mit dem eine Verbindung zu AWS IoT Core hergestellt werden soll.
Wählen Sie auf der Seite mit den Zertifikatsdetails auf der Registerkarte Richtlinien die Richtlinie aus, die mit dem Zertifikat verknüpft ist. Es sollte nur eine geben. Wenn es mehrere gibt, wiederholen Sie den nächsten Schritt für alle, um sicherzustellen, dass mindestens eine Richtlinie den erforderlichen Zugriff gewährt.
-
Suchen Sie auf der Seite mit der Richtlinienübersicht den JSON-Editor und wählen Sie Richtliniendokument bearbeiten aus, um das Richtliniendokument nach Bedarf zu überprüfen und zu bearbeiten.
-
Das Richtlinien-JSON wird im folgenden Beispiel angezeigt. Ersetzen Sie das
"Resource"
Element
durch Ihr AWS-Region und AWS-Konto in jedem derregion:account
Resource
Werte.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:
region:account
:topic/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account
:topicfilter/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account
:client/test-*" ] } ] }
Um das Beispielskript unter Linux/macOS auszuführen
-
Navigieren Sie in Ihrem Befehlszeilenfenster zu dem
~/aws-iot-device-sdk-python-v2/samples/node/pub_sub
-Verzeichnis, das das SDK mithilfe dieser Befehle erstellt hat.cd ~/aws-iot-device-sdk-python-v2/samples
-
Ersetzen Sie in Ihrem Befehlszeilenfenster
your-iot-endpoint
wie angegeben und führen Sie diesen Befehl aus.python3 pubsub.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key
Das Beispielskript:
-
Stellt eine Verbindung mit dem AWS IoT Core für Ihr Konto her.
-
Abonniert das Nachrichtenthema test/topic und zeigt die Nachrichten an, die es zu diesem Thema erhält.
-
Veröffentlicht 10 Nachrichten zum Thema test/topic.
-
Die Ausgabe sieht ähnlich aus wie:
Connected!
Subscribing to topic 'test/topic'...
Subscribed with QoS.AT_LEAST_ONCE
Sending 10 message(s)
Publishing message to topic 'test/topic': Hello World! [1]
Received message from topic 'test/topic': b'"Hello World! [1]"'
Publishing message to topic 'test/topic': Hello World! [2]
Received message from topic 'test/topic': b'"Hello World! [2]"'
Publishing message to topic 'test/topic': Hello World! [3]
Received message from topic 'test/topic': b'"Hello World! [3]"'
Publishing message to topic 'test/topic': Hello World! [4]
Received message from topic 'test/topic': b'"Hello World! [4]"'
Publishing message to topic 'test/topic': Hello World! [5]
Received message from topic 'test/topic': b'"Hello World! [5]"'
Publishing message to topic 'test/topic': Hello World! [6]
Received message from topic 'test/topic': b'"Hello World! [6]"'
Publishing message to topic 'test/topic': Hello World! [7]
Received message from topic 'test/topic': b'"Hello World! [7]"'
Publishing message to topic 'test/topic': Hello World! [8]
Received message from topic 'test/topic': b'"Hello World! [8]"'
Publishing message to topic 'test/topic': Hello World! [9]
Received message from topic 'test/topic': b'"Hello World! [9]"'
Publishing message to topic 'test/topic': Hello World! [10]
Received message from topic 'test/topic': b'"Hello World! [10]"'
10 message(s) received.
Disconnecting...
Disconnected!
Wenn Probleme bei der Ausführung der Beispiel-App auftreten, überprüfen Sie Beheben Sie Probleme mit der Beispielanwendung.
Sie können den Parameter --verbosity Debug
auch zur Befehlszeile hinzufügen, sodass die Beispiel-App detaillierte Meldungen darüber anzeigt, was sie tut. Diese Informationen können Ihnen bei der Behebung des Problems helfen.
Nachrichten aus der Beispiel-App in der AWS IoT -Konsole anzeigen
Mithilfe des MQTT-Testclients in der AWS IoT -Konsole können Sie die Nachrichten der Beispiel-App sehen, während sie den Message Broker durchlaufen.
Um die von der Beispiel-App veröffentlichten MQTT-Nachrichten anzuzeigen
-
Sehen Sie sich MQTT-Nachrichten mit dem AWS IoT MQTT-Client anzeigen an. Auf diese Weise lernen Sie, wie Sie den MQTT-Testclient in der AWS IoT -Konsole verwenden, um MQTT-Nachrichten anzuzeigen, während sie den Message Broker passieren.
-
Öffnen Sie den MQTT-Testclient in der AWS IoT -Konsole.
-
Abonnieren Sie unter Thema abonnieren das Thema Test/Thema.
-
Führen Sie in Ihrem Befehlszeilenfenster die Beispiel-App erneut aus und sehen Sie sich die Nachrichten im MQTT-Client in der AWS IoT -Konsole an.
cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic test/topic --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint
your-iot-endpoint
Weitere Informationen zu MQTT und zur AWS IoT Core Unterstützung des Protokolls finden Sie unter MQTT.
Führen Sie das Beispiel „Shared Subscription“ in Python aus
AWS IoT Core unterstützt Shared Subscriptions sowohl für MQTT 3 als auch für MQTT 5. Gemeinsame Abonnements ermöglichen es mehreren Clients, ein Abonnement für ein Thema gemeinsam zu nutzen, und nur ein Client erhält Nachrichten, die zu diesem Thema veröffentlicht wurden, nach dem Zufallsprinzip. Um gemeinsame Abonnements zu verwenden, abonnieren Clients den Themenfilter eines gemeinsamen Abonnements: $share/{ShareName}/{TopicFilter}
.
So konfigurieren Sie die Richtlinie und führen das Beispiel für ein geteiltes Abonnement aus
-
Um das Beispiel Gemeinsame Abonnements auszuführen, müssen Sie die Richtlinie Ihres Objekts so einrichten, wie es in MQTT 5 Gemeinsame Abonnements
dokumentiert ist. -
Führen Sie die folgenden Befehle aus, um das Gemeinsame Abonnements-Beispiel auszuführen.
Um das Beispielskript unter Linux/macOS auszuführen
-
Navigieren Sie in Ihrem Befehlszeilenfenster zu dem
~/aws-iot-device-sdk-python-v2/samples
-Verzeichnis, das das SDK mithilfe dieser Befehle erstellt hat.cd ~/aws-iot-device-sdk-python-v2/samples
-
Ersetzen Sie in Ihrem Befehlszeilenfenster
your-iot-endpoint
wie angegeben und führen Sie diesen Befehl aus.python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --group_identifier consumer
Anmerkung
Sie können optional eine Gruppen-ID angeben, die Ihren Anforderungen entspricht, wenn Sie das Beispiel ausführen (z. B.
--group_identifier consumer
). Wenn Sie kein angeben, istpython-sample
der Standardgruppen-Identifier. -
Die Ausgabe in Ihrer Befehlszeile kann wie folgt aussehen:
Publisher]: Lifecycle Connection Success [Publisher]: Connected Subscriber One]: Lifecycle Connection Success [Subscriber One]: Connected Subscriber Two]: Lifecycle Connection Success [Subscriber Two]: Connected [Subscriber One]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber One]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>] [Subscriber Two]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber Two]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>] [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [1]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [2]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [3]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [4]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [5]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [6]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [7]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [8]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [9]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [10]"' [Subscriber One]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber One]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code: [<UnsubackReasonCode.SUCCESS: 0>] [Subscriber Two]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber Two]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code [<UnsubackReasonCode.SUCCESS: 0>] Publisher]: Lifecycle Disconnected [Publisher]: Lifecycle Stopped [Publisher]: Fully stopped Subscriber One]: Lifecycle Disconnected [Subscriber One]: Lifecycle Stopped [Subscriber One]: Fully stopped Subscriber Two]: Lifecycle Disconnected [Subscriber Two]: Lifecycle Stopped [Subscriber Two]: Fully stopped Complete!
-
Öffnen Sie den MQTT-Testclient in der AWS IoT -Konsole. Abonnieren Sie unter Thema abonnieren das Thema des gemeinsamen Abonnements, z. B.:
$share/consumer/test/topic
. Sie können bei der Ausführung des Beispiels eine Gruppen-ID angeben, die Ihren Anforderungen entspricht (z. B.--group_identifier consumer
). Wenn Sie keine Gruppen-ID angeben, ist der Standardwertpython-sample
. Weitere Informationen finden Sie im Python-Beispiel für MQTT 5 Shared Subscriptionund im AWS IoT Core Developer Guide unter Shared Subscriptions. Führen Sie in Ihrem Befehlszeilenfenster die Beispiel-App erneut aus und beobachten Sie die Verteilung der Nachrichten in Ihrem MQTT-Testclient der AWS IoT -Konsole und der Befehlszeile.