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/lt/2-farm/lessons/4-migrate-your-plant-to-the.../single-board-computer-conne...

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

  1. Atidarykite soil-moisture-sensor aplanką VS Code. Įsitikinkite, kad terminale veikia virtuali aplinka, jei naudojate virtualų IoT įrenginį.

  2. Įdiekite keletą papildomų Pip paketų:

    pip3 install azure-iot-device
    

    azure-iot-device yra biblioteka, skirta bendrauti su jūsų IoT Hub.

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

  4. 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 naudoja mqtt_client ir handle_command. Palikite while True: ciklą, tiesiog ištrinkite mqtt_client.publish eilutę iš šio ciklo.

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

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

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

  1. 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, pavadinto relay_on, kad įjungtų relę, ir relay_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.

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

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