5.9 KiB
Prijunkite savo IoT įrenginį prie debesies - Virtuali IoT aparatinė įranga ir Raspberry Pi
Šioje pamokos dalyje prijungsite savo virtualų IoT įrenginį arba Raspberry Pi prie IoT Hub, kad galėtumėte siųsti telemetriją ir gauti komandas.
Prijunkite savo įrenginį prie IoT Hub
Kitas žingsnis – prijungti savo įrenginį prie IoT Hub.
Užduotis - prisijungti prie IoT Hub
-
Atidarykite
soil-moisture-sensor
aplanką VS Code. Įsitikinkite, kad terminale veikia virtuali aplinka, jei naudojate virtualų IoT įrenginį. -
Įdiekite keletą papildomų Pip paketų:
pip3 install azure-iot-device
azure-iot-device
yra biblioteka, skirta bendrauti su jūsų IoT Hub. -
Pridėkite šiuos importus į
app.py
failo viršų, po esamais importais:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
Šis kodas importuoja SDK, skirtą bendrauti su jūsų IoT Hub.
-
Pašalinkite eilutę
import paho.mqtt.client as mqtt
, nes ši biblioteka nebėra reikalinga. Pašalinkite visą MQTT kodą, įskaitant temų pavadinimus, visą kodą, kuris naudojamqtt_client
irhandle_command
. Palikitewhile True:
ciklą, tiesiog ištrinkitemqtt_client.publish
eilutę iš šio ciklo. -
Pridėkite šį kodą po importo pareiškimais:
connection_string = "<connection string>"
Pakeiskite
<connection string>
ryšio eilute, kurią gavote įrenginiui anksčiau šioje pamokoje.💁 Tai nėra geriausia praktika. Ryšio eilutės niekada neturėtų būti saugomos šaltinio kode, nes jos gali būti įtrauktos į versijų kontrolę ir rasti bet kas. Mes tai darome čia dėl paprastumo. Idealiu atveju turėtumėte naudoti kažką panašaus į aplinkos kintamąjį ir įrankį, pvz.,
python-dotenv
. Apie tai sužinosite daugiau artimiausioje pamokoje. -
Po šio kodo pridėkite šį kodą, kad sukurtumėte įrenginio klientą, kuris galėtų bendrauti su IoT Hub, ir prijunkite jį:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected')
-
Paleiskite šį kodą. Pamatysite, kaip jūsų įrenginys prisijungia.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
Siųskite telemetriją
Dabar, kai jūsų įrenginys prijungtas, galite siųsti telemetriją į IoT Hub, o ne į MQTT brokerį.
Užduotis - siųsti telemetriją
-
Pridėkite šį kodą į
while True
ciklą, prieš miegą:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)
Šis kodas sukuria IoT Hub
Message
, kuriame yra dirvožemio drėgmės rodmenys kaip JSON eilutė, ir siunčia tai į IoT Hub kaip pranešimą iš įrenginio į debesį.
Apdorokite komandas
Jūsų įrenginys turi apdoroti komandą iš serverio kodo, kad valdytų relę. Tai siunčiama kaip tiesioginio metodo užklausa.
Užduotis - apdoroti tiesioginio metodo užklausą
-
Pridėkite šį kodą prieš
while True
ciklą: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()
Tai apibrėžia metodą
handle_method_request
, kuris bus iškviečiamas, kai tiesioginis metodas bus iškviestas IoT Hub. Kiekvienas tiesioginis metodas turi pavadinimą, ir šis kodas tikisi metodo, pavadintorelay_on
, kad įjungtų relę, irrelay_off
, kad ją išjungtų.💁 Tai taip pat galėtų būti įgyvendinta viename tiesioginio metodo užklausoje, perduodant norimą relės būseną kaip naudingąją apkrovą, kurią galima perduoti su metodo užklausa ir pasiekti iš
request
objekto. -
Tiesioginiai metodai reikalauja atsakymo, kad praneštų kviečiančiam kodui, jog jie buvo apdoroti. Pridėkite šį kodą
handle_method_request
funkcijos pabaigoje, kad sukurtumėte atsakymą į užklausą:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)
Šis kodas siunčia atsakymą į tiesioginio metodo užklausą su HTTP būsenos kodu 200 ir siunčia tai atgal į IoT Hub.
-
Pridėkite šį kodą po šios funkcijos apibrėžimo:
device_client.on_method_request_received = handle_method_request
Šis kodas nurodo IoT Hub klientui iškviesti
handle_method_request
funkciją, kai iškviečiamas tiesioginis metodas.
💁 Šį kodą galite rasti aplanke code/pi arba code/virtual-device.
😀 Jūsų dirvožemio drėgmės jutiklio programa prijungta prie jūsų IoT Hub!
Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.