LoginSignup
1
3

More than 1 year has passed since last update.

M5StackでMQTT通信できなくて結局Wifiが繋がってなかっただけの話

Last updated at Posted at 2021-09-11

買ってきたばかりの初めてのM5stack(M5Go)をWebの記事を参照しながら設定してなかなか思うように通信できなくて困った話を記録します。

はじめに

やりたかったこと

M5stack上で取得したセンサのデータをmosquito(MQTT)を使ってWifi経由でubuntu上に構成したNode-REDで受信したかった。

結局は

結論から行くと"wifi connect"を入れることでAppモード時もネットワークにつながるようになりました。
image.png

環境

  • M5GO: ファームウェアバージョンV1.8.4
  • env2センサ: M5GOに接続して気圧,気温,湿度を取得
  • UIflow: V1.8.4(同じローカルのネットワークに存在するWindowsのFirefoxからhttps://flow.m5stack.com/にアクセス)
  • mosquitto: ブローカーホスト:ローカルネットワーク上のubuntuで稼働
  • Node-RED: ローカルネットワーク上のubuntuでDocker内で稼働
  • MQTTX: Version: v1.6.0 Windowsにインストール

mosquitoの準備

ubuntuにmosquittoを設定します。

tarminal
$ sudo apt install mosquitto mosquitto-clients #mosquittoをインストール
$ mosquitto #mosquittoブローカーの起動

mosquittoの動作確認

ubuntuとWindowsの間で試しにメッセージを送信して動作を確認します。

ubuntu上のターミナルを新規に立ち上げてからサブスクライブを開始します。

tarminal
$ mosquitto_sub -d -t topicA

WindowsのMQTTクライアントはMQTTXを利用しました。
ダウンロードの後インストールして起動します。
image.png
+ボタンを押してNEWを開きます。

image.png

  • Name: 任意の接続名称
  • Client ID: 自動割り当てのままで可
  • Host: ブローカーのIPアドレスを入力
  • 右上のConnectを押して接続を保存します。

image.png

  • New Subscriptionを押して登録画面を出します。

image.png

  • Topic: ubuntu上でサブスクライブしたときのトピック名"topicA"を入力します。
  • Confirmを押して登録します。

image.png

  • 赤枠のところにトピック名"topicA"を入力します。
  • 右下の送信ボタンを押します。

image.png

ubuntu上のターミナルに送信した内容が表示されてMQTTが動いていることは確認できました。

Node-REDの準備

Dockerを使ってNode-REDを準備します。

tarminal
$ docker run -it -p 1880:1880 --name mynodered nodered/node-red

2回目以降なら

tarminal
$ docker start mynodered 

Firefoxからhttp://127.0.0.1:1880にアクセスしてNode-REDに入ります。

image.png
ネットワークから"mqtt inノード"を配置してデバッグノードにつなぎます。

image.png
- サーバ: ブローカーのIPアドレスまたはホスト名
- トピック: トピック名(今回はtopicA)

image.png

Node-REDまでの接続確認

WindowsのMQTTXから送信ボタンを押してNode-REDのデバッグメッセージが出ることを確認します。
image.png

M5stack(M5GO)の準備

ブラウザからhttps://flow.m5stack.com/にアクセスします。
API Keyを聞かれますのでM5stack上に表示されるKeyを入力してUIflowからスケッチを描きます。

image.png

おもむろにRunを押します。
書き込み成功!
画面にも測定結果が表示された!

繋がらない...

画面には測定結果が更新されていますし、動いているようだけれどもMQTTはうんともすんとも言わない。
開発元の動画、Youtubeの海外の方が上げてる動画、Google画像検索どれみても問題なさそうに見えました。
UIflowをクラウド経由で利用できているのだからネットワークにつながってないなんて思いもしてません。

2時間ほどの格闘の末AppモードでWifiが起動してない可能性に気が付きおうちのルーターの接続状況を見に行きます。

M5GOちゃんは接続リストに居ませんせんでした。
インターネットモードでUIflow利用中など接続中には"esp-XXXXXXXX"という名前でつながっています。

それらしいブロック"wifi connect(log in lcd true)"を"Network"から見つけました。
配置します。
"wifi connect(log in lcd true)"の場所はSetupのすぐあとの方がよいかもしれません。
"log in lcd"はお好みでfalseでも問題ないです。Wifi接続中の画面がLCD画面に出るか出ないかだけです。
image.png

そしてRun
あっさり成功。

参考にさせていただいた情報源様

https://qiita.com/macole/items/c59dd0ef4b62f8253712
https://qiita.com/NWLab/items/cb3f434705708c40755b
https://take6shin-tech-diary.com/mqtt/

1
3
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
1
3