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

8.2 KiB

Повежите ваш IoT уређај са облаком - Виртуелни IoT хардвер и Raspberry Pi

У овом делу лекције, повезаћете ваш виртуелни IoT уређај или Raspberry Pi са вашим IoT Hub-ом, како бисте слали телеметрију и примали команде.

Повежите ваш уређај са IoT Hub-ом

Следећи корак је да повежете ваш уређај са IoT Hub-ом.

Задатак - повезивање са IoT Hub-ом

  1. Отворите фасциклу soil-moisture-sensor у VS Code-у. Уверите се да је виртуелно окружење покренуто у терминалу ако користите виртуелни IoT уређај.

  2. Инсталирајте додатне Pip пакете:

    pip3 install azure-iot-device
    

    azure-iot-device је библиотека за комуникацију са вашим IoT Hub-ом.

  3. Додајте следеће увозе на врх датотеке app.py, испод постојећих увоза:

    from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
    

    Овај код увози SDK за комуникацију са вашим IoT Hub-ом.

  4. Уклоните линију import paho.mqtt.client as mqtt, јер ова библиотека више није потребна. Уклоните сав MQTT код, укључујући називе тема, сав код који користи mqtt_client и handle_command. Задржите while True: петљу, само избришите линију mqtt_client.publish из ове петље.

  5. Додајте следећи код испод увозних изјава:

    connection_string = "<connection string>"
    

    Замените <connection string> са низом за повезивање који сте преузели за уређај раније у овој лекцији.

    💁 Ово није најбоља пракса. Низови за повезивање никада не би требало да се чувају у изворном коду, јер могу бити проверени у систем за контролу верзија и пронађени од стране било кога. Овде то радимо ради једноставности. Идеално би било да користите нешто попут променљиве окружења и алат као што је python-dotenv. О овоме ћете више научити у наредној лекцији.

  6. Испод овог кода, додајте следеће како бисте креирали објекат клијента уређаја који може комуницирати са IoT Hub-ом и повезати га:

    device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
    
    print('Connecting')
    device_client.connect()
    print('Connected')
    
  7. Покрените овај код. Видећете да се ваш уређај повезао.

    pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py 
    Connecting
    Connected
    Soil moisture: 379
    

Слање телеметрије

Сада када је ваш уређај повезан, можете слати телеметрију IoT Hub-у уместо MQTT брокеру.

Задатак - слање телеметрије

  1. Додајте следећи код унутар while True петље, непосредно пре паузе:

    message = Message(json.dumps({ 'soil_moisture': soil_moisture }))
    device_client.send_message(message)
    

    Овај код креира IoT Hub Message који садржи очитавање влажности земљишта као JSON стринг, а затим га шаље IoT Hub-у као поруку од уређаја ка облаку.

Обрада команди

Ваш уређај треба да обради команду са серверског кода за контролу релеја. Ово се шаље као захтев за директни метод.

Задатак - обрада захтева за директни метод

  1. Додајте следећи код пре 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()    
    

    Ово дефинише метод, handle_method_request, који ће бити позван када IoT Hub позове директни метод. Сваки директни метод има назив, а овај код очекује метод назван relay_on за укључивање релеја и relay_off за искључивање релеја.

    💁 Ово би такође могло бити имплементирано у једном захтеву за директни метод, прослеђујући жељено стање релеја у payload-у који може бити прослеђен са захтевом за метод и доступан из објекта request.

  2. Директни методи захтевају одговор како би обавестили позивајући код да су обрађени. Додајте следећи код на крај функције handle_method_request како бисте креирали одговор на захтев:

    method_response = MethodResponse.create_from_method_request(request, 200)
    device_client.send_method_response(method_response)
    

    Овај код шаље одговор на захтев за директни метод са HTTP статус кодом 200 и враћа га IoT Hub-у.

  3. Додајте следећи код испод дефиниције ове функције:

    device_client.on_method_request_received = handle_method_request
    

    Овај код говори IoT Hub клијенту да позове функцију handle_method_request када се позове директни метод.

💁 Овај код можете пронаћи у фасцикли code/pi или code/virtual-device.

😀 Ваш програм за сензор влажности земљишта је повезан са вашим IoT Hub-ом!


Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.