Mosquittoでの実験(インストール)

MQTTを体験するために、機材を用いないでWindows10のPC1台で実験してみた。
MQTTの電文データも見てみると非常的に興味のある内容であったが、それは機会あるときに投稿するとして、今回はMosquittoを実験台として使用した。

MQTT(Message Queuing Telemetry Transport)とは、通信速度、通信量を重視しないケースにおいてTCP/IP通信を実現する軽量なプロトコルである。

MQTTはBrokerというデータをIoT機器から受信配布する機能があるモデルを使用しているのが特徴であり、UserはそのBrokerにデータを取りに行く(or もらう) ことになる。 DeviceであるIoT機器側はPublish(発行/送信)という形で情報を提供しPC(購読/受信)という方式となる。
ここで使用されるデータにはトピックという識別子に紐づいている。

MQTTプロトコルを実験するために必要な要素として重要な位置づけを占めるもの(?)はBrokerである。 自宅環境でテストするのであれば、PCに入れればよいし、Internet上にあるフリーのBrokerを利用することも可能である。 Mosquittoというのは今回使用したBrokerソフトである。

https://mosquitto.org/download/

私のWindows10は64bit Buildなのでそれに合わせた。

mosquitto-1.6.9-install-windows-x64.exe 

をダウンロードし実行した。また、これを実行するためにはOpenSSLが必要なので、これもインストールする。

http://slproweb.com/products/Win32OpenSSL.html
いくつが選択があるが、私は「Win64 OpenSSL v1.1.1g」を選択した。
(アンチウィルスソフトが警告が出ていたが)

実験の順番

今回は、一通り実験することになるのだが、時間が無尽蔵にあるわけではないので実験の順番というものは非常に大事である。 もちろん時間切れで挫折する可能性もあるので、全体を抑えつつ、悩みそうで興味があるところに時間をかけてみる。 これはロボット大会における

使用機材など

準備した機材は以下の通り。 入手した場所ではないが、Webで見つけられた場所を記載する。 まずはWebをみて、皆が使用しているものを採択した。

実験するホストとしてはWindows10を使用した。

Deviceとして
“DRAGINO 高周波回路 開発キット ATMega328P LoRa Mini Dev Development Board for LoRa Mini”
https://jp.rs-online.com/web/p/radio-frequency-development-kits/1883151/
注意しなくてはならないのは日本規格を通ったもの。ほかのGatewayで安いものは周波数帯が日本規格でなかったりするので要注意。



センサとして”DHT11″
https://jp.rs-online.com/web/p/sensor-development-kits/1743237/

LoRa WAN Gatewayとして”DRAGINO LoRa GPS HAT -JP”
https://jp.rs-online.com/web/p/products/1875121
ここも周波数帯は十分に注意すること。



Gateway用の機器として”Raspberry Pi Zero WH”
https://www.switch-science.com/catalog/3200/
GatewayはRaspberry Piにスタックして搭載されるために、40Pinコネクタのものが必要である。 (ピンヘッドありのものを購入する必要がある)
普通にRaspberry Pi 3 Model Bに接続するのが普通であろう。

下に赤白に見えるものがケースに入ったRaspberry Pi Zeroである。
これはCPU処理能力は少し劣るものの、小型で無線もついているのでちょっとした実験には大変重宝している。

Pi ZeroとしてはPCのUSB電源供給で十分に動作するが、HAT(Gatewayのボード)を取り付けると、Pi自体は動作するが、HATのPWR LEDが点灯しないので、別電源を準備したほうが良い。 ここでは、5V 3Aと表示のある電源を使用している。

その後、HATの故障を判断したが、可能性の一つとして電圧の不安定な状態で動作させたことが可能性として考えられるが、調査はしていない。 似たような原因でESP32を複数個がお蔵になり復旧されるタイミングを待っているが、このHATもお蔵に入ってしまった。 別途トラブルシューティングを投稿予定。

また、無料のサービスに登録するために有効なメールアドレスが必要である。新たに二つのサービスに登録した。費用は掛からない。

ゴールの設定

まず、時間としても無尽蔵にあるわけではないので、一つのことに入り込まないように全体としてのゴールイメージを書いてみた。 試してみるにあたり、ゴールを設定していろいろと絵をかいてみた。 まずは、ゴールを書いてみて、そこからいろいろと調査、実験をしながら進めていくと、結構あいまいな知識であったことがよくわかるのと、現実(時間と重要度)が見えてきてどうしてもゴールを動かしたくなってくる。 趣味ごとなので、これで良しとする。

最初のイメージは下記の通り。

大きな間違いとして、すでにLPWN であるLoRa WANのネットワーク網は無料でお試しで、簡単にできるかと想像していた。 これは大きな間違いであった。
調べた結果、下記のゴール設定となった。 これも、まだ書き換えることになるかもしれない。(まだ、間違っている部分もある。)

センサーから説明すると、ここで温度センサと湿度センサを実験として使用した。ここは良く使い慣れたArduinoを素材とし、それにLoRaのWireless Moduleがついたものを用いている。
まず、Nodeと呼ばれるものの役目だが、正確にはDeviceといったほうがよさそうである。ただ、一つのDeviceには複数のセンサデータなどを含めることができる。

上図のNode(Device)の役目は、
-センサからデータを収集
-MQTTというプロトコルに合わせこむ
-LoRa網を経由させてLoRa Gatewayにデータを送る
となる。

LoRa Gatewayの役目は、LoRa網に来たDeviceからデータをInternet上にあるBrokerに転送することである。

Brokerの役目は、Deviceから来たデータを配信する役目を担う。

IoT ServiceはBrokerと連携してデータの蓄積、集計、HMI(表示器)などの役目をする。

MQTTはプロトコルとしてPublisher/Subscriberモデルでメッセージングを行います。
メッセージの発信者(出版者)をPublisher、メッセージの受信者(購読者)をSubscriber、メッセージの仲介をするのがBrokerです。出版者が不安定だったり購読者が多いケースなど利点もたくさんあるのですが、欠点もある手法なので注意は必要となる。
感想として、MQTTは、使用目的が簡易な機器のデータ通信に特化しており、ある程度割り切りの使い方をすることで、HTTPなどと比べても非常に小さなプロトコルである。

IoTとMQTT

思いもよらず、まとまった時間が取れたために、前々から興味のあったIoTなるものを実験してみることとした。これまで、LPWANなど思想はJT65に近く、低消費電力や長距離通信という目的に可能性をおおきに感じることができる。記事などを見る機会は多かったが、今回試してみたので、ここにメモとして記載しておく。