今日の世界では、接続されたデバイスが至る所に存在するようになり、「Internet of Things(IoT)」という用語は、「インターネットに接続されたウィジェット」という意味で事実上の説明となっています。この美化されたキャメルケースの略語はそれ自体が美しいものですが、「インターネットに接続されたデバイス」には、人々が認識している以上のものがあります。この記事では、IoTデバイスで使用される最も一般的なプロトコルの1つであるMQ Telemetry Transport(MQTT)プロトコルについて、もっと深く掘り下げてみたいと思います。それが何であるか、どのように機能するか、そして他の技術と比ぼして何が新しいのかを簡単に説明します。また、Arduinoデバイスを使用した包括的な例を通して説明します。
典型的なクライアントサーバー設定では、プロバイダー(つまりデバイス自体)がセンサーデータをサーバーに投稿し、消費者がそのセンサーデータをサーバーから表示することを要求します。MQTTも同様です。これは、デバイス間の通信に使用される軽量プロトコルです。デバイスは通常、データをMQTT「ブローカー」(またはサーバー)に「公開」(つまり送信)します。その後、そのデータは他のデバイスやWebアプリケーションに提供されるために保持されます。別のデバイスやWebアプリケーションがそのデータセットをMQTTブローカーから「購読」(つまりデータを要求)し、その後MQTTブローカーがそのデバイスにデータを配信します。これを本当に、2つの主要な例外を持つただの高機能なWebサーバーと考えてください:
上記の2つの理由から、MQTTはIoTデバイスで非常に人気のあるプロトコルになりました。歴史的には、人々はこの形式のデバイス-サーバー通信を実現するためにHTTP POST/GETリクエストを使用していましたが、BluetoothやZigBeeなどの他の通信デバイスの使用を妨げていました。MQTTはその点で中立的であるため、インターネットに接続することなくメッシュベースのネットワーク内でMQTTを使用してメッセージをやり取りすることができるようになりました
MQTTを始める方法は多くありますが、完全なエンドツーエンドのソリューションを設計することを含みます。ここでは、Adafruitが提供する無料のMQTTブローカーサービスを利用することで、開発プロセスのクライアント側にのみ焦点を当てることにします。始めるためには、以下が必要です:
環境を設定するためにまず行うべきいくつかのことがあります。まず、ハードウェアの設定をしましょう。私はArduino UnoとArduino Ethernet Shieldを使用して、ローカルネットワークに接続します。
Ethernet ShieldをArduinoの上に重ねて、次のようにネットワークに接続します:
ハードウェアの設定が完了したら、Arduino IDEを開いて必要なライブラリをインストールしましょう。Arduino IDEを開き、ツール > ライブラリの管理...に移動します。
Adafruit MQTTライブラリを検索して、インストールをクリックします:
ライブラリの依存関係もインストールするように求められます。その場合は、「すべてインストール」をクリックしてください。
サポートライブラリをインストールしたら、File > Examples > Adafruit MQTT Library > mqtt_ethernetに移動して例を開くことができます。
この時点で一時停止し、Adafruit IOアカウントから認証情報を取得する必要があります。Adafruit IOにログインし、上部の「My Key」をクリックします:
次に、Arduinoのmqtt_ethernetスケッチ例に戻り、Adafruit IOアカウントにある「Username」と「Active Key」フィールドをAIO_USERNAMEとAIO_KEYフィールドに入力します。デバイスが接続されていることを確認してから、Uploadをクリックします:
デバイスの状態(およびMQTTブローカーに接続されていること)を確認するには、Tools > Serial Monitorに移動します。このような出力が表示されるはずです:
この時点で、データがMQTTブローカーに正常に送信されていることが確認できました。サーバー上の実際のデータを見るために、Adafruit IOアカウントに戻り、「Feeds」をクリックしてから「photocell」をクリックしましょう。
これで、ArduinoがMQTTブローカーに送信しているデータのライブキャプチャを取得できます。また、過去のデータもダウンロードできます。
おめでとうございます!MQTT対応デバイスの設定が完了し、データをMQTTブローカーに公開しました。次のステップとして、独自のカスタムセンサーを構築し、そのデータをMQTTブローカーに公開してみましょう。
この記事では、MQTTが何であるか、なぜ使用されるのか、そしてマイクロコントローラーに実装する方法について学びました。また、無料のMQTTブローカーサービスを利用して始める方法と、そのサーバー上でデータを表示する方法も実演しました。これで、私たちが使用した例に基づいて独自のArduinoスケッチを開始し、独自のセンサーデータをMQTTブローカーに公開し、クラウド上でそれを表示することに自信を持っていただけるはずです。