2 | RIOT-OS istifadə edərək IoT cihazını necə inkişaf etdirmək və MQTT-SN istifadə edərək Thingsboard-a bağlamaq

Bu dərslikdə ilk hissədə hazırlanmış bulud əsaslı komponentlərin üstünə inşa edəcəyik: ThingsBoard istifadə edərək bir İoT sistemini necə qurmaq olar. Onsuz da oxumamısınızsa, bunu etməyi çox tövsiyə edirəm.

İndi Python istifadə edərək hazırlanmış virtual ekoloji stansiyaları RIOT-OS və MQTT-SN protokollarından istifadə edərək tikilmiş yeniləri ilə əvəz edəcəyik. Stansiyalarınızı işə salmaq və MQTT-dən bulud gəlməsi lazım olan MQTT-SN üzərində dəyərlər yaratmaq üçün RIOT-OS-in yerli emulatorundan istifadə edəcəksiniz. Bundan sonra, RIOT-OS tətbiqinizi real cihazlarda icra etmək üçün IOT-LAB ekosisteminə ilk addımlarınızı atacaqsınız.

Thingsboard, MQTT, RIOT-OS və IoT-LAB istifadə edərək IoT bulud əsaslı sistem

Əvvəla, yeniləməni GitHub depoimdən çıxartmalısınız. Əgər siz hələ bunu etməmisinizsə, əvvəlcədən öyrədilmiş dərslərimi və videomu yoxlamağı məsləhət görürəm.

git pull git submodule yeniləmə --init - recursive

2 yeni vacib qovluq əlavə etdim:

  • vasitəçilər: bu broker və şlüzün bütün konfiqurasiyaları var. Bundan əlavə, mosquitto.rsmb və paho MQTT-SN Şəffaf Şəbəkə mənbəyini birbaşa almaq üçün 2 submodul var.
  • cihaz / iğtişaşlar: IoT cihazı üçün RIOT qaynaq qovluğu və yerli yerləşdirmə şəbəkə interfeyslərini asanlıqla konfiqurasiya etmək üçün kiçik bir set_network.sh ehtiva edir.

RIOT-OS

RIOT, adətən IoT-da tapılan bir sıra cihazları dəstəkləyən real vaxt rejimində işləyən çox yivli bir əməliyyat sistemidir. Aşağıdakı dizayn prinsiplərinə əsaslanır:

  • enerji səmərəliliyi və real vaxt imkanları;
  • kiçik yaddaş izi və modulallıq;
  • vahid API girişi: əsas aparatdan (POSIX) asılı olmayaraq.

Baxışa sahib olmaq üçün rəsmi RIOT arayışlarını yoxlamağı təklif edirəm: Başlanğıc, GitHub depo, sənədlər. İşə başlamaq təlimatını izləyin və RIOT baza qovluğunuzu qeyd edin.

Əşyalar paneli

IoT cihazları artıq Thingsboard MQTT ilə birbaşa əlaqəli deyildir, buna görə də mövzumuzu dəyişdirməliyik. İndi artıq telemetriya dərc edəcəyik:

Mövzu: v1 / şlüz / telemetriya

Bundan əlavə, yükləmə əvvəlkindən fərqlidir:

{"Cihaz A": [{"ts": 1483228800000, "dəyərlər": {"temperatur": 42, "rütubət": 80}}], "Cihaz B": [{"ts": 1483228800000, "dəyərlər" : {"temperatur": 42, "rütubət": 80}}]}

Tam Thingsboard MQTT Gateway API İstinad üçün bu linki yoxlayın.

Buna görə Gateway onay qutusunu seçdiyinizdən əmin olmaq üçün Thingsboard-a yeni bir cihaz əlavə edirik

Thingsboard şlüz konfiqurasiyası

Bunun ardınca Tutorial Gateway'nin ACCESS TOKEN-i kopyalayın və brokerlərə / conf / bridge_gateway_ [prod | dev] .conf sırasına uzaqdan_username; Ayrıca, buludda Thingsboard konfiqurasiya etmisinizsə, həm də İCTİMAİ IP ilə ünvanınızı dəyişdirin.

Thingsboard-da başqa bir şey konfiqurasiya etmək lazım deyil, hər şeyi ilk dərslikdə olduğu kimi tərk edəcəyik.

RIOT Firmware

RIOT proqramım rəsmi nümunə emcute_mqttsn-a əsaslanır. Aşağıdakı kimi Makefile-də bəzi modul əlavə etdim:

Sürücü? = Lps331ap # birbaşa sensorlar istifadə etmək üçün USEMODULE + = $ (Sürücü) USEMODULE + = saul_default #sensors API
iğtişaşlar haqqında xüsusi mərmi əmrləri

Daha çox məlumat üçün GitHub anbarına baxın. Doğma lövhədə tərtib edərkən # həqiqi iotlab-m3 cihazlarında işlədiyiniz zaman #define SENSOR 0 təyin etmək vacibdir. Makefile-də lps331ap modulu əl ilə deaktiv etməyi unutmayın.

Qeyd: Məlumatların davamlı yayımlanmasını təmin etmək üçün cmd_pub_data funksiyasında iğtişaşlı API thread_create istifadə edərək ayrı bir mövzu yaratdım.

MQTT-SN

MQTT-SN, Sensor və aktuator həlləri üçün TCP / IP infrastrukturunun çatmadığı MQTT protokolunu genişləndirmək məqsədi ilə simsiz sensor şəbəkələri (WSN) üçün bir yayım / abunə mesajlaşma protokoludur.

MQTT-SN Memarlıq

Çox əsas bir MQTT-SN şlüz, rsmb, mənim depo daxilimdə submodul olaraq mövcuddur və standart olaraq IoT-LAB-də iotlab-a8 cihazlarında quraşdırılmışdır.

Konfiqurasiyamda həm MQTT-SN broker, həm də MQTT-SN şəffaf şlüz kimi işləyən paho MQTT-SN Şəffaf Şəbəkə yolundan istifadə etmək qərarına gəldim.

Beləliklə, standart Gateway.conf-ı aşağıdakı kimi dəyişdirdim:

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

İndi onu quraşdırın və xüsusi konfiqurasiyamızı kopyalayın (submodulu əldə etdiyinizi güman edərək)

cd broker / MQTTSN-Gateway ./custom_install.sh mv qapısı.conf qapısı.conf.bkp cp ../conf/MQTTSN-Gateway.conf şlüzi.conf

Bu konfiqurasiya genişlənə bilər və "əlavə olaraq" kod xətti yazmaq məcburiyyətində deyiləm. Növbəti mərhələdə, paho mqtt-sn qapısını Thingsboard-dakı uzaq MQTT brokerinə bağlayan körpü kimi ağcaqanad işlədə bilərsiniz.

ağcaqanad -c broker / conf / körpü_gateway_prod.conf

Başqa bir terminal açın və paho şəffaf bir şlüz işlədin:

cd brokerləri / MQTTSN-Gateway ./MQTT-SNGateway

Bunun ardınca nəhayət RIOT proqramını tərtib edə bilərsiniz (Makefile-də RIOTBASE-nı yoxlayın) və sonra işə salın.

cd cihaz / çevik / sensorlar_mqttsn ./start_network.sh PORT = tap0 bütün müddət təmiz

İndi bu kimi bir ssenari olacaq:

RIOT yerli, MQTTSN trasparent körpü və ağcaqanad

MQTT-SN brokerinə qoşulmaq və məlumatları itələmək üçün RIOT qabığı ilə qarşılıqlı əlaqə qura bilərsiniz.

ifconfig 5 fec0: affe :: 99 con fec0: affe :: 1 1885 set_device "Cihaz Piano" pub v1 / Gateway / telemetriya "{'Cihaz Piano': [{'ts': 1585744760000, 'dəyərlər': {'rütubət ': 42}}]} "1 pub_telemetriya
  • set_device : cihazın adını dinamik olaraq quraşdırmaq üçün yazdığım xüsusi bir əmrdir
  • pub mövcud emcute_mqttsn adlı bir əmrdir
  • pub_telemetriya: təsadüfi məlumatları birbaşa doğrultmaq üçün yazdığım xüsusi bir əmrdir (doğma tətbiqetmələr olduqda)
  • pub_data: davamlı olaraq başqa bir mövzu istifadə edərək məlumatları itələmək üçün xüsusi bir əmrdir. (İndidən istifadə etmə, bu çox iplikli proqramlaşdırma üçün bir çubuqdur)
RIOT bir edamÇox cihazlı tablosunaCihaz tablosu

IoT-LAB

IoT-LAB, kiçik simsiz sensor cihazları və heterojen ünsiyyət obyektlərini sınamaq üçün uyğun olan çox geniş bir infrastruktur təmin edir.

Yerli olaraq necə işlədiyini və IoT-LAB-də həqiqi sensorlar məlumatlarını necə əldə edəcəyini görmək üçün videoya baxın

  1. IoT-Lab-a qeydiyyatdan keçin.
  2. SSH girişi (link) konfiqurasiya edin.
  3. Bu təlimatı izləyin

RIOT-proqram təminatını qurmaq üçün uzaqdan uzaqdan işlədiyiniz maşına daxil olmağınız və sonra işlətməyiniz lazımdır:

ssh @ saclay.iot-lab.info #mv-ni src qovluq mənbəyinizə /opt/riot.source BOARD = iotlab-m3 bütün iotlab-eksperimenti təqdim etmək -n riot_m3 -d 60 -l 1, archi = m3: at86rf231 + site = saclay iotlab-eksperiment get -i -r iotlab-node - yeniləmə .elf -l saclay, m3, nc 20000

İot-laboratoriya haqqında daha dolğun bələdçi üçün məlumat bazamı yoxlayın. Növbəti dərsdə mən iot-laboratoriya şəbəkə konfiqurasiyasının daha ətraflı hissəsinə keçəcəyəm. Buna görə də eyni konfiqurasiyanı həqiqi iotlab cihazlarında təkrarlayacağıq.

Bu, Romanın Sapienza Universitetində Kompüter Elmləri üzrə MSc Mühəndisliyi kursunun İnternet üçün bir layihəsidir.

  • GitHub depo: link
  • LinkedIn: link
  • YouTube: link