Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Kein Display, kein Tastenfeld: WLAN und Token auf 12 ESP32-C3-Laborknoten bringen

Kein Display, kein Tastenfeld: WLAN und Token auf 12 ESP32-C3-Laborknoten bringen

Gelöst 9 7

Von English mit KI übersetzt ·

ok, das ist für ein Uni-Projekt, sorry falls das das falsche Unterforum ist. Wir bauen 12 kleine Luftqualitätsknoten (ESP32-C3 SuperMini + SCD41 + ein PMS5003), die in verschiedene Labore auf dem Campus kommen und über MQTT an unsere Hermetry-Organisation berichten. Sie haben kein Display, und der einzige Knopf ist BOOT.Im Moment sind SSID, Passwort und das Geräte-Zugangstoken alles #defines im Sketch, also bekommt jeder Knoten seinen eigenen Build. Für 2 Prototypen war das in Ordnung, für 12 ist es das nicht, und die Labortechniker, die die Geräte umstellen, können die IDE nicht bedienen.Was ich möchte: auf alle dieselbe Firmware flashen, dann vor Ort mit dem Handy mit dem Knoten verbinden, das Labor-WLAN eingeben, und der Knoten bekommt irgendwie seine eigene Hermetry-Zugangsdaten. Ich habe WiFiManager gefunden, und der Captive-Portal-Teil funktioniert auf dem Labortisch. Beim Token habe ich keine Ahnung. Gibt es eine übliche Methode dafür, oder fest codieren alle einfach?

Timestamps in UTC or it didn't happen.
♥ 0

Von English mit KI übersetzt ·

Vielleicht eine dumme Frage, aber warum schreibt man das WLAN nicht einfach einmal in den Code, wenn es doch alles im selben Campus ist?

♥ 0

Von English mit KI übersetzt ·

Leider nicht überall dasselbe Netzwerk. Zwei Gebäude hängen an einer separaten IoT-SSID, ein Labor hat einen eigenen Router, und die Passwörter werden jedes Semester gewechselt. Außerdem müssen die Tokens ohnehin für jeden Knoten unterschiedlich sein.

Timestamps in UTC or it didn't happen.
♥ 2

Von English mit KI übersetzt ·

WPS? BOOT 3 s gedrückt halten, Taste am Router drücken, fertig. Habe ich vor Jahren bei ein paar Lagerscannern gemacht.

♥ 2

Von English mit KI übersetzt ·

WPS ist auf praktisch jedem verwalteten Netzwerk, das ich gesehen habe, deaktiviert. An einer Uni würde ich nicht darauf setzen. Verwendet ihr den Arduino-Core oder ESP-IDF? IDF bringt eine Provisioning-Komponente über SoftAP oder BLE mit, die angenehmer ist als ein Captive Portal.

♥ 1

Von English mit KI übersetzt ·

Arduino-Core 2.0.14 in PlatformIO. Ich bleibe gern bei WiFiManager für den Wi-Fi-Teil, hänge aber am Hermetry-Token. Ich möchte auch nicht die Konsole öffnen, 12 Geräte anlegen und 12 Token in 12 Portale kopieren, wenn ich das vermeiden kann.

Timestamps in UTC or it didn't happen.
♥ 0

Von English mit KI übersetzt ·

Du brauchst im Firmware-Code überhaupt keine Tokens pro Gerät. Teile das Problem in zwei Teile.WLAN: Behalte WiFiManager bei. Wenn du einen gut lesbaren Gerätenamen möchtest, füge im Portal ein benutzerdefiniertes Feld hinzu, andernfalls verwende die MAC.Token: Lass den Knoten sein eigenes anfordern. Öffne im Geräteprofil den Reiter Provisioning, setze die Strategie auf Allow creating new devices, speichere, klicke dann auf Create key und kopiere das Secret (es wird nur einmal angezeigt). Dieser Schlüssel mit Secret ist für alle 12 Builds gleich. Beim ersten Start verbindet sich der Knoten mit dem Benutzernamen provision und einem leeren Passwort, abonniert v1/provision/res und veröffentlicht seine Anfrage. Die Antwort enthält sein Zugriffstoken; du speicherst es im NVS, und ab dann meldet sich der Knoten normal an.

// first boot only, after Wi-Fi is up
mqtt.setServer(host, 8883);          // WiFiClientSecure, TLS
mqtt.connect(clientId, "provision", "");
mqtt.subscribe("v1/provision/res", 1);
String req = String("{"deviceName":"aq-") + mac6 +
  "","provisionDeviceKey":"pk_xxx","provisionDeviceSecret":"ps_xxx"}";
mqtt.publish("v1/provision/req", req.c_str());
// in the callback: parse credentialsValue when status == "SUCCESS",
// prefs.putString("tok", value); then reconnect with the token as username

Zwei Dinge haben uns auf einer Pharma-Anlage erwischt. Neue Geräte, die so angelegt werden, landen in Quarantäne: Sie verbinden sich, aber ihre Daten werden verworfen, bis ein Administrator sie aktiviert. Sag deshalb dem Verantwortlichen der Organisation, dass er nach ihnen suchen soll. Außerdem muss der Name eindeutig sein; eine zweite Anfrage mit demselben Namen erhält device_exists, weil nie zweimal eine Zugangsdaten ausgegeben wird. Lösche den NVS deshalb nicht leichtfertig. Details stehen unter Adding and claiming devices.

Akzeptierte Lösung♥ 5

Von English mit KI übersetzt ·

Das hat funktioniert, alle 12 sind online. Ich bin sofort auf das device_exists-Problem gestoßen, weil ich beim Debuggen den Flash von Knoten 3 gelöscht hatte; er war bereits als aq-3c84a1 registriert. Ich habe das Gerät in der Konsole gelöscht, danach wurde es problemlos neu provisioniert. Heute Morgen habe ich alle aus der Quarantäne aktiviert. Außerdem musste ich die Anführungszeichen richtig escapen, meine erste Version hat fehlerhaftes JSON gesendet und ich habe einfach keine Antwort bekommen.

Timestamps in UTC or it didn't happen.
♥ 0

Von English mit KI übersetzt ·

Wir machen dasselbe bei unseren Liniensensoren. Ein Tipp aus der Halle: Den Namen des Setup-APs auf einen Aufkleber am Gehäuse drucken. Sechs Monate später erinnert sich niemand mehr, welcher Knoten „ESP-3C84A1“ ist.

♥ 2

Von English mit KI übersetzt ·

+1 zum Aufkleber. Falls in einigen dieser Labore nur ein Enterprise-WLAN mit benutzerspezifischer Anmeldung verfügbar ist, reicht ein einfaches Captive Portal nicht aus; dann bräuchte man Felder für Identität/Benutzername und WPA2-Enterprise in der Firmware. Bitten Sie die IT stattdessen um ein PSK-IoT-Netz, das ist deutlich weniger Aufwand.

♥ 0
Ansicht von 10 Beiträgen – 1 bis 10 (von insgesamt 10)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

Mitdiskutieren

Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

Teilen