IoTデバイスがネットワーク設定を受信するための良い方法は何ですか?


15

ESP8266を使用してIoTデバイスを構築中です。デバイスには最終的に2つのモーターが含まれます。MQTTを使用してこれらのモーターを制御したいと思います。できるだけ安くしたいので、ディスプレイやキーボードなどは避けたいです。

したがって、デバイスが回転すると、ローカルWiFiに接続し、次にMQTTブローカーに接続することになります。しかし、接続先のローカルSSIDについてはどうやって知るのでしょうか。ユーザー名とパスワードについてはどうでしょうか。デバイスにはディスプレイやキーボードがないため、これらを入力する方法はありません。そして、ユーザーはデバイスが接続できたかどうかをどのようにして知るのでしょうか?トラブルシューティングの場合、デバイスに少なくとも問題が何であるかを示す何らかの方法があればよいでしょう。

私が考えていた解決策は、デバイスに1つのボタンと1つのLEDを持つことです。ボタンは「config」または同様のマークが付けられます。ボタンを押すと、デバイスは事前定義されたSSIDを持つWiFiアクセスポイントとして動作を開始します。これにはウェブサーバーがあるため、ユーザーはラップトップまたは電話でこの事前定義されたアクセスポイントに接続し、ローカルネットワーク設定(SSID、ユーザー名とパスワード)とMQTTブローカーのアドレスを入力できます。LEDは、動作モードを示すために使用され、エラー表示としても使用されます。たとえば、すべてが接続されている状態でLEDが安定して点灯している場合、長い点滅は設定モードであることを意味し、短い点滅はエラーまたは同様の何かがあることを意味します。

私の質問は、この問題に関して私が提案した解決策は、物事を行うための標準的な方法ですか?つまり、ユーザーにとってなじみのあるフローのように感じますか、それとも他の方法の方が優れているでしょうか。少し検索した後、私はこれを見つけました。これは、同様のユーザーフローのようです。あなたはこれについてあなたがどのような経験をしているのか、そしてどのようにそれを解決するのかを聞くことに興味がありますか?

これがこの問題を解決するための優れた有用な方法であることが判明した場合、これは一種の一般的な解決策であるため、ホイールをあまり作り直さない方がいいでしょう。私はこれをすべて行うことができるライブラリがあるかもしれないと考えています。ライブラリは、ボタンの入力ピンとLEDの出力ピンで構成され、残りは処理されます。これは、PubSubClientライブラリに基づいて構築でき、チュートリアルESP8266:MQTTブローカーへの接続に基づいています。これを行うライブラリはありますか?そうでない場合、私は刺して自分で作成しますが、最初に何が出るかについて聞きたいです。

ありがとう!

回答:


14

あなたが説明することは、WiFi IoTデバイスをローカルLANに統合する問題を解決するための実際に非常に一般的な(最も一般的な?)方法です。

たとえば、私の経験から、Amazon Echoデバイスはこのようにセットアップされているか、さまざまなスマートスイッチ/スマートプラグ(シェリーデバイスなど)です。

要件によっては、LEDとボタンなしで離れることもできます。
これは、構成されたネットワークに接続しようとし、成功しない場合は構成のためにアクセスポイントを開く技術的な詳細を持つソリューションです。
そして、APモードでキャプティブポータルを使用する2番目の実装です。

MQTT PubSubパーツとボタンおよびLEDをそれぞれのスケッチに実装するのは、かなり簡単です。

代替案:
構成にAPモードを使用する代替案については、Wi-Fi Protected Setup(WPS)Device Provisioning Protocolのテクニックをご覧ください。


非常に良い答えをありがとう!2番目のリンクのWifiManagerライブラリは、まさに私が探しているもののようです。私はそれを試して、私がそれを愛するかどうかを確認します。そうでない場合は、最初のリンクの情報を使用して独自のソリューションを構築します...
Mikael Lindqvist

1
ああ...そして、MQTTの部分も追加する追加があります:github.com/dreed47/WifiMQTTManager
Mikael Lindqvist

3

独自のファームウェアを備えたオープンソースの粒子センサーであるluftdaten.infoプロジェクトもあります。彼らはあなたが提案したものと同様のことをしますが、設定ボタンがありません。これは、デバイスの電源がオンになったときに、デフォルトでWebサーバーを起動することによって行われます。一定のしきい値(3〜10分程度だと思います)の後で、内部Webサーバーがシャットダウンされます。そのため、次の電源サイクルまで設定を行うことができません。

このソリューションは、特定のシナリオでは安全ではない場合がありますが、それでも知りたい場合があります。

編集:

初期構成をデバイスに取り込むには、次の手順を実行します。

デバイスが起動すると、設定されたWLANに到達しようとします(最初の起動時に設定されたWLANはありません)。事前設定されたWLANへの接続に失敗した場合、静的IPを設定し、パスワードなしで独自のワイヤレスネットワークに広がります。静的IPアドレスを介して接続し、初期設定を行うことができます。


3
Webサーバーを起動しただけでは、wifiネットワークのSSID /パスワードをデバイスに渡して実際にネットワークに接続する方法の問題は解決されません。
hardillb

1
@hardillbはい、詳細についてはluftdaten.infoをご覧ください。デバイスが起動すると、設定されたWLANに到達しようとします(最初の起動時に設定されたWLANはありません)。事前設定されたWLANへの接続に失敗した場合、静的IPを設定し、パスワードなしで独自のワイヤレスネットワークに広がります。静的IPアドレスを介して接続し、初期設定を行うことができます。
イェンスコール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.