You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/sk/2-farm/lessons/4-migrate-your-plant-to-the.../single-board-computer-conne...

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

  1. 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.

  2. 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.

  3. 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.

  4. 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žíva mqtt_client a handle_command. Zachovajte slučku while True:, len odstráňte riadok mqtt_client.publish z tejto slučky.

  5. 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.

  6. 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')
    
  7. 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

  1. 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

  1. 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é a relay_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.

  2. 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.

  3. 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.