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/bg/1-getting-started/lessons/4-connect-internet
co-op-translator[bot] 67710c800c
🌐 Update translations via Co-op Translator (#554)
3 weeks ago
..
README.md 🌐 Update translations via Co-op Translator (#554) 3 weeks ago
assignment.md 🌐 Update translations via Co-op Translator (#554) 3 weeks ago
single-board-computer-commands.md 🌐 Update translations via Co-op Translator (#554) 3 weeks ago
single-board-computer-mqtt.md 🌐 Update translations via Co-op Translator (#554) 3 weeks ago
single-board-computer-telemetry.md 🌐 Update translations via Co-op Translator (#554) 3 weeks ago
wio-terminal-commands.md 🌐 Update translations via Co-op Translator (#554) 3 weeks ago
wio-terminal-mqtt.md 🌐 Update translations via Co-op Translator (#554) 3 weeks ago
wio-terminal-telemetry.md 🌐 Update translations via Co-op Translator (#554) 3 weeks ago

README.md

Свържете устройството си с интернет

Скица на урока

Скица от Nitya Narasimhan. Кликнете върху изображението за по-голяма версия.

Този урок е част от Hello IoT серията на Microsoft Reactor. Урокът е представен в 2 видеа - едночасов урок и едночасова сесия за въпроси и отговори, където се разглеждат по-задълбочено части от урока и се отговаря на въпроси.

Урок 4: Свържете устройството си с интернет

Урок 4: Свържете устройството си с интернет - Сесия за въпроси и отговори

🎥 Кликнете върху изображенията по-горе, за да гледате видеата

Предварителен тест

Предварителен тест

Въведение

I в IoT означава Интернет - облачната свързаност и услуги, които позволяват много от функциите на IoT устройствата, от събиране на измервания от сензорите, свързани с устройството, до изпращане на съобщения за управление на изпълнителните механизми. IoT устройствата обикновено се свързват с един облачен IoT услуга, използвайки стандартен комуникационен протокол, а тази услуга е свързана с останалата част от вашето IoT приложение, от AI услуги за вземане на интелигентни решения въз основа на данните, до уеб приложения за управление или отчетност.

🎓 Данните, събрани от сензори и изпратени в облака, се наричат телеметрия.

IoT устройствата могат да получават съобщения от облака. Често тези съобщения съдържат команди - инструкции за извършване на действие, било то вътрешно (като рестартиране или актуализация на фърмуера), или чрез изпълнителен механизъм (като включване на светлина).

Този урок представя някои от комуникационните протоколи, които IoT устройствата могат да използват за свързване с облака, както и типовете данни, които могат да изпращат или получават. Ще имате и практически опит с тях, добавяйки интернет управление към вашия нощен светлинен индикатор, като преместите логиката за управление на LED към 'сървърен' код, който работи локално.

В този урок ще разгледаме:

Комуникационни протоколи

Съществуват редица популярни комуникационни протоколи, които IoT устройствата използват за комуникация с интернет. Най-популярните са базирани на публикуване/абониране чрез някакъв вид брокер. IoT устройствата се свързват с брокера и публикуват телеметрия и се абонират за команди. Облачните услуги също се свързват с брокера, абонират се за всички телеметрични съобщения и публикуват команди, било то към конкретни устройства или към групи устройства.

IoT устройствата се свързват с брокер, публикуват телеметрия и се абонират за команди. Облачните услуги се свързват с брокера, абонират се за всички телеметрични съобщения и изпращат команди към конкретни устройства.

MQTT е най-популярният комуникационен протокол за IoT устройства и е разгледан в този урок. Други протоколи включват AMQP и HTTP/HTTPS.

Message Queueing Telemetry Transport (MQTT)

MQTT е лек, отворен стандарт за съобщения, който може да изпраща съобщения между устройства. Той е създаден през 1999 г. за мониторинг на нефтопроводи, преди да бъде пуснат като отворен стандарт 15 години по-късно от IBM.

MQTT има един брокер и множество клиенти. Всички клиенти се свързват с брокера, а брокерът маршрутизира съобщенията към съответните клиенти. Съобщенията се маршрутизират чрез именувани теми, вместо да се изпращат директно към индивидуален клиент. Клиент може да публикува в тема, а всички клиенти, които са абонирани за тази тема, ще получат съобщението.

IoT устройство публикува телеметрия в темата /telemetry, а облачната услуга се абонира за тази тема

Направете проучване. Ако имате много IoT устройства, как можете да гарантирате, че вашият MQTT брокер може да обработи всички съобщения?

Свържете вашето IoT устройство с MQTT

Първата стъпка в добавянето на интернет управление към вашия нощен светлинен индикатор е свързването му с MQTT брокер.

Задача

Свържете устройството си с MQTT брокер.

В тази част от урока ще свържете вашия IoT нощен светлинен индикатор с интернет, за да може да бъде управляван дистанционно. По-късно в урока вашето IoT устройство ще изпрати телеметрично съобщение чрез MQTT към публичен MQTT брокер с нивото на светлина, където ще бъде обработено от сървърен код, който ще напишете. Този код ще провери нивото на светлина и ще изпрати командно съобщение обратно към устройството, казвайки му да включи или изключи LED.

Реалният случай на употреба за такава настройка може да бъде събиране на данни от множество светлинни сензори, преди да се вземе решение за включване на светлините в място с много осветителни тела, като стадион. Това може да предотврати включването на светлините, ако само един сензор е покрит от облаци или птица, но другите сензори засичат достатъчно светлина.

Какви други ситуации биха изисквали данни от множество сензори да бъдат оценени преди изпращане на команди?

Вместо да се занимавате със сложността на настройването на MQTT брокер като част от това задание, можете да използвате публичен тестов сървър, който работи с Eclipse Mosquitto, отворен MQTT брокер. Този тестов брокер е публично достъпен на test.mosquitto.org и не изисква създаване на акаунт, което го прави отличен инструмент за тестване на MQTT клиенти и сървъри.

💁 Този тестов брокер е публичен и не е защитен. Всеки може да слуша какво публикувате, така че не трябва да се използва за данни, които трябва да останат поверителни.

Диаграма на заданието, показваща как нивата на светлина се четат и проверяват, а LED се управлява

Следвайте съответната стъпка по-долу, за да свържете устройството си с MQTT брокера:

По-задълбочен поглед върху MQTT

Темите могат да имат йерархия, а клиентите могат да се абонират за различни нива на йерархията, използвайки заместващи символи. Например, можете да изпращате телеметрични съобщения за температура към темата /telemetry/temperature и съобщения за влажност към темата /telemetry/humidity, след което в облачното приложение да се абонирате за темата /telemetry/*, за да получавате както съобщенията за температура, така и тези за влажност.

Съобщенията могат да бъдат изпращани с качество на услугата (QoS), което определя гаранцията за получаване на съобщението.

  • Най-много веднъж - съобщението се изпраща само веднъж и клиентът и брокерът не предприемат допълнителни стъпки за потвърждаване на доставката (изпрати и забрави).
  • Най-малко веднъж - съобщението се изпраща многократно от изпращача, докато не бъде получено потвърждение (потвърдена доставка).
  • Точно веднъж - изпращачът и получателят извършват двустепенно ръкостискане, за да гарантират, че само едно копие на съобщението е получено (гарантирана доставка).

Какви ситуации биха изисквали гарантирана доставка на съобщение вместо изпрати и забрави?

Въпреки че името е Message Queueing (MQTT), протоколът всъщност не поддържа опашки за съобщения. Това означава, че ако клиентът се изключи, след това се свърже отново, той няма да получи съобщения, изпратени по време на изключването, освен тези, които вече е започнал да обработва чрез процеса QoS. Съобщенията могат да имат зададен флаг за задържане. Ако този флаг е зададен, MQTT брокерът ще съхрани последното съобщение, изпратено на тема с този флаг, и ще го изпрати на всички клиенти, които по-късно се абонират за темата. По този начин клиентите винаги ще получават последното съобщение.

MQTT също поддържа функция за поддържане на връзката, която проверява дали връзката е все още активна по време на дълги паузи между съобщенията.

🦟 Mosquitto от Eclipse Foundation предлага безплатен MQTT брокер, който можете да стартирате сами, за да експериментирате с MQTT, както и публичен MQTT брокер, който можете да използвате за тестване на вашия код, хостван на test.mosquitto.org.

MQTT връзките могат да бъдат публични и отворени или криптирани и защитени с потребителски имена и пароли или сертификати.

💁 MQTT комуникира чрез TCP/IP, същия основен мрежов протокол като HTTP, но на различен порт. Можете също да използвате MQTT чрез уебсокети, за да комуникирате с уеб приложения, работещи в браузър, или в ситуации, където защитни стени или други мрежови правила блокират стандартните MQTT връзки.

Телеметрия

Думата телеметрия произлиза от гръцки корени и означава измерване от разстояние. Телеметрията е актът на събиране на данни от сензори и изпращането им в облака.

💁 Един от най-ранните телеметрични устройства е изобретен във Франция през 1874 г. и изпраща в реално време данни за времето и снежните дълбочини от Монблан до Париж. То използва физически проводници, тъй като безжичните технологии не са били налични по това време.

Нека се върнем към примера със смарт термостата от Урок 1.

Термостат, свързан с интернет, използващ множество сензори за стаи

Термостатът има температурни сензори за събиране на телеметрия. Най-вероятно ще има един вграден температурен сензор и може да се свързва с множество външни температурни сензори чрез безжичен протокол като Bluetooth Low Energy (BLE).

Пример за телеметричните данни, които би изпратил, може да бъде:

Име Стойност Описание
thermostat_temperature 18°C Температурата, измерена от вградения температурен сензор на термостата
livingroom_temperature 19°C Температурата, измерена от дистанционен температурен сензор, който е наречен livingroom, за да идентифицира стаята, в която се намира
bedroom_temperature 21°C Температурата, измерена от дистанционен температурен сензор, който е наречен bedroom, за да идентифицира стаята, в която се намира

Облачната услуга може след това да използва тези телеметрични данни, за да вземе решения относно какви команди да изпрати за управление на отоплението.

Изпращане на телеметрия от вашето IoT устройство

Следващата стъпка в добавянето на интернет управление към вашия нощен светлинен индикатор е изпращането на телеметрия за нивото на светлина към MQTT брокера на телеметрична тема.

Задача - изпращане на телеметрия от вашето IoT устройство

Изпратете телеметрия за нивото на светлина към MQTT брокера.

Данните се изпращат кодирани като JSON - съкращение от JavaScript Object Notation, стандарт за кодиране на данни в текст, използвайки ключ/стойност двойки.

Ако не сте срещали JSON преди, можете да научите повече за него в документацията на JSON.org.

Следвайте съответната стъпка по-долу, за да изпратите телеметрия от вашето устройство към MQTT брокера:

Получаване на телеметрия от MQTT брокера

Няма смисъл да изпращате телеметрия, ако няма кой да я слуша. Телеметрията за нивото на светлина се нуждае от нещо, което да я слуша и обработва. Този 'сървърен' код е вид код, който ще разположите в облачна услуга като част от по-голямо IoT приложение, но тук ще го стартирате локално на вашия компютър (или на вашия Pi, ако кодирате директно там). Сървърният код се състои от Python приложение, което слуша телеметрични съобщения чрез MQTT с нива на светлина. По-късно в този урок ще го накарате да отговаря с командно съобщение с инструкции за включване или изключване на LED.

Направете проучване: Какво се случва с MQTT съобщенията, ако няма слушател?

Инсталиране на Python и VS Code

Ако нямате инсталирани Python и VS Code локално, ще трябва да ги инсталирате, за да напишете сървърния код. Ако използвате виртуално IoT устройство или работите на вашия Raspberry Pi, можете да пропуснете тази стъпка, тъй като вече трябва да имате инсталирани и конфигурирани тези инструменти.

Задача - инсталиране на Python и VS Code

Инсталирайте Python и VS Code.

  1. Инсталирайте Python. Вижте страницата за изтегляне на Python за инструкции как да инсталирате последната версия на Python.

  2. Инсталирайте Visual Studio Code (VS Code). Това е редакторът, който ще използвате, за да напишете кода за вашето виртуално устройство на Python. Вижте документацията на VS Code за инструкции как да инсталирате VS Code. 💁 Можете да използвате всяка Python IDE или редактор за тези уроци, ако имате предпочитан инструмент, но уроците ще дават инструкции, базирани на използването на VS Code.

  3. Инсталирайте разширението Pylance за VS Code. Това е разширение за VS Code, което предоставя поддръжка за езика Python. Вижте документацията за разширението Pylance за инструкции как да го инсталирате в VS Code.

Конфигуриране на виртуална среда за Python

Една от мощните функции на Python е възможността за инсталиране на pip пакети - това са пакети с код, написан от други хора и публикуван в интернет. Можете да инсталирате pip пакет на компютъра си с една команда и след това да използвате този пакет в кода си. Ще използвате pip, за да инсталирате пакет за комуникация чрез MQTT.

По подразбиране, когато инсталирате пакет, той е достъпен навсякъде на компютъра ви, което може да доведе до проблеми с версиите на пакетите - например, едно приложение може да зависи от една версия на пакет, която се счупва, когато инсталирате нова версия за друго приложение. За да избегнете този проблем, можете да използвате виртуална среда за Python, която представлява копие на Python в специална папка, и когато инсталирате pip пакети, те се инсталират само в тази папка.

Задача - конфигуриране на виртуална среда за Python

Конфигурирайте виртуална среда за Python и инсталирайте MQTT pip пакетите.

  1. От вашия терминал или команден ред, изпълнете следното на избрано от вас място, за да създадете и навигирате до нова директория:

    mkdir nightlight-server
    cd nightlight-server
    
  2. Сега изпълнете следното, за да създадете виртуална среда в папката .venv:

    python3 -m venv .venv
    

    💁 Трябва изрично да извикате python3, за да създадете виртуалната среда, в случай че имате инсталиран Python 2 в допълнение към Python 3 (най-новата версия). Ако имате инсталиран Python 2, тогава извикването на python ще използва Python 2 вместо Python 3.

  3. Активирайте виртуалната среда:

    • На Windows:

      • Ако използвате Command Prompt или Command Prompt чрез Windows Terminal, изпълнете:

        .venv\Scripts\activate.bat
        
      • Ако използвате PowerShell, изпълнете:

        .\.venv\Scripts\Activate.ps1
        
    • На macOS или Linux, изпълнете:

      source ./.venv/bin/activate
      

    💁 Тези команди трябва да се изпълняват от същото място, където сте изпълнили командата за създаване на виртуалната среда. Никога няма да ви се наложи да навигирате в папката .venv, винаги трябва да изпълнявате командата за активиране и всякакви команди за инсталиране на пакети или изпълнение на код от папката, в която сте били, когато сте създали виртуалната среда.

  4. След като виртуалната среда е активирана, командата python по подразбиране ще изпълнява версията на Python, която е използвана за създаване на виртуалната среда. Изпълнете следното, за да получите версията:

    python --version
    

    Резултатът ще бъде подобен на следното:

    (.venv) ➜  nightlight-server python --version
    Python 3.9.1
    

    💁 Вашата версия на Python може да е различна - стига да е версия 3.6 или по-нова, всичко е наред. Ако не е, изтрийте тази папка, инсталирайте по-нова версия на Python и опитайте отново.

  5. Изпълнете следните команди, за да инсталирате pip пакета за Paho-MQTT, популярна библиотека за MQTT.

    pip install paho-mqtt
    

    Този pip пакет ще бъде инсталиран само във виртуалната среда и няма да бъде достъпен извън нея.

Напишете сървърния код

Сървърният код вече може да бъде написан на Python.

Задача - напишете сървърния код

Напишете сървърния код.

  1. От вашия терминал или команден ред, изпълнете следното във виртуалната среда, за да създадете Python файл, наречен app.py:

    • На Windows изпълнете:

      type nul > app.py
      
    • На macOS или Linux изпълнете:

      touch app.py
      
  2. Отворете текущата папка в VS Code:

    code .
    
  3. Когато VS Code се стартира, той ще активира виртуалната среда за Python. Това ще бъде показано в долната статусна лента:

    VS Code показва избраната виртуална среда

  4. Ако терминалът на VS Code вече работи, когато VS Code се стартира, той няма да има активирана виртуална среда в него. Най-лесното нещо, което можете да направите, е да затворите терминала, като използвате бутона Kill the active terminal instance:

    VS Code бутон за затваряне на активния терминал

  5. Стартирайте нов терминал в VS Code, като изберете Terminal -> New Terminal, или натиснете CTRL+`. Новият терминал ще зареди виртуалната среда, като извикването за активиране ще се появи в терминала. Името на виртуалната среда (.venv) също ще бъде в подканата:

    ➜  nightlight-server source .venv/bin/activate
    (.venv) ➜  nightlight 
    
  6. Отворете файла app.py от VS Code explorer и добавете следния код:

    import json
    import time
    
    import paho.mqtt.client as mqtt
    
    id = '<ID>'
    
    client_telemetry_topic = id + '/telemetry'
    client_name = id + 'nightlight_server'
    
    mqtt_client = mqtt.Client(client_name)
    mqtt_client.connect('test.mosquitto.org')
    
    mqtt_client.loop_start()
    
    def handle_telemetry(client, userdata, message):
        payload = json.loads(message.payload.decode())
        print("Message received:", payload)
    
    mqtt_client.subscribe(client_telemetry_topic)
    mqtt_client.on_message = handle_telemetry
    
    while True:
        time.sleep(2)
    

    Заменете <ID> на ред 6 с уникалния идентификатор, който сте използвали при създаването на кода за вашето устройство.

    ⚠️ Това трябва да бъде същият идентификатор, който сте използвали на вашето устройство, иначе сървърният код няма да се абонира или публикува към правилната тема.

    Този код създава MQTT клиент с уникално име и се свързва към брокера test.mosquitto.org. След това стартира обработващ цикъл, който работи на фонов поток, слушайки за съобщения на всички абонирани теми.

    Клиентът след това се абонира за съобщения на телеметричната тема и дефинира функция, която се извиква, когато се получи съобщение. Когато се получи телеметрично съобщение, функцията handle_telemetry се извиква, отпечатвайки полученото съобщение в конзолата.

    Накрая, безкраен цикъл поддържа приложението активно. MQTT клиентът слуша съобщения на фонов поток и работи през цялото време, докато основното приложение работи.

  7. От терминала на VS Code изпълнете следното, за да стартирате вашето Python приложение:

    python app.py
    

    Приложението ще започне да слуша съобщения от IoT устройството.

  8. Уверете се, че вашето устройство работи и изпраща телеметрични съобщения. Регулирайте нивата на светлина, засечени от вашето физическо или виртуално устройство. Получените съобщения ще бъдат отпечатани в терминала.

    (.venv) ➜  nightlight-server python app.py
    Message received: {'light': 0}
    Message received: {'light': 400}
    

    Файлът app.py във виртуалната среда на nightlight трябва да работи, за да може файлът app.py във виртуалната среда на nightlight-server да получава изпратените съобщения.

💁 Можете да намерите този код в папката code-server/server.

Колко често трябва да се изпраща телеметрия?

Един важен въпрос при телеметрията е колко често да се измерват и изпращат данните? Отговорът е - зависи. Ако измервате често, можете да реагирате по-бързо на промените в измерванията, но използвате повече енергия, повече честотна лента, генерирате повече данни и се нуждаете от повече облачни ресурси за обработка. Трябва да измервате достатъчно често, но не прекалено често.

За термостат, измерването на всеки няколко минути вероятно е повече от достатъчно, тъй като температурите не се променят толкова често. Ако измервате само веднъж на ден, може да се окажете, че отоплявате дома си за нощни температури в средата на слънчев ден, докато ако измервате всяка секунда, ще имате хиляди ненужно дублирани температурни измервания, които ще изяждат скоростта и честотната лента на интернет на потребителя (проблем за хора с ограничени планове за честотна лента), ще използват повече енергия, което може да е проблем за устройства, захранвани с батерии като отдалечени сензори, и ще увеличат разходите за облачни ресурси за обработка и съхранение.

Ако наблюдавате данни около машина в завод, която при повреда може да причини катастрофални щети и милиони долари загуби, тогава измерването няколко пъти в секунда може да е необходимо. По-добре е да се изразходва честотна лента, отколкото да се пропусне телеметрия, която показва, че машината трябва да бъде спряна и поправена, преди да се счупи.

💁 В такава ситуация може да обмислите използването на edge устройство за предварителна обработка на телеметрията, за да намалите зависимостта от интернет.

Загуба на свързаност

Интернет връзките могат да бъдат ненадеждни, с чести прекъсвания. Какво трябва да направи IoT устройство при такива обстоятелства - трябва ли да загуби данните или да ги съхрани, докато свързаността бъде възстановена? Отново, отговорът е - зависи.

За термостат данните вероятно могат да бъдат загубени веднага щом бъде направено ново температурно измерване. Отоплителната система не се интересува, че преди 20 минути температурата е била 20.5°C, ако сега е 19°C, важно е текущата температура, която определя дали отоплението трябва да бъде включено или изключено.

За машини може да искате да запазите данните, особено ако се използват за търсене на тенденции. Съществуват модели за машинно обучение, които могат да откриват аномалии в потоци от данни, като разглеждат данни от определен период от време (като последния час) и откриват аномални данни. Това често се използва за предиктивна поддръжка, търсейки индикации, че нещо може скоро да се счупи, за да можете да го поправите или замените, преди това да се случи. Може да искате всяка част от телеметрията за машина да бъде изпратена, за да може да бъде обработена за откриване на аномалии, така че веднага щом IoT устройството се свърже отново, то ще изпрати цялата телеметрия, генерирана по време на прекъсването на интернет.

Дизайнерите на IoT устройства също трябва да обмислят дали IoT устройството може да бъде използвано по време на прекъсване на интернет или загуба на сигнал, причинена от местоположение. Умният термостат трябва да може да взема някои ограничени решения за контрол на отоплението, ако не може да изпраща телеметрия към облака поради прекъсване.

Този Ferrari беше блокиран, защото някой се опита да го обнови под земята, където няма клетъчен сигнал

За MQTT, за да се справи със загуба на свързаност, устройството и сървърният код ще трябва да бъдат отговорни за осигуряване на доставката на съобщения, ако е необходимо, например чрез изискване всички изпратени съобщения да бъдат отговорени с допълнителни съобщения на тема за отговор, и ако не, те да бъдат опашени ръчно, за да бъдат преиграни по-късно.

Команди

Командите са съобщения, изпратени от облака към устройство, инструктиращи го да направи нещо. Повечето от времето това включва даване на някакъв вид изход чрез актуатор, но може да бъде инструкция за самото устройство, като например да се рестартира или да събере допълнителна телеметрия и да я върне като отговор на командата.

Интернет свързан термостат, получаващ команда за включване на отоплението

Термостат може да получи команда от облака да включи отоплението. Въз основа на телеметричните данни от всички сензори, ако облачната услуга е решила, че отоплението трябва да бъде включено, тя изпраща съответната команда.

Изпращане на команди към MQTT брокера

Следващата стъпка за нашия интернет контролиран нощен светлинен индикатор е сървърният код да изпрати команда обратно към IoT устройството, за да контролира светлината въз основа на нивата на светлина, които то засича.

  1. Отворете сървърния код в VS Code.

  2. Добавете следния ред след декларацията на client_telemetry_topic, за да дефинирате коя тема да изпраща команди:

    server_command_topic = id + '/commands'
    
  3. Добавете следния код в края на функцията handle_telemetry:

    command = { 'led_on' : payload['light'] < 300 }
    print("Sending message:", command)
    
    client.publish(server_command_topic, json.dumps(command))
    

    Това изпраща JSON съобщение към командната тема със стойността на led_on, зададена на true или false, в зависимост от това дали светлината е по-малка от 300 или не. Ако светлината е по-малка от 300, се изпраща true, за да инструктира устройството да включи LED.

  4. Стартирайте кода както преди.

  5. Регулирайте нивата на светлина, засечени от вашето физическо или виртуално устройство. Получените съобщения и изпратените команди ще бъдат написани в терминала:

    (.venv) ➜  nightlight-server python app.py
    Message received: {'light': 0}
    Sending message: {'led_on': True}
    Message received: {'light': 400}
    Sending message: {'led_on': False}
    

💁 Телеметрията и командите се изпращат на една тема всяка. Това означава, че телеметрията от множество устройства ще се появи на една телеметрична тема, а командите към множество устройства ще се появят на една командна тема. Ако искате да изпратите команда към конкретно устройство, можете да използвате множество теми, именувани с уникален идентификатор на устройството, като /commands/device1, /commands/device2. Така устройството може да слуша съобщения, предназначени само за него.

💁 Можете да намерите този код в папката code-commands/server.

Обработка на команди на IoT устройството

Сега, когато командите се изпращат от сървъра, можете да добавите код към IoT устройството, за да ги обработва и контролира LED.

Следвайте съответната стъпка по-долу, за да слушате команди от MQTT брокера:

След като този код бъде написан и изпълнен, експериментирайте с промяна на нивата на светлина. Наблюдавайте изхода от сървъра и устройството и наблюдавайте LED, докато променяте нивата на светлина.

Загуба на свързаност

Какво трябва да направи облачна услуга, ако трябва да изпрати команда към IoT устройство, което е офлайн? Отново, отговорът е - зависи.

Ако последната команда отменя предишна, тогава предишните вероятно могат да бъдат игнорирани. Ако облачна услуга изпрати команда за включване на отоплението, след това изпрати команда за изключване, тогава командата за включване може да бъде игнорирана и да не бъде изпратена отново.

Ако командите трябва да бъдат обработени в последователност, като например движение на роботизирана ръка нагоре, след това затваряне на захващач, тогава те трябва да бъдат За тези устройства, помислете какви съобщения може да изпращат или получават. Каква телеметрия изпращат? Какви съобщения или команди може да получават? Смятате ли, че са сигурни?

Тест след лекцията

Тест след лекцията

Преглед и самостоятелно обучение

Прочетете повече за MQTT на страницата на Wikipedia за MQTT.

Опитайте да стартирате MQTT брокер сами, използвайки Mosquitto, и се свържете с него от вашето IoT устройство и сървърен код.

💁 Съвет - по подразбиране Mosquitto не позволява анонимни връзки (т.е. свързване без потребителско име и парола) и не позволява връзки извън компютъра, на който работи.
Можете да поправите това с mosquitto.conf конфигурационен файл със следното съдържание:

listener 1883 0.0.0.0
allow_anonymous true

Задача

Сравнете и противопоставете MQTT с други комуникационни протоколи


Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.