LoginSignup
5
4

More than 3 years have passed since last update.

ESP32をMQTTのブローカーにしてみた

Posted at

はじめに

Mongooseというweb server用のライブラリを使ってESP32をブローカーにしてみましたので、その情報共有です。※ESP-IDFで開発しています

これから記載する手順では、最終的に以下の図のように動作確認を行います。

動作の概要.png

ESP32(ESPr® Developer 32を使用)をブローカーとして動作させて、MQTT Box(PCのアプリケーション)から送信した{'hello':'world'}という文字列をESP32を介して再びMQTT Boxで受け取るという、シンプルな構成と内容です。

※ESP32はSTAモードで動作させています
 
 
この動作確認ではMQTT BoxをPublisher(データ送信する人)とSubscriber(データを受信する人)として使っていますが、実際はESP32をPublisherやSubscriberにすることができます。

つまり、ESP32だけでMQTTの通信ができるということになります。おお、なんということでしょう。

使用したもの

  • ESPr® Developer 32
  • ESP32のソフト開発に使用したOS:Ubuntu18.04 ( Windows7 Pro 64bit をホストOSとするVirtualBoxにインストール )
  • PC(MQTTBoxをインストールした)のOS:Windows7 Pro 64bit

手順

前提

以前作成したmongooseのサンプルプロジェクトの環境をそのまま使うものとします
今回はそのプロジェクトの以下の2ファイル(★)を変更するだけで実現できます。

mongoose_example
┣ main
┃ ┗ main.c ★
┃ 
┣ components
┃ ┗ mongoose
┃   ┗ mongoose.h ★
:

1. main.cをMQTTのブローカー用コードに変更する

main.cをこのコード(github)の内容に全て置き換えます。

※ただし、コード中の以下の①と②は自分の環境に合わせて変更する必要があります。

①使用環境のWiFi情報

#define WIFI_SSID "xxxxx"
#define WIFI_PASS "xxxxx"

②アクセス先(ESP32)のIPアドレス

IP4_ADDR(&ipInfo.ip, 192,168,99,3);
IP4_ADDR(&ipInfo.gw, 192,168,99,1);

2. mongooseライブラリでMQTTのブローカーを有効にする(mongoose.h)

mongoose.hにて以下のようにMG_ENABLE_MQTT_BROKERを有効(1)にします。

#ifndef MG_ENABLE_MQTT_BROKER
#define MG_ENABLE_MQTT_BROKER 1
#endif

3. 動作を確認する

プログラムをビルドしてESP32に書き込み&モニター開始します

$ make
$ make flash
$ make monitor

次にMQTT Boxを立ち上げてESP32と接続した後、Publishするとデータを受け取ることができます。

MQTT Boxの具体的な操作:
①MQTTの設定※を行った後に「Connect」する
②Subscribeする
③TopicとPayloadを入力する
④Publishする
⑤送ったデータと受け取ったデータが表示される

MQTTBoxスクリーンショット4.png

※MQTT Boxの設定内容:
MQTTBoxスクリーンショット6.png

一方、ESP32のモニター上では以下のような表示が出ます。
MQTT Boxの操作に合わせて「MG_EV_MQTT_XXX」と表示されます。
esp32モニタースクリーンショット2.png

終わりに

ESP32をブローカーにするのは大変そうだなーと思っていたら、Mongooseというライブラリのおかげで意外と簡単に実現することができました。

そして、この手順でブローカーとして動作させているESP32はSTAモードで動作しているので、今のままでは無線ルーターが必要なので、もうちょい頑張ってAPモードにしたいところです。(必要に迫られないとたぶんやらない気がするなぁ)

見ていただいてありがとうございました。
тнайк чoμ_〆(・ω・。)

更新履歴

  • 2019-05-29:新規作成
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4