Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Ni écran, ni clavier : configurer le Wi-Fi et un jeton sur 12 nœuds de laboratoire ESP32-C3

Ni écran, ni clavier : configurer le Wi-Fi et un jeton sur 12 nœuds de laboratoire ESP32-C3

Résolu 9 7

Traduit de English par IA ·

ok alors c’est pour un projet universitaire, désolé si ce n’est pas le bon sous-forum. Nous construisons 12 petits nœuds de qualité de l’air (ESP32-C3 SuperMini + SCD41 + un PMS5003) qui seront installés dans différents laboratoires du campus et enverront leurs données à notre organisation Hermetry via MQTT. Ils n’ont pas d’écran et le seul bouton est BOOT.Actuellement, le SSID, le mot de passe et le jeton d’accès de l’appareil sont tous des #define dans le sketch, donc chaque nœud nécessite sa propre compilation. C’était acceptable pour 2 prototypes, mais pas pour 12, et les techniciens de laboratoire qui déplaceront les nœuds ne peuvent pas utiliser l’IDE.Ce que je veux : flasher un firmware identique sur tous, puis sur place, quelqu’un connecte un téléphone au nœud, saisit le Wi-Fi du laboratoire, et le nœud obtient d’une manière ou d’une autre ses propres identifiants Hermetry. J’ai trouvé WiFiManager et la partie portail captif fonctionne sur le banc d’essai. La partie jeton, je n’ai aucune idée. Existe-t-il une méthode courante pour faire cela, ou tout le monde code-t-il les valeurs en dur ?

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

Traduit de English par IA ·

C’est peut-être une question bête, mais pourquoi ne pas simplement mettre le Wi-Fi une seule fois dans le code, si c’est le même campus ?

♥ 0

Traduit de English par IA ·

Malheureusement, ce n’est pas le même réseau partout. Deux bâtiments sont sur un SSID IoT séparé, un laboratoire a son propre routeur, et les mots de passe sont renouvelés à chaque semestre. De plus, les tokens doivent de toute façon être différents pour chaque nœud.

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

Traduit de English par IA ·

WPS ? Maintenir BOOT pendant 3 s, appuyer sur le bouton du routeur, et voilà. Je l’ai fait il y a des années sur des scanners d’entrepôt.

♥ 2

Traduit de English par IA ·

Le WPS est désactivé sur à peu près tous les réseaux gérés que j’ai vus, je ne compterais pas dessus dans une université. Vous utilisez le core Arduino ou ESP-IDF ? IDF propose un composant de provisioning via SoftAP ou BLE, plus agréable qu’un portail captif.

♥ 1

Traduit de English par IA ·

Cœur Arduino 2.0.14 dans PlatformIO. Je veux bien rester sur WiFiManager pour la partie Wi-Fi, c’est le jeton Hermetry qui me bloque. Je ne veux pas non plus ouvrir la console pour créer 12 appareils et copier 12 jetons dans 12 portails, si je peux l’éviter.

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

Traduit de English par IA ·

Vous n’avez pas du tout besoin de tokens par appareil dans le firmware. Séparez le problème en deux.Wi-Fi : conservez WiFiManager. Ajoutez un champ personnalisé dans le portail si vous voulez un nom d’appareil convivial, sinon utilisez l’adresse MAC.Token : laissez le nœud demander le sien. Dans le profil de l’appareil, ouvrez l’onglet Provisioning, réglez la stratégie sur Allow creating new devices, enregistrez, puis cliquez sur Create key et copiez le secret (il n’est affiché qu’une seule fois). Cette clé et ce secret sont identiques pour les 12 builds. Au premier démarrage, le nœud se connecte avec le nom d’utilisateur provision et un mot de passe vide, s’abonne à v1/provision/res et publie sa demande. La réponse contient son token d’accès ; vous le stockez dans la NVS, et ensuite il se connecte normalement.

// 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

Deux points nous ont posé problème sur un site pharmaceutique. Les nouveaux appareils créés de cette façon atterrissent en quarantaine : ils se connectent, mais leurs données sont rejetées tant qu’un administrateur ne les a pas activés. Prévenez donc le responsable de l’organisation de les chercher. Et le nom doit être unique : une seconde demande avec le même nom renvoie device_exists, car elle ne délivre jamais deux fois un identifiant. Ne effacez donc pas la NVS à la légère. Les détails figurent sur Adding and claiming devices.

Solution acceptée♥ 5

Traduit de English par IA ·

Ça a marché, les 12 sont opérationnels. J’ai tout de suite rencontré le problème device_exists car j’avais effacé la flash du nœud 3 pendant le débogage ; il était déjà enregistré sous aq-3c84a1. J’ai supprimé cet appareil dans la console et il a été reprovisionné sans problème. Je les ai tous activés depuis la quarantaine ce matin. Il a aussi fallu que j’échappe correctement les guillemets : ma première version envoyait du JSON invalide et je ne recevais rien en retour.

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

Traduit de English par IA ·

Nous faisons la même chose sur nos capteurs de ligne. Un conseil du terrain : imprimez le nom de l’AP de configuration sur une étiquette collée sur le boîtier. Personne ne se souvient six mois plus tard de quel nœud est « ESP-3C84A1 ».

♥ 2

Traduit de English par IA ·

+1 pour l’autocollant. Par ailleurs, si certains de ces laboratoires n’ont que du Wi-Fi d’entreprise avec une connexion par utilisateur, un simple portail captif ne suffira pas : il faudrait des champs identifiant/nom d’utilisateur et du WPA2-Enterprise dans le firmware. Demandez plutôt à l’informatique un réseau IoT en PSK, bien moins contraignant.

♥ 0
10 sujets de 1 à 10 (sur un total de 10)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager