5.8 KiB
Pripojte svoje IoT zariadenie do cloudu - Virtuálny IoT hardvér a Raspberry Pi
V tejto časti lekcie pripojíte svoje virtuálne IoT zariadenie alebo Raspberry Pi k IoT Hubu, aby ste mohli odosielať telemetriu a prijímať príkazy.
Pripojenie zariadenia k IoT Hubu
Ďalším krokom je pripojenie vášho zariadenia k IoT Hubu.
Úloha - pripojenie k IoT Hubu
-
Otvorte priečinok
soil-moisture-sensor
vo VS Code. Uistite sa, že virtuálne prostredie beží v termináli, ak používate virtuálne IoT zariadenie. -
Nainštalujte niektoré ďalšie balíky Pip:
pip3 install azure-iot-device
azure-iot-device
je knižnica na komunikáciu s vaším IoT Hubom. -
Pridajte nasledujúce importy na začiatok súboru
app.py
, pod existujúce importy:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
Tento kód importuje SDK na komunikáciu s vaším IoT Hubom.
-
Odstráňte riadok
import paho.mqtt.client as mqtt
, pretože táto knižnica už nie je potrebná. Odstráňte všetok kód MQTT vrátane názvov tém, všetok kód, ktorý používamqtt_client
ahandle_command
. Zachovajte slučkuwhile True:
, len odstráňte riadokmqtt_client.publish
z tejto slučky. -
Pridajte nasledujúci kód pod importy:
connection_string = "<connection string>"
Nahraďte
<connection string>
reťazcom pripojenia, ktorý ste získali pre zariadenie skôr v tejto lekcii.💁 Toto nie je najlepšia prax. Reťazce pripojenia by nikdy nemali byť uložené v zdrojovom kóde, pretože môžu byť zahrnuté do systému na kontrolu zdrojového kódu a nájdené kýmkoľvek. Robíme to tu kvôli jednoduchosti. Ideálne by ste mali použiť niečo ako premenné prostredia a nástroj ako
python-dotenv
. Viac sa o tom dozviete v nadchádzajúcej lekcii. -
Pod tento kód pridajte nasledujúci kód na vytvorenie objektu klienta zariadenia, ktorý môže komunikovať s IoT Hubom, a pripojte ho:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected')
-
Spustite tento kód. Uvidíte, že vaše zariadenie sa pripojí.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
Odosielanie telemetrie
Teraz, keď je vaše zariadenie pripojené, môžete odosielať telemetriu do IoT Hubu namiesto MQTT brokeru.
Úloha - odosielanie telemetrie
-
Pridajte nasledujúci kód do slučky
while True
, tesne pred príkaz sleep:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)
Tento kód vytvorí IoT Hub
Message
, ktorý obsahuje hodnotu vlhkosti pôdy ako JSON reťazec, a odošle ho do IoT Hubu ako správu zo zariadenia do cloudu.
Spracovanie príkazov
Vaše zariadenie musí spracovať príkaz zo serverového kódu na ovládanie relé. Tento príkaz je odoslaný ako požiadavka na priamu metódu.
Úloha - spracovanie požiadavky na priamu metódu
-
Pridajte nasledujúci kód pred slučku
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()
Tento kód definuje metódu
handle_method_request
, ktorá bude volaná, keď IoT Hub zavolá priamu metódu. Každá priama metóda má názov a tento kód očakáva metódu nazvanúrelay_on
na zapnutie relé arelay_off
na vypnutie relé.💁 Toto by mohlo byť implementované aj v jednej požiadavke na priamu metódu, kde by sa požadovaný stav relé odovzdal ako payload, ktorý môže byť odovzdaný s požiadavkou na metódu a dostupný z objektu
request
. -
Priame metódy vyžadujú odpoveď, ktorá informuje volajúci kód, že boli spracované. Pridajte nasledujúci kód na koniec funkcie
handle_method_request
, aby ste vytvorili odpoveď na požiadavku:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)
Tento kód odošle odpoveď na požiadavku na priamu metódu s HTTP status kódom 200 a odošle ju späť do IoT Hubu.
-
Pridajte nasledujúci kód pod definíciu tejto funkcie:
device_client.on_method_request_received = handle_method_request
Tento kód informuje klienta IoT Hubu, aby zavolal funkciu
handle_method_request
, keď je volaná priama metóda.
💁 Tento kód nájdete v priečinku code/pi alebo code/virtual-device.
😀 Program vášho senzora vlhkosti pôdy je pripojený k vášmu IoT Hubu!
Upozornenie:
Tento dokument bol preložený pomocou služby AI prekladu Co-op Translator. Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.