5.4 KiB
Ühenda oma IoT-seade pilvega - Virtuaalne IoT-riistvara ja Raspberry Pi
Selles õppetunni osas ühendad oma virtuaalse IoT-seadme või Raspberry Pi oma IoT Hubiga, et saata telemeetriat ja vastu võtta käske.
Ühenda oma seade IoT Hubiga
Järgmine samm on ühendada oma seade IoT Hubiga.
Ülesanne - ühendamine IoT Hubiga
-
Ava
soil-moisture-sensorkaust VS Code'is. Veendu, et virtuaalne keskkond töötab terminalis, kui kasutad virtuaalset IoT-seadet. -
Paigalda mõned täiendavad Pip-paketid:
pip3 install azure-iot-deviceazure-iot-deviceon teek, mis võimaldab suhelda IoT Hubiga. -
Lisa järgmised impordid
app.pyfaili ülaossa, olemasolevate importide alla:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponseSee kood impordib SDK, et suhelda IoT Hubiga.
-
Eemalda rida
import paho.mqtt.client as mqtt, kuna seda teeki pole enam vaja. Eemalda kogu MQTT-kood, sealhulgas teemanimed, kogu kood, mis kasutabmqtt_clientjahandle_command. Jäta alleswhile True:tsükkel, kuid kustuta selle tsükli seest ridamqtt_client.publish. -
Lisa järgmine kood importide alla:
connection_string = "<connection string>"Asenda
<connection string>ühenduse stringiga, mille sa varem selles õppetunnis seadme jaoks hankisid.💁 See ei ole parim praktika. Ühenduse stringe ei tohiks kunagi salvestada lähtekoodi, kuna need võivad sattuda versioonihaldusse ja olla kättesaadavad kõigile. Me teeme seda siin lihtsuse huvides. Ideaalis peaksid kasutama midagi sellist nagu keskkonnamuutuja ja tööriista nagu
python-dotenv. Sa õpid sellest rohkem tulevases õppetunnis. -
Lisa selle koodi alla järgmine, et luua seadme kliendi objekt, mis saab IoT Hubiga suhelda, ja ühenda see:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected') -
Käivita see kood. Näed, kuidas su seade ühendub.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
Telemeetria saatmine
Nüüd, kui su seade on ühendatud, saad saata telemeetriat IoT Hubi asemel MQTT-brokerile.
Ülesanne - telemeetria saatmine
-
Lisa järgmine kood
while Truetsükli sisse, vahetult ennesleep-i:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)See kood loob IoT Hubi
Messageobjekti, mis sisaldab mulla niiskuse näitu JSON-stringina, ja saadab selle IoT Hubi seadme-pilve sõnumina.
Käskude käsitlemine
Su seade peab käsitlema serveri koodi käsku, et juhtida releed. See saadetakse otsese meetodi päringuna.
Ülesanne - otsese meetodi päringu käsitlemine
-
Lisa järgmine kood enne
while Truetsüklit: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()See määratleb meetodi
handle_method_request, mida kutsutakse, kui IoT Hub kutsub otsest meetodit. Igal otsesel meetodil on nimi, ja see kood ootab meetodit nimegarelay_on, et relee sisse lülitada, jarelay_off, et relee välja lülitada.💁 Seda võiks rakendada ka ühe otsese meetodi päringuna, edastades soovitud relee oleku koormuses, mida saab päringuga kaasa anda ja mis on saadaval
requestobjektist. -
Otsesed meetodid vajavad vastust, et teavitada kutsuvat koodi, et need on käsitletud. Lisa järgmine kood
handle_method_requestfunktsiooni lõppu, et luua päringule vastus:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)See kood saadab otsese meetodi päringule vastuse HTTP staatusekoodiga 200 ja edastab selle tagasi IoT Hubile.
-
Lisa järgmine kood selle funktsiooni definitsiooni alla:
device_client.on_method_request_received = handle_method_requestSee kood ütleb IoT Hubi kliendile, et kutsuda
handle_method_requestfunktsiooni, kui otsest meetodit kutsutakse.
💁 Selle koodi leiad code/pi või code/virtual-device kaustast.
😀 Su mulla niiskuse sensori programm on ühendatud IoT Hubiga!
Lahtiütlus:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.