編集履歴一覧に戻る
Makato-kanのアイコン画像

Makato-kan が 2022年10月08日20時21分06秒 に編集

ラズパイでテストできるようにした

タイトルの変更

-

ラズベリーパイにMQTTブローカーの設定をする

+

ラズベリーパイにMQTTブローカーの設定して pub/subを試してみる。

本文の変更

-

ラズベリーパイにMQTTブローカーの設定をする方法です。 いません、かなり雑な説明です。事はCQ出版社月刊誌ンタフェス11月号付録 読まれます。

+

## 初めに: ラズベリーパイにMQTTブローカーの設定をする方法です。 MQTTはaptコマンドでインストールできるmosquittoを使います。  センサーデータを転送する目的に使うので、パスワード設定だけます。 ## 用語: ブローカー データ受信・配信をする機能 パブリッシャー データの送信をする機能 サブスクラ デ配信うける機能 トピック 配信すデータの事 ※トピック以外はプログラムで、ブローカーパブリッシャーが常時起動してるプログラムになるイメージです。 ※ここではmosquittoうプログラムを使います。

![MQTTのイメージ](https://camo.elchika.com/4f3606bb298a9d463481acf54afd1ecd2ff9901a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66373831653764372d303336352d343131662d613663362d3663623238333931346464342f31613865346631382d653637372d343661352d396464342d393339633663303337326634/)

-

 パブリッシャー: データを送信している人  ブローカー:パブリッシャーからのデータを受信する人        データをサブスクライバーに送信する人  サブスクライバー: パブリッシャーのデータを受け取る人   トピック:配信するデータのこと

### 必要な物:

-

 無線LANの親機

 ラズベリーパイ (ラズパイ3以上のモデルが良いです)

-

 M5StickやらESP-WROOM-02等

+

ネットワーク接続された、M5StickやらESP-WROOM-02等

-

### 概要:  ラズベリーパイにMQTTのブローカーを設定します  ESP-WROOM-02などでMQTTのパブリッシャーを設定し  データを送信できるようにします

+

### 操作1:

 ラズベリーパイにMQTTブローカーとサブスクライバーを設定し  データを受信できるようにします。

-

### ブローカーの設定:  ソフトのダウンロード

+

 ソフト(mosquitto)のダウンロード

```  $ sudo apt install mosquitto ```

-

 インストール終了するとmosquittoというサーバーが  動くようになります。

+

 インストール始まると色々聞いてきますが、yesで答えると良いです。 終了するとmosquittoというサーバーが動くようになります。 ``` $ ps ax |grep mosquitt 704 ? Ss 20:53 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf ```

 ### パスワードの設定:

-

  パスワードは テキストエディタなどで   "ユーザ名:パスワード"のファイルを

+

  テキストエディタなどでパスワードファイルを新規成し、

```

-

$ mosquitto_passwd

+

sudo vi /etc/mosquitto/passwd.txt

```

-

コマンドで暗号化します。 暗号化したファイル/etc/mosquitto/mosquitto.confに 指定れば出来上がりです

+

中身は ``` pi:password ``` といったファイル作成しま

-

### パブリッシャの設定:  M5StickCでMQTTのブリッシャ使った記事があます。 [M5StickCで二酸炭素と温度・湿度の測定値をMQTT送信します。](https://elchika.com/article/7c2fd4bb-3b37-45d0-b8e9-d75bdd828f0a/)  他にESP-WROOM-02で設定して温度湿度データを送信する記事があります。 [ESP-WROOM-02とDHT11で温度・湿度をMQTT送信するよ](https://elchika.com/article/44f9743e-ecd2-4b92-9204-5a124d91d3ea/) ### サブクスライバーの設定:  ソフトのダウンロード

+

  "ユザ名:スワド"のファイル暗号します。

```

+

$ sudo mosquitto_passwd ``` 暗号化したファイル名を /etc/mosquitto/mosquitto.confに 追記すれば出来上がりです。 追記はどこでもいいです 追記例 ```  password_file /etc/mosquitto/passwd.txt ``` ## 操作2:  ラズベリーパイで動作試験もしたいので以下のソフトを組み込みます。  これはラズベリーパイにパブリッシャーとサブスクライバーのソフトをインストールしています。 ```

 $ sudo apt install mosquitto-clients ```

-

サブコマンド例 ``` $ mosquitto_sub -h MQTT.local -u pi -P password -t sensor1 -F @Y,@m,@d,"@H:@M",%p

+

## データ送受信のテト:  ズベリーパでデタの送信受信を試してみます。  ターミナル画面を2つ用意して1つを送信、もう一つを受信用につかいます。  -tで指定するトピックはsensor1です データ受信コマンド

```

-

 受信データを記録したい場合は標準出力をファイルにしてコマンド実行しました。

+

mosquitto_sub -h MQTT.local -u pi -P password -t sensor1 -F @Y,@m,@d,"@H:@M",%p

```

-

$ mosquitto_sub -h MQTT.loca -u pi -P password l -t sensor1 -F @Y,@m,@d,"@H:@M",%p >>/home/pi/senser.csv

+

コマンド実行するとプロンプト表示がなくなり 受信待ち状態になります。 ### パブリッシャーのテスト: もう一つのターミナル画面で以下のコマンドを実行します。

```

-

※ブローカーホスト名 MQTT.local  トピック名 sensor1 

+

mosquitto_pub -h MQTT.local -u pi -P password -t sensor1 -m testt ``` そうするとmosquitto_subを実行しているターミナルに受信時刻とtesttという文字が表示されます そうすれば 送受信成功です。

-

### ちょっとした事:   一つのトピック名で複数のパブリッシャーがあると  そのトピック名を指定したサブスクライバーは複数の  パブリッシャーから送られたデータをすべて受け取る事になります。  ある意味便利かもしれませんが、同じタイミングでデータ送信  された場合取りこぼしなく受け取れるかは試した事ありません。

+

## その他: 拙い文章ですが、M5StickCとESP-WROOM-02でセンサーの値をMQTTで送信する記事を 作成しておりました。 ご参考になれば幸いです。 [M5StickCで二酸化炭素と温度・湿度の測定値をMQTT送信します。](https://elchika.com/article/7c2fd4bb-3b37-45d0-b8e9-d75bdd828f0a/)  他にESP-WROOM-02で設定して温度湿度データを送信する記事があります。 [ESP-WROOM-02とDHT11で温度・湿度をMQTT送信するよ](https://elchika.com/article/44f9743e-ecd2-4b92-9204-5a124d91d3ea/)

+