5.7 KiB
Unganisha kifaa chako cha IoT na wingu - Vifaa vya IoT vya Kijumla na Raspberry Pi
Katika sehemu hii ya somo, utaunganisha kifaa chako cha IoT cha kijumla au Raspberry Pi na IoT Hub yako, ili kutuma telemetry na kupokea amri.
Unganisha kifaa chako na IoT Hub
Hatua inayofuata ni kuunganisha kifaa chako na IoT Hub.
Kazi - Unganisha na IoT Hub
-
Fungua folda ya
soil-moisture-sensor
kwenye VS Code. Hakikisha mazingira ya kijumla yanafanya kazi kwenye terminal ikiwa unatumia kifaa cha IoT cha kijumla. -
Sakinisha baadhi ya pakiti za ziada za Pip:
pip3 install azure-iot-device
azure-iot-device
ni maktaba ya kuwasiliana na IoT Hub yako. -
Ongeza uingizaji ufuatao juu ya faili ya
app.py
, chini ya uingizaji uliopo:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
Msimbo huu unaingiza SDK ya kuwasiliana na IoT Hub yako.
-
Ondoa mstari wa
import paho.mqtt.client as mqtt
kwani maktaba hii haitahitajika tena. Ondoa msimbo wote wa MQTT ikiwa ni pamoja na majina ya mada, msimbo wote unaotumiamqtt_client
nahandle_command
. Weka kitanzi chawhile True:
, lakini futa mstari wamqtt_client.publish
kutoka kwenye kitanzi hiki. -
Ongeza msimbo ufuatao chini ya taarifa za uingizaji:
connection_string = "<connection string>"
Badilisha
<connection string>
na kamba ya muunganisho uliyoipata kwa kifaa mapema katika somo hili.💁 Hii si mbinu bora. Kamba za muunganisho hazipaswi kuhifadhiwa kwenye msimbo wa chanzo, kwani zinaweza kuingizwa kwenye udhibiti wa msimbo wa chanzo na kupatikana na yeyote. Tunafanya hivi hapa kwa urahisi. Kwa kawaida unapaswa kutumia kitu kama variable ya mazingira na zana kama
python-dotenv
. Utajifunza zaidi kuhusu hili katika somo lijalo. -
Chini ya msimbo huu, ongeza yafuatayo ili kuunda kitu cha mteja wa kifaa kinachoweza kuwasiliana na IoT Hub, na kuunganisha:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected')
-
Endesha msimbo huu. Utaona kifaa chako kimeunganishwa.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
Tuma telemetry
Sasa kifaa chako kimeunganishwa, unaweza kutuma telemetry kwa IoT Hub badala ya MQTT broker.
Kazi - Tuma telemetry
-
Ongeza msimbo ufuatao ndani ya kitanzi cha
while True
, kabla tu ya kulala:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)
Msimbo huu unaunda
Message
ya IoT Hub inayojumuisha usomaji wa unyevu wa udongo kama kamba ya JSON, kisha inaituma kwa IoT Hub kama ujumbe wa kifaa kwenda wingu.
Shughulikia amri
Kifaa chako kinahitaji kushughulikia amri kutoka kwa msimbo wa seva ili kudhibiti relay. Hii inatumwa kama ombi la mbinu ya moja kwa moja.
Kazi - Shughulikia ombi la mbinu ya moja kwa moja
-
Ongeza msimbo ufuatao kabla ya kitanzi cha
while True
: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()
Hii inafafanua mbinu,
handle_method_request
, ambayo itaitwa wakati mbinu ya moja kwa moja inaitwa na IoT Hub. Kila mbinu ya moja kwa moja ina jina, na msimbo huu unatarajia mbinu inayoitwarelay_on
kuwasha relay, narelay_off
kuzima relay.💁 Hii pia inaweza kutekelezwa katika ombi moja la mbinu ya moja kwa moja, kwa kupitisha hali inayotakiwa ya relay katika mzigo ambao unaweza kupitishwa na ombi la mbinu na kupatikana kutoka kwa kitu cha
request
. -
Mbinu za moja kwa moja zinahitaji majibu ili kuambia msimbo unaoitwa kwamba zimeshughulikiwa. Ongeza msimbo ufuatao mwishoni mwa kazi ya
handle_method_request
ili kuunda jibu kwa ombi:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)
Msimbo huu unatuma jibu kwa ombi la mbinu ya moja kwa moja na msimbo wa hali ya HTTP wa 200, na kuutuma tena kwa IoT Hub.
-
Ongeza msimbo ufuatao chini ya ufafanuzi wa kazi hii:
device_client.on_method_request_received = handle_method_request
Msimbo huu unaiambia mteja wa IoT Hub kuita kazi ya
handle_method_request
wakati mbinu ya moja kwa moja inaitwa.
💁 Unaweza kupata msimbo huu katika folda ya code/pi au code/virtual-device.
😀 Programu yako ya sensor ya unyevu wa udongo imeunganishwa na IoT Hub yako!
Kanusho:
Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI Co-op Translator. Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.