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
-
Nyissa meg a
soil-moisture-sensormappá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. -
Telepítsen néhány további Pip csomagot:
pip3 install azure-iot-deviceAz
azure-iot-deviceegy könyvtár, amely lehetővé teszi az IoT Hubbal való kommunikációt. -
Adja hozzá a következő importokat az
app.pyfájl tetejére, a meglévő importok alá:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponseEz a kód importálja az SDK-t az IoT Hubbal való kommunikációhoz.
-
Távolítsa el az
import paho.mqtt.client as mqttsort, 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 amqtt_client-et használja, és ahandle_command-ot. Tartsa meg awhile True:ciklust, csak törölje amqtt_client.publishsort ebből a ciklusból. -
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. -
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') -
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
-
Adja hozzá a következő kódot a
while Trueciklusba, 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
-
Adja hozzá a következő kódot a
while Trueciklus 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 egyrelay_onnevű metódust vár, amely bekapcsolja a relét, valamint egyrelay_offnevű 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
requestobjektumból. -
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_requestfü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.
-
Adja hozzá a következő kódot a függvény definíciója alá:
device_client.on_method_request_received = handle_method_requestEz a kód azt mondja az IoT Hub kliensnek, hogy hívja meg a
handle_method_requestfü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.