目次

mosquitto

このページを作成しようと思った動機

ほかの人にリモートのサーバを用意してもらったが、うまく接続できていない。

ファイヤーフォールでポートに制限をかけているのか、センサーデバイスがつながっていないのか。。。

ネットワークの設定を疑うには、自分のコードを疑ってみようと思った。

まずは、いろいろな制限のないローカルでmosquittoサーバを立ち上げて、自分のmosquitto接続できるようにしていこうと思う。

mosquittoをdocker-composeで動かす

下記のページを参考(ほぼコピー)にして、自分でためしてみたことを追記していく感じにしようとおもいます、。

https://qiita.com/github0013@github/items/7c410216b74f29919da8

DockerとEclipse MosquittoでMQTT

下記のページを参考にして、自分でためしてみたことを追記していく感じにしようとおもいます、。

https://edts.hatenablog.com/entry/2022/03/21/203949

docker-compose-mqtt.yml

version: "3"
services:

  mosquitto-publisher:
    build: ./docker-compose-mqtt.yml
    container_name: mosquitto-publisher
    tty: true

  mosquitto-subscriber:
    build: ./docker-compose-mqtt.yml
    container_name: mosquitto-subscriber
    tty: true

  broker:
    image: eclipse-mosquitto
    container_name: mosquitto-broker
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    user: "1000:1000"

mosquitto.conf

persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
log_type all # 全部

# この2つの設定がないとdocker-compose内のclientからアクセスできない(Connection Refused: not authorisedが出る)
# コンテナ間で通信する設定
listener 1883
allow_anonymous true

使い方

インストールしておくもの

クライアント側ではsudo apt-get install -y mosquitto-clientsなどとしてmosquitto_sub、mosquitto_pubコマンドを手に入れておく。

docker-compose -f ./docker-compose-mqtt.yml up -d
# コンテナ名確認
docker-compose -f ./docker-compose-mqtt.yml ps 
docker exec -it 上記で確認したコンテナ名 bash

認証なしでほかのホストから接続する方法

/mosquitto-no-auth.confというファイルがあり、これに認証無しで他ホストから接続できるようにする設定が書いてある。

使い方

sub側

mosquitto_sub -h broker -t topic_name

pub側

mosquitto_pub -h broker -t topic_name -m message
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-12-21 (水) 10:33:25 (514d)