2 | RIOT-OSを使用してIoTデバイスを開発し、MQTT-SNを使用してそれをThingsboardに接続する方法

このチュートリアルでは、最初のパートで開発されたクラウドベースのコンポーネントの上にビルドします。ThingsBoardを使用してIoTシステムをセットアップする方法。 まだ読んでいない場合は、読むことを強くお勧めします。

次に、Pythonを使用して開発された仮想環境ステーションを、RIOT-OSおよびMQTT-SNプロトコルを使用して作成された新しい環境ステーションに置き換えます。 RIOT-OSのネイティブエミュレーターを使用してステーションを実行し、MQTT経由でクラウドに到達する必要があるMQTT-SNを介して値を生成します。 その後、IOT-LABエコシステムの最初のステップとして、実際のデバイスでRIOT-OSアプリケーションを実行します。

Thingsboard、MQTT、RIOT-OS、IoT-LABを使用したIoTクラウドベースのシステム

まず、私のGitHubリポジトリから更新をプルする必要があります。 まだ行っていない場合は、以前のチュートリアルとビデオを確認することを強くお勧めします。

git pull git submodule update --init --recursive

2つの新しい重要なフォルダを追加しました。

  • ブローカー:ブローカーとゲートウェイのすべての構成が含まれます。 さらに、mosquitto.rsmbとpaho MQTT-SN Transparent Gatewayのソースコードを直接フェッチする2つのサブモジュールがあります。
  • device / riot:IoTデバイスのRIOTソースフォルダーと、ネイティブデプロイメントでネットワークインターフェースを簡単に構成するための小さなスクリプトset_network.shが含まれています。

RIOT-OS

RIOTは、通常IoTで見られるさまざまなデバイスをサポートするリアルタイムマルチスレッドオペレーティングシステムです。 次の設計原則に基づいています。

  • エネルギー効率とリアルタイム機能。
  • 小さなメモリフットプリントとモジュール性。
  • 統一されたAPIアクセス:基盤となるハードウェア(POSIX)に依存しません。

概要を知るために、RIOTの公式リファレンス(Getting Started、GitHubリポジトリ、ドキュメント)を確認することをお勧めします。 入門ガイドに従って、RIOTベースフォルダーをメモします。

物事

IoTデバイスはThingsboard MQTTに直接接続されなくなったため、デフォルトのトピックを変更する必要があります。 次に、次のテレメトリを公開します。

トピック:v1 / gateway / telemetry

さらに、ペイロードは以前とは異なります。

{"デバイスA":[{"ts":1483228800000、 "値":{"温度":42、 "湿度":80}}]、 "デバイスB":[{"ts":1483228800000、 "値" :{"温度":42、 "湿度":80}}]}

このリンクで完全なThingsboard MQTTゲートウェイAPIリファレンスを確認してください。

そのため、Thingsboardに新しいデバイスを追加して、必ず[ゲートウェイ]チェックボックスをオンにします

Thingsboardゲートウェイの構成

その後、Tutorial GatewayのACCESS TOKENをコピーして、列remote_usernameのbrokers / conf / bridge_gateway_ [prod | dev] .confに貼り付けます。 さらに、Thingsboardをクラウドで構成している場合は、PUBLIC IPでアドレスも変更します。

Thingsboardで他に何も設定する必要はありません。最初のチュートリアルのようにすべてを残します。

RIOTファームウェア

私のRIOTファームウェアは公式の例emcute_mqttsnに基づいています。 Makefileに次のようにいくつかのモジュールを追加しました。

DRIVER?= lps331ap#センサーを直接使用するにはUSEMODULE + = $(DRIVER)USEMODULE + = saul_default #sensors API
暴動のカスタムシェルコマンド

詳細については、GitHubリポジトリを確認してください。 ネイティブボードでコンパイルする場合は#define SENSOR 0を設定し、実際のiotlab-m3デバイスで実行する場合は1を設定することが重要です。 Makefileのlps331apモジュールを手動で無効にすることを忘れないでください。

注:データを継続的に公開するために、関数cmd_pub_dataのriot API thread_createを使用して、分離したスレッドを作成しました。

MQTT-SN

MQTT-SNは、ワイヤレスセンサーネットワーク(WSN)のパブリッシュ/サブスクライブメッセージングプロトコルであり、MQTTプロトコルをセンサーおよびアクチュエータソリューションのTCP / IPインフラストラクチャの範囲を超えて拡張することを目的としています。

MQTT-SNアーキテクチャ

非常に基本的なMQTT-SNゲートウェイは、私のリポジトリのサブモジュールとして使用可能なrsmbであり、IoT-LABのiotlab-a8デバイスにデフォルトでインストールされます。

私の構成では、MQTT-SNブローカーとMQTT-SN透過ゲートウェイの両方として機能するpaho MQTT-SN透過ゲートウェイを使用することにしました。

したがって、デフォルトのgateway.confを次のように変更しました。

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

次に、それをインストールし、カスタム構成をコピーします(サブモジュールをフェッチしたと想定)

CDブローカー/ MQTTSN-Gateway ./custom_install.sh mv gateway.conf gateway.conf.bkp cp ../conf/MQTTSN-Gateway.conf gateway.conf

この構成はスケーラブルで、「さらに」コード行を記述する必要がありませんでした。 次の段階で、moshotoをブリッジとして実行し、paho mqtt-snゲートウェイをThingsboard上のリモートMQTTブローカーに接続します。

mosquitto -c brokers / conf / bridge_gateway_prod.conf

別のターミナルを開き、paho透過ゲートウェイを実行します。

CDブローカー/ MQTTSN-Gateway ./MQTT-SNGateway

その後、最終的にRIOTファームウェアをコンパイルし(MakefileでRIOTBASEを確認)、それを実行します。

cd device / riot / sensors_mqttsn ./start_network.sh PORT = tap0 make all term clean clean

これで、次のようなシナリオになります。

RIOTネイティブ、MQTTSN透過ブリッジおよび蚊

MQTT-SNブローカーに接続してデータをプッシュするために、RIOTシェルを操作できます。

ifconfig 5 add fec0:affe :: 99 con fec0:affe :: 1 1885 set_device "Device Piano" pub v1 / gateway / telemetry "{'Device Piano':[{'ts':1585744760000、 'values':{'humidity ':42}}]} "1 pub_telemetry
  • set_device :デバイス名を動的に設定するために書いたカスタムコマンドです
  • パブ 使用可能なデフォルトのコマンドです。emcute_mqttsn
  • pub_telemetry:ランダムデータ(ネイティブアプリケーションの場合)を直接プッシュするために私が書いたカスタムコマンドです
  • pub_data:別のスレッドを使用してデータを継続的にプッシュするカスタムコマンドです。 (現時点では使用しないでください。マルチスレッドプログラミングのスタブにすぎません)
RIOTの実行マルチデバイスダッシュボードデバイスダッシュボード

IoT-LAB

IoT-LABは、小型の無線センサーデバイスと異種の通信オブジェクトのテストに適した非常に大規模なインフラストラクチャを提供します。

ビデオを見て、ローカルで実行する方法と、IoT-LABで実際のセンサーデータを取得する方法を確認してください

  1. IoT-Labに登録します。
  2. SSHアクセス(リンク)を構成します。
  3. このチュートリアルに従ってください

リモートでRIOTファームウェアを構築するには、リモートマシンにアクセスして実行します。

ssh @ saclay.iot-lab.info #mvをsrcフォルダーに追加source /opt/riot.source BOARD = iotlab-m3 make all iotlab-experiment submit -n riot_m3 -d 60 -l 1、archi = m3:at86rf231 + site = saclay iotlab-experiment get -i -r iotlab-node --update .elf -l saclay、m3、 nc 20000

iot-labに関するより完全なガイドについては、私のリポジトリをチェックしてください。 次のチュートリアルでは、iot-labネットワーク構成の詳細について説明します。 したがって、実際のiotlabデバイスで同じ構成を複製します。

これは、ローマのサピエンツァ大学のコンピュータサイエンスの修士課程のモノのインターネットコースのプロジェクトです。

  • GitHubリポジトリ:リンク
  • LinkedIn:リンク
  • YouTube:リンク