MQTTブローカー mosquitto 立てる
M5Stackを入手。まずは気温・湿度・気圧をグラフにしたい。
データを集約するにはMQTTサーバー(ブローカー)が良いらしい。
あまり面倒な事はしたくないが
登録が必要なサービスを使うと仕様の変更とか制限があったりしてイヤなので
VPSでmosquittoを動かすことにした。
mosuqittoのコンテナイメージがあるとの事でありがたく使わせていただく。
##起動する
適当なディレクトリの下に設定ファイルを作成
mkdir -p mosquitto/config
vi mosquitto/config/mosquitto.conf
mosquitto/config/mosquitto.conf
listener 1883 # デフォルトのポート
listener 9001 # WebSocket用
protocol websockets
ユーザー認証なしでの設定なのでご注意ください
起動
docker run -it --rm --name mosquitto \
-v `pwd`/mosquitto:/mosquitto \
-p 1883:1883 \
-p 9001:9001 \
eclipse-mosquitto:latest
ポート9001はWebsocket用なので無くても問題ないが
あると面白い事ができるので入れておく事をおすすめ
##動作テスト
コマンドラインでのテスト
mosquitto を起動した端末とは別の端末から
mosquitto_sub -h localhost -t TOPIC/#
さらに別の端末から
mosquitto_pub -h localhost -t TOPIC/INFO -m "Hello World"
スマホのアプリ「MQTT Dash」でもテストできる
MQTT Dash
##TLS接続
ウェブサイトで利用するにはTLS接続できるようにしておくと都合が良い。
その場合には以下のように証明書関連の設定を追加する
mosquitto/config/mosquitto.conf
listener 1883 # デフォルトのポート
listener 9001 # WebSocket用
listener 8883 # TLS接続用
protocol websockets
cafile /etc/letsencrypt/live/<FQDN>/fullchain.pem
certfile /etc/letsencrypt/live/<FQDN>/cert.pem
keyfile /etc/letsencrypt/live/<FQDN>/privkey.pem
起動
docker run -it --rm --name mosquitto \
-v /etc/letsencrypt:/etc/letsencrypt:ro \
-v `pwd`/mosquitto:/mosquitto \
-p 1883:1883 -p 9001:9001 \
-p 8883:8883 \
eclipse-mosquitto:latest
letsencryptの場合の例なので適宜修正してください
この内容はさくらインターネットのVPS(Debian10)で確認しています