
この記事では、Intel EdisonでMQTTプロトコルを使用する方法を説明します。 これにより、センサーからデータを受信し、制御をアクチュエーターに転送できます。
MQTTは、デバイス間の通信に使用される軽量プロトコルです(M2M-マシン間)。 パブリッシャー/サブスクライバーモデルを使用して、TCP / IP経由でメッセージを送信します。 MQTTプロトコルの中心部分は、パブリッシャーとサブスクライバーにアクセスできるMQTTサーバーまたはブローカーです。 MQTTを使用して、センサーのネットワークを構築し、各センサーに固有のメッセージの形式でデータを公開できます。 アクチュエータは、応答する必要があるメッセージをサブスクライブします。 MQTTブローカーは、パブリッシャーからサブスクライバーへのメッセージのリダイレクトを処理します。
例
マイクロコントローラーAは、スイッチの値を読み取り、「switch = on」の形式でMQTTブローカーにメッセージでそのステータスを送信します。 インターネット上のどこかで、マイクロコントローラBは「スイッチ」メッセージをサブスクライブします。 ユーザーがスイッチを押すと、マイクロコントローラーAはMQTTブローカーにメッセージを送信します。 ブローカーは、メッセージをサブスクライバーのリストに転送します。 マイクロコントローラーBはメッセージを受信すると、内容を分析し、スイッチの状態を判別してから、ランプをそれぞれオンまたはオフにすることができます。

MQTTプロトコルの詳細については、 mqtt.orgを参照してください 。
Edison Yoctoオペレーティングシステムには、RSMB(Really Small Message Broker)と呼ばれる小さなMQTTブローカーが付属しています。 残念ながら、これらすべてをテストする組み込みMQTTクライアントはありません。 この記事では、別のMQTTブローカーであるMosquittoを構築する方法について説明します。
エジソンのモスキートを構築する
読者はすでにEdisonボードをセットアップし、標準のLinuxオペレーションを所有していると想定されています。
Intel Edison向けのMosquittoの構築は非常に簡単です。
1. mosquitto.orgからmosquittoをダウンロードします
$> wget http://mosquitto.org/files/source/mosquitto-1.3.5.tar.gz
2.アーカイブを解凍します
$> tar xzf mosquitto-1.3.5 $> cd mosquitto-1.3.5
3.ビルド
$> make WITH_SRV=no
4.コンパイルされた蚊の確認とインストール
# Create user mosquitto $> add user mosquitto # Test $> cd test/broker $> make test $> cd ../../ # Install $> cp client/mosquitto_pub /usr/bin $> cp client/mosquitto_sub /usr/bin $> cp lib/libmosquitto.so.1 /usr/lib $> cp src/mosquitto /usr/bin
メインのmosquittoフォルダーにテストがあります。 残念ながら、それらのほとんどはPython3を必要としますが、これはEdison OSでは利用できないため、後のテストのいくつかは失敗します。 ただし、test / brokerフォルダーのテストはPython3を使用せず、すべての基本的なMQTT操作をカバーしています。
mosquittoのクライアントとサーバーのテスト
Edison OSは、rsmbブローカーを自動的に起動するように構成されています。 標準の1883 TCPポートを使用し、最初に標準ポートを使用してmosquittoクライアントをテストします。 後で、mosquittoブローカーを設定して、別のポートで動作するかどうかを確認します。
クライアントをテストするには、Edisonへの2つのssh接続を開きます。 最初の接続で、mosquitto_subクライアントを実行します。これは、Edisonでローカルに動作するrsmbブローカーの「テスト」トピックにサブスクライブします。

2番目のssh接続で、同じローカルサーバーのトピック「test」でメッセージ「Hello World!」を発行します。
mosquitto_subが実行されているウィンドウにメッセージが表示されます。 mosquitto_subクライアントは継続的に動作し、停止するまでサーバーから新しいメッセージを受信し続けることに注意してください。

一番上のテストでは、構築したmosquitto_subおよびmosquitto_pubクライアントがローカルのrsmb MQTTサーバーで正しく動作することが示されています。
これで、たとえば1993など、別のポートでmosquittoブローカーを使用して同様のテストを実行できます。

mosquitto_subおよびmosquitto_pubに-p 1993パラメーターを指定したコマンドを使用して、ポート1993でブローカーをテストします。


さらに、 Mosquittoのドキュメントを参照してください。