Was ist eine gute Möglichkeit für ein IoT-Gerät, seine Netzwerkeinstellungen zu erhalten?

12

Ich bin gerade dabei, ein IoT-Gerät mit ESP8266 zu erstellen. Das Gerät wird irgendwann ein paar Motoren enthalten, und ich möchte diese Motoren mit MQTT steuern. Ich möchte das Gerät so billig wie möglich machen, daher möchte ich Dinge wie Displays und Tastaturen vermeiden.

Wenn das Gerät eingeschaltet wird, soll es eine Verbindung zum lokalen WLAN und dann zu einem MQTT-Broker herstellen. Aber woher weiß es über die lokale SSID, zu der eine Verbindung hergestellt werden soll, und was ist mit Benutzername und Passwort? Da das Gerät kein Display oder keine Tastatur hat, gibt es keine Möglichkeit, diese Dinge einzugeben. Und woher weiß der Benutzer, ob das Gerät eine Verbindung herstellen konnte oder nicht? Für die Fehlerbehebung wäre es schön, wenn das Gerät zumindest eine Möglichkeit hätte, das Problem anzuzeigen.

Die Lösung, an die ich gedacht habe, besteht darin, eine Taste und eine LED am Gerät zu haben. Die Schaltfläche würde mit "config" oder ähnlich markiert sein. Wenn die Taste gedrückt wird, wird das Gerät als WiFi-Zugangspunkt mit einer vordefinierten SSID betrieben. Es wird einen Webserver haben, so dass der Benutzer mit einem Laptop oder Telefon eine Verbindung zu diesem vordefinierten Zugangspunkt herstellen und die lokalen Netzwerkeinstellungen (SSID, Benutzername und Passwort) sowie die Adresse für den MQTT-Broker eingeben kann. Die LED wird zur Anzeige des Betriebsmodus und auch als Fehleranzeige verwendet. Wenn zum Beispiel die LED konstant leuchtet, ist alles angeschlossen. Langes Blinken bedeutet, dass sie sich im Konfigurationsmodus befindet. Kurzes Blinken bedeutet, dass ein Fehler vorliegt oder ähnliches.

Meine Frage ist, ist die Lösung, die ich vorgeschlagen habe, eine Standardmethode, um Dinge zu tun, wenn es um dieses Problem geht? Dh wird es sich für den Benutzer wie ein vertrauter Fluss anfühlen, oder wäre ein anderer Weg besser? Nachdem ich ein bisschen gesucht habe, habe ich zB dies gefunden , was ein ähnlicher Benutzerfluss zu sein scheint. Möchten Sie immer noch hören, welche Erfahrungen Sie damit gemacht haben und wie Sie es lösen würden?

Wenn sich herausstellt, dass dies ein guter und nützlicher Weg ist, um dieses Problem zu lösen, und da es sich um eine Art generische Lösung handelt, wäre es schön, das Rad nicht zu stark neu zu erfinden. Ich denke, dass es eine Bibliothek geben könnte, die all dies tun könnte. Die Bibliothek wird mit dem Eingangspin für die Taste und dem Ausgangspin für die LED konfiguriert und kümmert sich dann um den Rest. Es könnte auf der PubSubClient- Bibliothek aufbauen und auf dem Tutorial ESP8266: Herstellen einer Verbindung zum MQTT-Broker basieren . Gibt es also eine Bibliothek, die dies oder ähnliches tut? Wenn nicht, nehme ich einen Stich und erstelle meinen eigenen, würde aber gerne zuerst erfahren, was da draußen ist.

Vielen Dank!

Mikael Lindqvist
quelle

Antworten:

12

Was Sie beschreiben, ist tatsächlich eine weit verbreitete (die häufigste?) Methode, um das Problem der Integration von WiFi-IoT-Geräten in Ihr lokales LAN zu lösen.

Aus meiner Erfahrung heraus werden beispielsweise Amazon Echo-Geräte auf diese Weise oder eine Vielzahl von Smart Switches / Smart Plugs (z . B. Shelly-Geräte ) eingerichtet.

Abhängig von Ihren Anforderungen können Sie auch ohne LED und Taste davonkommen.
Hier ist eine Lösung mit technischen Details, die versucht, eine Verbindung zum konfigurierten Netzwerk herzustellen. Wenn dies nicht erfolgreich ist, öffnen Sie einen Zugangspunkt zur Konfiguration.
Und hier eine zweite Implementierung mit einem Captive-Portal im AP-Modus.

Die Implementierung des MQTT PubSub-Teils sowie der Schaltfläche und der LED in die jeweilige Skizze sollte recht einfach sein.

Alternativen:
Informationen zu möglichen Alternativen zur Verwendung des AP-Modus für die Konfiguration finden Sie in den Techniken des WPS (Wi-Fi Protected Setup) und des Device Provisioning Protocol .

oh.dae.su
quelle
Danke für eine sehr gute Antwort! Die WifiManager-Bibliothek in Ihrem zweiten Link scheint genau das zu sein, wonach ich suche. Ich werde es versuchen und sehen, ob ich es liebe. Wenn nicht, werde ich die Informationen im ersten Link verwenden, um meine eigene Lösung zu erstellen ...
Mikael Lindqvist
1
Oh ... Und hier ist eine Ergänzung, die auch den MQTT-Teil hinzufügt: github.com/dreed47/WifiMQTTManager
Mikael Lindqvist
1

Es gibt auch das Projekt luftdaten.info , bei dem es sich um einen Open-Source-Partikelsensor mit eigener Firmware handelt. Sie machen etwas Ähnliches wie das, was Sie vorgeschlagen haben, nur ohne die Konfigurationsschaltfläche. Sie tun dies, indem sie den Webserver standardmäßig starten, wenn das Gerät eingeschaltet ist. Nach einem bestimmten Schwellenwert (ich glaube, es liegt irgendwo zwischen 3 und 10 Minuten) wird der interne Webserver heruntergefahren - daher ist bis zum nächsten Aus- und Einschalten keine Konfiguration mehr möglich.

Diese Lösung ist für bestimmte Szenarien möglicherweise zu unsicher, Sie möchten sie jedoch möglicherweise dennoch kennen.

Bearbeiten:

Um die Erstkonfiguration in das Gerät zu übertragen, gehen Sie wie folgt vor:

Wenn das Gerät gestartet wird, versucht es, das konfigurierte WLAN zu erreichen (beim ersten Start ist kein WLAN konfiguriert). Wenn keine Verbindung zum vorkonfigurierten WLAN hergestellt werden kann, wird eine statische IP festgelegt und das eigene drahtlose Netzwerk ohne Kennwort überspannt, über das über die statische IP-Adresse eine Verbindung hergestellt und die Erstkonfiguration vorgenommen werden kann.

Jens Kohl
quelle
2
Das Starten eines Webservers löst nicht das Problem, wie die SSID / das Kennwort für das WLAN-Netzwerk an das Gerät übergeben wird, um es tatsächlich in das Netzwerk zu übertragen.
Hardillb
@hardillb Richtig, schauen Sie sich luftdaten.info für weitere Details an . Wenn das Gerät gestartet wird, versucht es, das konfigurierte WLAN zu erreichen (beim ersten Start ist kein WLAN konfiguriert). Wenn keine Verbindung zum vorkonfigurierten WLAN hergestellt werden kann, wird eine statische IP festgelegt und das eigene drahtlose Netzwerk ohne Kennwort überspannt, über das über die statische IP-Adresse eine Verbindung hergestellt und die Erstkonfiguration vorgenommen werden kann.
Jens Kohl vor