C'est possible? ESP8266 se connecter au routeur wifi via l'application iOS? Je veux faire en sorte qu'une application contrôle quelque chose par ESP8266. Mon workflow ci-dessous:

  • Ouvrez l'application, sur l'appareil connecté au routeur wifi.
  • Connectez-vous à ESP8266 et donnez-lui les informations SSID et MOT DE PASSE du Wifi actuel.
  • ESP8266 reçoit ces informations et se connecte automatiquement au routeur Wifi.

Merci pour vos conseils d'abord.

J'ai essayé de cette façon mais j'obtiens une expérience utilisateur. Parce que l'utilisateur doit faire de nombreuses étapes. - En utilisant WiFiManager, créez ESP8266 comme routeur wifi. - Accédez au paramètre Wifi de l'appareil pour vous connecter à ESP8266 Wifi. - Donner des informations Wifi (SSID, PASSWORD) en accédant à 192.168.4.1 depuis le navigateur Web. Notez simplement ici pour éviter cette façon

Veuillez me donner vos conseils. Je vous remercie

1
Truc 23 juil. 2017 à 18:04

2 réponses

Meilleure réponse

J'ai trouvé le moyen de le faire: Ceci est du code sur l'application iOS: https://github.com/EspressifApp/EsptouchForIOS

Ceci est le code sur ESP8266 exécuté sur Arduino:

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

WiFiUDP Udp;

void setup() {
  int cnt = 0;
  //Allocate baud 115200
  Serial.begin(115200);
  //Mode wifi is station
  WiFi.mode(WIFI_STA);
  //Waiting for connect
  while(WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    if(cnt++ >= 10){
       WiFi.beginSmartConfig();
       while(1){
           delay(1000);
           //Check the connect and print inform if success
           if(WiFi.smartConfigDone()){
             Serial.println("SmartConfig Success");
             break;
           }
       }
    }
  }

  Serial.println("");
  Serial.println("");

  WiFi.printDiag(Serial);

  // Allocate server
  Udp.begin(49999);
  Serial.println("Server started");

  // Print IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // Receive the package from ESPTouch
  Udp.parsePacket();
  //Print IP of ESP8266
  while(Udp.available()){
    Serial.println(Udp.remoteIP());
    Udp.flush();
    delay(5);
  }
}
0
Truc 30 juil. 2017 à 08:40

Tout d'abord, je ne pense pas que vous ayez fait de l'ESP8266 un routeur Wi-Fi. Je pense que vous voulez dire qu'il passe en mode AP pour inviter l'utilisateur à fournir les informations d'identification.

J'ai contourné ce problème en utilisant la bibliothèque EEPROM. Vous pouvez facilement trouver un exemple de code ici

Donc en gros:

  1. Informations d'identification pré-codées (peuvent être des données factices pour la première exécution) à l'EEPROM.
  2. Lorsque l'ESP8266 démarre, chargez ces informations d'identification et essayez de vous connecter au Wi-Fi.
  3. S'il ne parvient pas à se connecter, demandez à l'utilisateur de saisir ses informations d'identification.
  4. ESP8266 tente de se reconnecter. S'il peut se connecter, écrivez les informations d'identification dans l'EEPROM.
  5. Répétez à partir de l'étape 2 chaque fois qu'il démarre.

Désormais, au lieu d'avoir les informations d'identification de l'utilisateur à chaque fois, il essaiera de se connecter en premier. En cas d'échec, l'utilisateur devra effectuer un travail supplémentaire.

Faites-moi savoir si je peux vous aider, j'ai beaucoup travaillé sur ce problème et j'ai un code fonctionnel.

1
Community 20 juin 2020 à 09:12