2 | Как да разработим IoT устройство с помощта на RIOT-OS и да го свържете към Thingsboard с помощта на MQTT-SN

В този урок ще изградим отгоре облачните бази компоненти, разработени в първата част: Как да настроите IoT система с помощта на ThingsBoard. Ако все още не сте го чели, горещо ви препоръчвам да го направите.

Сега ще заменим виртуалните екологични станции, разработени с помощта на Python, с нови, изградени с помощта на RIOT-OS и MQTT-SN протокол. Ще използвате естествения емулатор на RIOT-OS, за да стартирате вашите станции и да генерирате стойности над MQTT-SN, които трябва да стигнат до облака чрез MQTT. След това ще направите първите си стъпки в екосистемата IOT-LAB, за да изпълните вашето приложение RIOT-OS на реални устройства.

IoT-облачна система, използваща Thingsboard, MQTT, RIOT-OS и IoT-LAB

На първо място, трябва да изтеглите актуализацията от моето хранилище GitHub. Ако все още не сте го направили, горещо ви препоръчвам да проверите предишния ми урок и видео.

git pull git подмодул актуализация --init --рекурсивен

Добавих 2 нови важни папки:

  • брокери: тя съдържа всички конфигурации на брокера и шлюза. В допълнение, има 2 подмодула за директно извличане на изходния код на mosquitto.rsmb и paho MQTT-SN Transparent Gateway.
  • устройство / riot: съдържа папката с изходен код RIOT за устройството IoT и малък скрипт set_network.sh за лесно конфигуриране на мрежови интерфейси при натискане на внедряване.

RIOT-OS

RIOT е многонишкова операционна система в реално време, която поддържа редица устройства, които обикновено се намират в IoT. Той се основава на следните принципи на проектиране:

  • енергийна ефективност и възможности в реално време;
  • малък отпечатък и модулност на паметта;
  • равномерен достъп до API: независимо от основния хардуер (POSIX).

За да имате общ преглед, предлагам да проверите официалните справки за RIOT: Първи стъпки, хранилище на GitHub, документация. Следвайте ръководството „Първи стъпки“ и вземете под внимание вашата основна папка RIOT.

Thingsboard

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

Тема: v1 / шлюз / телеметрия

Освен това полезният товар е различен от преди:

{"Устройство A": [{"ts": 1483228800000, "стойности": {"температура": 42, "влажност": 80}}], "Устройство Б": [{"ts": 1483228800000, "стойности" : {"температура": 42, "влажност": 80}}]}

Проверете тази връзка за пълната справка за API на MQTT Gateway на Thingsboard.

Следователно ние добавяме ново устройство в Thingsboard, за да сме сигурни, че сте поставили отметката в Gateway

Конфигурация на шлюза на дъските

След това копирайте TOKEN TOKEN на Tutorial Gateway и го поставете в брокери / conf / bridge_gateway_ [prod | dev] .conf на реда remote_username; в допълнение, ако сте конфигурирали Thingsboard в облак, променете също адреса си с вашия ПУБЛИЧЕН IP.

Не е нужно да конфигурираме нищо друго на Thingsboard, ще оставим всичко, както беше в първия урок.

Фърмуер на RIOT

Моят фърмуер на RIOT се основава на официалния пример emcute_mqttsn. Добавих модул в Makefile както следва:

Драйвер? = Lps331ap #да използва директно сензори USEMODULE + = $ (DRIVER) USEMODULE + = saul_default #sensors API
персонализирани командни черупки при бунт

Проверете в хранилището на GitHub за повече подробности. Важно е да зададете #define SENSOR 0, когато компилирате на нативен борд и 1, когато работите на истински устройства с йотлаб-м3. Не забравяйте да деактивирате ръчно модула lps331ap в Makefile.

NB: Създадох отделена нишка с помощта на riot API thread_create във функцията cmd_pub_data с цел непрекъснато публикуване на данни.

MQTT-SN

MQTT-SN е протокол за съобщения за публикуване / абониране за безжични сензорни мрежи (WSN), с цел разширяване на MQTT протокола извън обсега на TCP / IP инфраструктурата за Sensor и Actuator решения.

MQTT-SN Архитектура

Много основен MQTT-SN шлюз е rsmb на разположение като подмодул в моето хранилище и той е инсталиран по подразбиране на устройства iotlab-a8 в IoT-LAB.

В моята конфигурация реших да използвам Paho MQTT-SN Transparent Gateway, който работи както като MQTT-SN брокер, така и като MQTT-SN прозрачен шлюз.

Следователно, промених default gateway.conf както следва:

BrokerName = localhost BrokerPortNo = 1884
GatewayUDP6Bind = fec0: aff: 1/64 GatewayUDP6Port = 1885

Сега, инсталирайте го и копирайте моята персонализирана конфигурация (ако приемем, че сте получили подмодула)

CD брокери / MQTTSN-Gateway ./custom_install.sh mv gateway.conf gateway.conf.bkp cp ../conf/MQTTSN-Gateway.conf gateway.conf

Тази конфигурация е мащабируема и „в допълнение“ не ми се налагаше да пиша ред код. На следващия етап можете да стартирате mosquitto като мост, който свързва paho mqtt-sn шлюза с отдалечения MQTT брокер на Thingsboard.

mosquitto -c брокери / conf / bridge_gateway_prod.conf

Отворете друг терминал и стартирайте прозрачния шлюз на Paho:

CD брокери / MQTTSN-Gateway ./MQTT-SNGateway

След това най-накрая можете да компилирате фърмуера на RIOT (проверете вашия RIOTBASE на Makefile) и след това го стартирайте.

cd устройство / riot / sensors_mqttsn ./start_network.sh PORT = tap0 изчисти целия термин

Сега ще имате подобен сценарий:

RIOT роден, MQTTSN прозрачен мост и комар

Можете да взаимодействате с обвивката на RIOT, за да се свържете с MQTT-SN брокера и да изпратите данни.

ifconfig 5 добавете fec0 :ffe :: 99 con fec0 :ffe :: 1 1885 set_device "Device Piano" pub v1 / шлюз / телеметрия "{'Device Piano': [{'ts': 1585744760000, 'стойности': {'влажност ': 42}}]} "1 pub_telemetry
  • set_device : е персонализирана команда, която написах, за да настроите динамично името на устройството
  • кръчма е достъпна команда по подразбиране emcute_mqttsn
  • pub_telemetry: е персонализирана команда, която написах за директно натискане на произволни данни (в случай на естествени приложения) към
  • pub_data: е персонализирана команда за непрекъснато натискане на данни с помощта на друга нишка. (Не го използвайте засега, това е само мъниче за многопоточно програмиране)
Изпълнение на RIOTТабло за управление на много устройстваТабло за устройство

ИН-LAB

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

Гледайте моето видео, за да видите как да го стартирате локално и как да извлечете данни от реални сензори на IoT-LAB

  1. Регистрирайте се в IoT-Lab.
  2. Конфигурирайте SSH достъп (връзка).
  3. Следвайте този урок

За да изградите RIOT-firmware дистанционно, имате достъп до отдалечената ви машина и след това стартирайте:

SSH @ saclay.iot-lab.info #mv към вашия източник на папка src /opt/riot.source BOARD = iotlab-m3 направи всички iotlab-експеримент подаване -n riot_m3 -d 60 -l 1, archi = m3: at86rf231 + site = saclay iotlab-експеримент get -i -r iotlab-node - актуализация .elf -l салай, м3, не е проверено 20000

Вижте моето хранилище за по-пълно ръководство за йот-лаборатория. В следващия урок ще се спра на по-подробно с конфигурацията на йот-лабораторията. Следователно ние ще възпроизведем същата конфигурация на истински устройства с йотлаб.

Това е проект за курса „Интернет на нещата“ на магистърската специалност „Компютърни науки“ в Римския университет „Сапиенца“.

  • GitHub хранилище: връзка
  • LinkedIn: връзка
  • YouTube: връзка