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/hu/2-farm/lessons/4-migrate-your-plant-to-the.../single-board-computer-conne...

6.2 KiB

Csatlakoztassa IoT eszközét a felhőhöz - Virtuális IoT hardver és Raspberry Pi

A lecke ezen részében csatlakoztatni fogja virtuális IoT eszközét vagy Raspberry Pi-jét az IoT Hubhoz, hogy telemetriát küldjön és parancsokat fogadjon.

Csatlakoztassa eszközét az IoT Hubhoz

A következő lépés az eszköz csatlakoztatása az IoT Hubhoz.

Feladat - csatlakozás az IoT Hubhoz

  1. Nyissa meg a soil-moisture-sensor mappát a VS Code-ban. Győződjön meg arról, hogy a virtuális környezet fut a terminálban, ha virtuális IoT eszközt használ.

  2. Telepítsen néhány további Pip csomagot:

    pip3 install azure-iot-device
    

    Az azure-iot-device egy könyvtár, amely lehetővé teszi az IoT Hubbal való kommunikációt.

  3. Adja hozzá a következő importokat az app.py fájl tetejére, a meglévő importok alá:

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

    Ez a kód importálja az SDK-t az IoT Hubbal való kommunikációhoz.

  4. Távolítsa el az import paho.mqtt.client as mqtt sort, mivel erre a könyvtárra már nincs szükség. Távolítsa el az összes MQTT kódot, beleértve a témaneveket, az összes kódot, amely a mqtt_client-et használja, és a handle_command-ot. Tartsa meg a while True: ciklust, csak törölje a mqtt_client.publish sort ebből a ciklusból.

  5. Adja hozzá a következő kódot az import utasítások alá:

    connection_string = "<connection string>"
    

    Cserélje ki a <connection string> helyére azt a kapcsolat karakterláncot, amelyet korábban a lecke során az eszközhöz lekért.

    💁 Ez nem a legjobb gyakorlat. A kapcsolat karakterláncokat soha nem szabad a forráskódban tárolni, mivel ezek bekerülhetnek a verziókezelésbe, és bárki megtalálhatja őket. Itt az egyszerűség kedvéért tesszük ezt. Ideális esetben környezeti változót és egy olyan eszközt kellene használni, mint a python-dotenv. Erről többet fog tanulni egy következő leckében.

  6. E kód alá adja hozzá a következőt, hogy létrehozzon egy eszköz kliens objektumot, amely képes kommunikálni az IoT Hubbal, és csatlakoztassa azt:

    device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
    
    print('Connecting')
    device_client.connect()
    print('Connected')
    
  7. Futtassa ezt a kódot. Látni fogja, hogy az eszköz csatlakozik.

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

Telemetria küldése

Most, hogy az eszköz csatlakozott, telemetriát küldhet az IoT Hubnak az MQTT broker helyett.

Feladat - telemetria küldése

  1. Adja hozzá a következő kódot a while True ciklusba, közvetlenül az alvás előtt:

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

    Ez a kód létrehoz egy IoT Hub Message-t, amely a talajnedvesség-értéket JSON karakterláncként tartalmazza, majd ezt eszköz-felhő üzenetként elküldi az IoT Hubnak.

Parancsok kezelése

Az eszköznek kezelnie kell egy parancsot a szerver kódjától, hogy vezérelje a relét. Ez közvetlen metódus kérésként kerül elküldésre.

Feladat - közvetlen metódus kérés kezelése

  1. Adja hozzá a következő kódot a while True ciklus elé:

    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()    
    

    Ez definiál egy metódust, handle_method_request, amelyet akkor hívnak meg, amikor az IoT Hub közvetlen metódust hív meg. Minden közvetlen metódusnak van egy neve, és ez a kód egy relay_on nevű metódust vár, amely bekapcsolja a relét, valamint egy relay_off nevű metódust, amely kikapcsolja azt.

    💁 Ez egyetlen közvetlen metódus kérésben is megvalósítható, amely a relé kívánt állapotát egy payloadban adja át, amelyet a metódus kéréshez lehet csatolni, és amely elérhető a request objektumból.

  2. A közvetlen metódusok válaszra van szükségük, hogy jelezzék a hívó kódnak, hogy kezelték őket. Adja hozzá a következő kódot a handle_method_request függvény végéhez, hogy választ hozzon létre a kérésre:

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

    Ez a kód válaszol a közvetlen metódus kérésre egy 200-as HTTP státuszkóddal, és visszaküldi ezt az IoT Hubnak.

  3. Adja hozzá a következő kódot a függvény definíciója alá:

    device_client.on_method_request_received = handle_method_request
    

    Ez a kód azt mondja az IoT Hub kliensnek, hogy hívja meg a handle_method_request függvényt, amikor egy közvetlen metódust hívnak meg.

💁 Ezt a kódot megtalálja a code/pi vagy code/virtual-device mappában.

😀 A talajnedvesség-érzékelő programja csatlakozott az IoT Hubhoz!


Felelősség kizárása:
Ez a dokumentum az AI fordítási szolgáltatás, a Co-op Translator segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.