1
/
5

loT初心者向け!「MQTT」について簡単にまとめてみる

こんにちは。開発エンジニアのd_shr(id:d_shr)です。
これまではNode.jsやPostgreSQLについて書いていましたが
今回はIoTを支える通信プロトコルMQTTについてまとめます。


PostgreSQL10についてまとめてみた - RAKUS Developers Blog | ラクス エンジニアブログ
こんにちは。開発エンジニアのd_ shr( id:d_shr)です。 前回はNode.jsのことを書いていましたが、今回は PostgreSQL のことを書きます。 前回投稿した記事 tech-blog.rakus.co.jp 最近、 PostgreSQLについて調査する機会がありました。 主にPostgreSQL9系やPostgreSQL10の変更点を調査しましたが、その中でも最新のPostgreSQL10について書きます。 PostgreSQL10はリリースから半年以上経っており今更ですが、新機能や変
http://tech-blog.rakus.co.jp/entry/2018/06/13/100632


Node.js + Express + Socket.ioで遊んでみた - RAKUS Developers Blog | ラクス エンジニアブログ
id:d_shrです。 担当している商材の機能を実装する上で Node.js, Express, Socket.ioについて学習する機会があったのでまとめてみようと思います。 Socket.ioのサンプルコードを参考に簡単にチャットアプリの基本的な機能を作ってみました。 簡単にWebアプリケーションを作ってみたいという方やNode.jsやSocket.ioを学習し始めた方の参考になればと思います。 Node.jsについては過去の記事で紹介されているので割愛します。 Node.jsの勉強会でお手軽にWebア
http://tech-blog.rakus.co.jp/entry/2018/03/14/084947

はじめに

MQTTは、Publish/Subscribe モデルのメッセージングにより、非同期に1対多の通信ができるプロトコルです。
シンプルかつ軽量に設計されているため、機械同士が通信を行いやり取りするM2M (Machine-to-Machine) や
家電や自動車など多種多様な「モノ」が通信を行いやり取りするIoT (Internet of Things) を実現するのに適した
プロトコルと言われています。

軽量で省電力

HTTPと比較すると、軽量で省電力なプロトコルです。
MQTTのヘッダサイズは2バイト〜とHTTPに比べるとかなり軽量になっており
その軽量さからバッテリーが限られているモバイル通信に適しています。

メッセージングとTopic

メッセージング

MQTTはPub/Subモデルでメッセージングを行います。
Pub/Subモデルではメッセージの送信者をPublisher、メッセージの受信者をSubscriber、メッセージの仲介をするのがBrokerです。
Publisher はメッセージをBrokerへ送るとき、送ったメッセージがどの Subscriber に届くのかなど気にする必要はありません。 Subscriberはメッセージがどの Publisher から送られて来たのか知ることなく欲しいメッセージをBrokerから受け取ります。


Topic

MQTTでは、Topicと呼ばれるキーを用いてメッセージングを行います。
トピックは「/」で区切られた階層構造になっています。
例:japan/osaka
PublisherはTopicを指定してメッセージを送信し、Subscriberは受信したいトピックをfilterとして指定することで、欲しいメッセージだけを手に入れることができます。


MQTTの機能

QoS

MQTTではメッセージごとに到達保証に関するQoS(サービスの品質)を指定します。

  • QoS0
    メッセージは最高 1 回 配信される
    メッセージが送信先に届くかは保証されない
  • QoS1
    メッセージは最低 1 回 配信される
    メッセージが送信先に届くことが保証されるが重複して届く可能性がある.
  • QoS2
    メッセージは正確に 1 回 配信される
    メッセージが過不足なく 1 回のみ到着することが保証される.

Retain

Topicごとに最後にPublishされたメッセージをMQTTサーバが保持しておく機能。
MQTTはPub/Subモデルなので、PublishしたときにSubscribeしていたクライアントにしかメッセージは送信されません。
具体的には、10分ごとに更新される情報を得るために新しくSubscribeしても,最長10分間はなにも情報が得られないことになります。
しかし、Retain機能を使うとその時点での最新の情報が得ることができます。

Will

Publisherが切断されてサーバとの通信ができなくなったときに
指定されたTopicとメッセージをSubscriberに送信する機能。
予期せぬ切断などが発生したときに、SubscriberはPublisherが切断されていることを判断できます。

まとめ

IoTを支えるプロトコルMQTTについて簡単にまとめてみました。
世の中にIoTが広がってきているので、それに関連した技術は追っていきたいと思います。

株式会社ラクスでは一緒に働く仲間を募集しています
1 いいね!
1 いいね!
今週のランキング
株式会社ラクスからお誘い
この話題に共感したら、メンバーと話してみませんか?