You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/de/2-farm/lessons/4-migrate-your-plant-to-the.../single-board-computer-conne...

6.3 KiB

Verbinden Sie Ihr IoT-Gerät mit der Cloud - Virtuelle IoT-Hardware und Raspberry Pi

In diesem Abschnitt der Lektion verbinden Sie Ihr virtuelles IoT-Gerät oder Ihren Raspberry Pi mit Ihrem IoT Hub, um Telemetrie zu senden und Befehle zu empfangen.

Verbinden Sie Ihr Gerät mit dem IoT Hub

Der nächste Schritt besteht darin, Ihr Gerät mit dem IoT Hub zu verbinden.

Aufgabe - Verbindung zum IoT Hub herstellen

  1. Öffnen Sie den Ordner soil-moisture-sensor in VS Code. Stellen Sie sicher, dass die virtuelle Umgebung im Terminal läuft, wenn Sie ein virtuelles IoT-Gerät verwenden.

  2. Installieren Sie einige zusätzliche Pip-Pakete:

    pip3 install azure-iot-device
    

    azure-iot-device ist eine Bibliothek, um mit Ihrem IoT Hub zu kommunizieren.

  3. Fügen Sie die folgenden Importe oben in die Datei app.py ein, unterhalb der bereits vorhandenen Importe:

    from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
    

    Dieser Code importiert das SDK, um mit Ihrem IoT Hub zu kommunizieren.

  4. Entfernen Sie die Zeile import paho.mqtt.client as mqtt, da diese Bibliothek nicht mehr benötigt wird. Entfernen Sie den gesamten MQTT-Code einschließlich der Themennamen, aller Codezeilen, die mqtt_client verwenden, und der Funktion handle_command. Behalten Sie die Schleife while True:, löschen Sie jedoch die Zeile mqtt_client.publish aus dieser Schleife.

  5. Fügen Sie den folgenden Code unterhalb der Import-Anweisungen hinzu:

    connection_string = "<connection string>"
    

    Ersetzen Sie <connection string> durch den Verbindungsstring, den Sie zuvor in dieser Lektion für das Gerät abgerufen haben.

    💁 Dies ist keine Best Practice. Verbindungsstrings sollten niemals im Quellcode gespeichert werden, da sie in die Versionskontrolle eingecheckt und von jedem gefunden werden können. Wir machen dies hier der Einfachheit halber. Idealerweise sollten Sie etwas wie eine Umgebungsvariable und ein Tool wie python-dotenv verwenden. Sie werden mehr darüber in einer kommenden Lektion lernen.

  6. Fügen Sie unterhalb dieses Codes Folgendes hinzu, um ein Geräte-Client-Objekt zu erstellen, das mit dem IoT Hub kommunizieren kann, und verbinden Sie es:

    device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
    
    print('Connecting')
    device_client.connect()
    print('Connected')
    
  7. Führen Sie diesen Code aus. Sie werden sehen, wie Ihr Gerät sich verbindet.

    pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py 
    Connecting
    Connected
    Soil moisture: 379
    

Telemetrie senden

Jetzt, da Ihr Gerät verbunden ist, können Sie Telemetrie an den IoT Hub senden, anstatt an den MQTT-Broker.

Aufgabe - Telemetrie senden

  1. Fügen Sie den folgenden Code in die Schleife while True ein, direkt vor die Schlafanweisung:

    message = Message(json.dumps({ 'soil_moisture': soil_moisture }))
    device_client.send_message(message)
    

    Dieser Code erstellt eine IoT Hub Message, die die Bodenfeuchtigkeitsmessung als JSON-String enthält, und sendet diese als Gerät-zu-Cloud-Nachricht an den IoT Hub.

Befehle verarbeiten

Ihr Gerät muss einen Befehl vom Servercode verarbeiten, um das Relais zu steuern. Dies wird als direkte Methodenanforderung gesendet.

Aufgabe - eine direkte Methodenanforderung verarbeiten

  1. Fügen Sie den folgenden Code vor der Schleife while True hinzu:

    def handle_method_request(request):
        print("Direct method received - ", request.name)
    
        if request.name == "relay_on":
            relay.on()
        elif request.name == "relay_off":
            relay.off()    
    

    Dies definiert eine Methode, handle_method_request, die aufgerufen wird, wenn eine direkte Methode vom IoT Hub aufgerufen wird. Jede direkte Methode hat einen Namen, und dieser Code erwartet eine Methode namens relay_on, um das Relais einzuschalten, und relay_off, um das Relais auszuschalten.

    💁 Dies könnte auch in einer einzigen direkten Methodenanforderung implementiert werden, indem der gewünschte Zustand des Relais in einer Nutzlast übergeben wird, die mit der Methodenanforderung übergeben und aus dem request-Objekt abgerufen werden kann.

  2. Direkte Methoden erfordern eine Antwort, um dem aufrufenden Code mitzuteilen, dass sie verarbeitet wurden. Fügen Sie den folgenden Code am Ende der Funktion handle_method_request hinzu, um eine Antwort auf die Anfrage zu erstellen:

    method_response = MethodResponse.create_from_method_request(request, 200)
    device_client.send_method_response(method_response)
    

    Dieser Code sendet eine Antwort auf die direkte Methodenanforderung mit einem HTTP-Statuscode von 200 und sendet diese zurück an den IoT Hub.

  3. Fügen Sie den folgenden Code unterhalb dieser Funktionsdefinition hinzu:

    device_client.on_method_request_received = handle_method_request
    

    Dieser Code weist den IoT Hub-Client an, die Funktion handle_method_request aufzurufen, wenn eine direkte Methode aufgerufen wird.

💁 Sie finden diesen Code im Ordner code/pi oder code/virtual-device.

😀 Ihr Bodenfeuchtigkeitssensor-Programm ist mit Ihrem IoT Hub verbunden!

Haftungsausschluss:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.