j'ai déjà fait un mini-serveur sous ESP-01 qui pousse aussi ses données vers l'internet. J'ai donc, sur ce système, à la fois un service de point d'accès (192.168.4.1) et une connexion externe dont l'adresse est déterminée par le DHCP. Tout cela, comme écrit ci-haut sur un EPS-01
J'essaie de refaire cela avec un Rasp Pico-W
Le souci que je rencontre va de suite:
ou j'ai le point d'accès
ou j'ai l'accès internet
Je n'arrive pas à obtenir les deux (AP + STA) sur mon Pico-W
Voici le code:
WiFi.softAPConfig(APlocalIP, APgateway, APsousRes);
WiFi.softAP(APssid, APpwsd); //Point d'accès ... ceci servira aux ESP8266 satellites selon la syntaxe WiFi.softAP(ssid, pwsd);
Serial.print ("Point d`accès a cette adresse : ");
Serial.println(WiFi.softAPIP());
WiFi.begin(ssid, pswd);
Serial.print ("Connexion Wifi ");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print ("\nConnexion WiFi réussie à cette adresse : ");
Serial.println(WiFi.localIP());
Voici le résultat:
11:29:04.560 -> Point d`accès a cette adresse : 192.168.4.1
11:29:05.427 -> Connexion Wifi
11:29:05.427 -> Connexion WiFi réussie à cette adresse : 192.168.4.1
Mes adresses locales sont en 192.168.1 et non en 192.168.4
il me semble que le Raspberry Pi Pico W (la puce CYW43439) ne prend pas en charge simultanément les modes station et point d'accès. Il peut être configuré dans l'un ou l'autre mode, mais pas dans les deux à la fois.
Espressif est plus avancé de ce côté, les ESP8266 et ESP32 peuvent gérer simultanément les 2 modes.
Voilà qui explique tout. Car, c'est bien ce que j'observe: un ou l'autre mais pas les deux. Mais j'ignorais totalement que ça venait de la puce.
Merci J-M-L. Je tenterai de contourner le problème de la manière suivante:
Première connexion: à l'internet pour lire l'heure et mettre mon horloge à jour
Coupure de la première connexion
Deuxième connexion: serveur point d'accès tout au long de la période de travail suivante. Cette période de travail ne dure jamais plus que 2-3 heures, le Pico saura rester assez près de l'heure internet dans un si court laps de temps.
Ca dépend de ce que tu es près a accepter comme dérive?
Je crois que la dérive est inférieur à 5s par jour, mais pas sûr de mes sources.
Mais naïvement j'aurais tendance à dire que quelque secondes doit être acceptable.
//On va chercher l'heure sur internet
WiFi.begin(ssid, pswd);
Serial.print ("Connexion Wifi ");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print ("\nConnexion WiFi réussie à cette adresse : ");
Serial.println(WiFi.localIP());
timeClient.begin();
timeClient.update();
heureAllume = timeClient.getEpochTime(); // Get Unix epoch time from the NTP server
minute_ = minute(heureAllume);
hour_ = hour(heureAllume);
second_ = second(heureAllume);
Time[4] = minute_ % 10 + 48;
Time[3] = minute_ / 10 + 48;
Time[1] = hour_ % 10 + 48;
Time[0] = hour_ / 10 + 48;
Time[7] = second_ % 10 + 48;
Time[6] = second_ / 10 + 48;
timeClient.end();
WiFi.disconnect();
milliAllume = millis();
Serial.println(Time);
//Une fois l'heure internet obtenue, on ouvre un serveur web pour les bsoins locaux
WiFi.mode(WIFI_AP_STA); //Mode mixte de fonctionnement: à la fois serveur (STA) et point d'accès (AP)
WiFi.softAPConfig(APlocalIP, APgateway, APsousRes);
WiFi.softAP(APssid, APpwsd); //Point d'accès ... ceci servira aux ESP8266 satellites selon la syntaxe WiFi.softAP(ssid, pwsd);
Serial.print ("Point d`accès a cette adresse : ");
Serial.println(WiFi.softAPIP());
C'est un affichage dans l'église, même à 15 secondes par jour, ça ne changerait rien puisque le système complet est éteint (alimentation électrique coupée) lorsque les gens partent et n'est allumé que quelques minutes avant l'arrivée de la foule.