5.9 KiB
Připojte své IoT zařízení ke cloudu - Virtuální IoT hardware a Raspberry Pi
V této části lekce připojíte své virtuální IoT zařízení nebo Raspberry Pi k IoT Hubu, abyste mohli odesílat telemetrii a přijímat příkazy.
Připojte své zařízení k IoT Hubu
Dalším krokem je připojení vašeho zařízení k IoT Hubu.
Úkol - připojení k IoT Hubu
-
Otevřete složku
soil-moisture-sensor
ve VS Code. Ujistěte se, že virtuální prostředí běží v terminálu, pokud používáte virtuální IoT zařízení. -
Nainstalujte několik dalších balíčků pomocí Pip:
pip3 install azure-iot-device
azure-iot-device
je knihovna pro komunikaci s vaším IoT Hubem. -
Přidejte následující importy na začátek souboru
app.py
, pod stávající importy:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
Tento kód importuje SDK pro komunikaci s vaším IoT Hubem.
-
Odstraňte řádek
import paho.mqtt.client as mqtt
, protože tato knihovna již není potřeba. Odstraňte veškerý kód MQTT včetně názvů témat, veškerý kód, který používámqtt_client
, a funkcihandle_command
. Zachovejte smyčkuwhile True:
, pouze odstraňte řádekmqtt_client.publish
z této smyčky. -
Přidejte následující kód pod importy:
connection_string = "<connection string>"
Nahraďte
<connection string>
připojovacím řetězcem, který jste získali pro zařízení dříve v této lekci.💁 Toto není nejlepší praxe. Připojovací řetězce by nikdy neměly být ukládány do zdrojového kódu, protože mohou být zkontrolovány do systému správy zdrojového kódu a nalezeny kýmkoliv. Děláme to zde kvůli jednoduchosti. Ideálně byste měli použít něco jako proměnné prostředí a nástroj jako
python-dotenv
. Více se o tom dozvíte v nadcházející lekci. -
Pod tento kód přidejte následující, abyste vytvořili objekt klienta zařízení, který může komunikovat s IoT Hubem, a připojte ho:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected')
-
Spusťte tento kód. Uvidíte, že se vaše zařízení připojí.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
Odesílání telemetrie
Nyní, když je vaše zařízení připojeno, můžete odesílat telemetrii do IoT Hubu místo MQTT brokeru.
Úkol - odesílání telemetrie
-
Přidejte následující kód do smyčky
while True
, těsně před příkazsleep
:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)
Tento kód vytvoří IoT Hub
Message
, která obsahuje hodnotu vlhkosti půdy jako JSON řetězec, a odešle ji do IoT Hubu jako zprávu z zařízení do cloudu.
Zpracování příkazů
Vaše zařízení musí zpracovat příkaz ze serverového kódu pro ovládání relé. Tento příkaz je odeslán jako požadavek na přímou metodu.
Úkol - zpracování požadavku na přímou metodu
-
Přidejte následující kód před smyč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 metodu
handle_method_request
, která bude volána, když IoT Hub zavolá přímou metodu. Každá přímá metoda má název, a tento kód očekává metodu nazvanourelay_on
pro zapnutí relé arelay_off
pro vypnutí relé.💁 Toto by také mohlo být implementováno v jedné přímé metodě, která by předávala požadovaný stav relé v payloadu, který může být předán s požadavkem na metodu a dostupný z objektu
request
. -
Přímé metody vyžadují odpověď, která informuje volající kód, že byly zpracovány. Přidejte následující kód na konec funkce
handle_method_request
, abyste vytvořili odpověď na požadavek:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)
Tento kód odešle odpověď na požadavek přímé metody s HTTP status kódem 200 a odešle ji zpět do IoT Hubu.
-
Přidejte následující kód pod definici této funkce:
device_client.on_method_request_received = handle_method_request
Tento kód říká klientovi IoT Hubu, aby volal funkci
handle_method_request
, když je zavolána přímá metoda.
💁 Tento kód najdete ve složce code/pi nebo code/virtual-device.
😀 Váš program senzoru vlhkosti půdy je připojen k vašemu IoT Hubu!
Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. I když se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.