Connecter un esp8266 au HOTSPOT FREEWIFI

Bonjour, tous le monde

je cherche a Connecter un esp8266 au HOTSPOT FREEWIFI malgré de longue recherche sur le Net je ne trouve pas de solution.

bon il faut avoué que je suis pas très doué non plus

si vous avez une solution merci d'avance

Bonjour,

Pourtant dans l'ide Arduino, il y a plein d'exemple livré pour l'es8266.

il suffit d'avoir le SSID , freewifi à priori. et le mot de passe.

le problème n'est pas de se connecter au ssid wififree mais il est de s'identifier sur la page web
https://wifi.free.fr/Auth

char* ssid="FreeWifi"
char* password=""
const int httpsport=443

WiFi.begin(ssid,password)

WiFiClientSecure client

Serial.print("wget -O - --post-data="login=$LOGIN&password=$PASSWORD" "Free")

avec le moniteur de l IDE ARDUINO j'obtiens bien une addresse ip pour autant je ne suis pas connecter
au net pour le vérifier je lui demande de m'afficher l heure via ntpclient
mon programme fonctionne très bien sur mon réseaux wifi

Je pense que c'est impossible de cette manière. Une solution serait d'utiliser un shield GSM et d'y insérer une carte Free (à 2 euros pour limiter les frais) qui pourrait se connecter sur un réseau FreeWifi.

Free utilise l'EAP SIM (système utilisé pour l'identification et la distribution de clés au travers des réseaux) pour permettre aux mobiles de se connecter aux hotsposts spécifiques. C'est la carte SIM qui s'authentifie sur le réseau, ce qui explique qu'il faut avoir un mobile compatible avec ce protocole pour pouvoir bénéficier du service.

bonjour,

merci de ta réponse Lesept
a l'endroit ou je compte mettre ma carte il n'y pas de signal GSM l'idée d'utiliser wififreesecure(l'EAP SIM) avec une carte GSM est une bonne solution,
néanmoins mise a part mon ignorance en programmation je ne voix aucune raison pour laquelle il ne serais pas possible de se connecter au réseaux hotspot freewifi
la carte ESP8266 peux s'identifier sur un site HTTP:80 HTTPS:443 login pass submit
a ce jour via mon wifi je me connecte a des pages web récupéré des variables modifie une base sql
envoi des notification a mon mobile...
je n'ai pas essayer de me connecté a un hotspot sfr
mais j'arrive a me connecté as un hotspot de camping ou d’hôtel
donc je ne pense pas que ce soit impossible peut être plus compliqué

C'est quoi cette ligne ?

Serial.print("wget -O - --post-data="login=$LOGIN&password=$PASSWORD" "https://wifi.free.fr/Auth")

Je m'inspirerais de ça :

merci tahitibob35

c’est le bout de prog que j’ai adapter pour faire des notications (sms)
et me connecter au hotspot hotel,camping cela fonctionne très bien

j’ai bien essayer de l’utiliser pour me connecter au hotspot wifi free la connexion jusqu’à certificate matches fonctionne mais le problème c’est que le GET OU le POST ne prenne pas ???
j’ai donc essayer adapter Wget mais rien ne fonctionne
https://doc.ubuntu-fr.org/freewifi

De mémoire ils utilisent un Captive Portal. regardez ce genre de truc ou celui là (ou cherchez « ESP8266 Captive Portal arduino»)

Bonjour tous le monde,
j'ai résolu mon problème
je me suis posé plein de question et ne mettais de point interrogation ?????

url=/Auth?login=monmogin&password=monpassword&submit=Valider
client.print(String("POST ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n");
en espérant que ça serve a d'autre merci et a+

Cool... évitez d’utiliser la classe String

Ce code fait la même chose sans surcharger la mémoire en allocations dynamiques

client.print(F("POST "));
client.print(F(“/Auth?login=monmogin&password=monpassword&submit=Valider  HTTP/1.1\r\nHost: ”));
client.println(host);
client.println(F("User-Agent: BuildFailureDetectorESP8266\r\nConnection: close\r\n"));

Vous êtes sûr que c’est un POST et pas un GET ?

Bonjour Cdlnd,

Je voudrais essayer la même chose avec les hotspots d'un autre fournisseur. Pourriez-vous poster le code complet (sauf les identifiants bien entendu...) ?
Merci d'avance et bonne bidouille,

MicroQuettas

bonjour,
si cela peux servir il n y’a pas besoin de toute c’est library et on peu surement retirer des ligne inutile
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <TimeLib.h>
#include <WiFiClientSecure.h>
#include <EEPROM.h>

const char* ssid = “FreeWifi”;
const char* password ="";
const char* host = “wifi.free.fr”;
const int httpPort = 80;
const int httpsPort = 443;
WiFiUDP ntpUDP;
WiFiServer server(6);
// Use web browser to view and copy // SHA1 fingerprint of the certificate
const char* fingerprint = “18 EB 36 0D AD 38 0D 0E D1 87 8B 09 4D 44 CF 45 38 90 F7 DC”;
NTPClient timeClient(ntpUDP, “0.fr.pool.ntp.org”, 7200, 60000);//7200 en éte et 3600 en hiver
void setup() {
Serial.begin(115200);
Serial.println();
Serial.print("connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println(“connection freewifi”);//défois un peu long
}

Serial.println("");
// Use WiFiClientSecure class to create TLS connection
WiFiClientSecure client;
Serial.print("connecting to ");
Serial.println(host);

while(!client.connect(host, httpsPort)) {
Serial.println(“connection failed”);
delay(1000);
// return;
}
if (!client.connect(host, httpsPort)) {
Serial.print(".");
}else{Serial.println(“connection au site ok”);}

String url = “/Auth?login=login&password=password&submit=Valider”;

Serial.print("requesting URL: ");
Serial.println(url);

client.print(String("POST “) + url + " HTTP/1.1\r\n” +
"Host: " + host + “\r\n” +
“User-Agent: BuildFailureDetectorESP8266\r\n” +
“Connection: close\r\n\r\n”);

while (client.connected()) {
String line = client.readStringUntil(’\n’);
if (line == “\r”) {
Serial.println(“headers received”);
break;
}
}
timeClient.update();//HORLOGE
timeClient.begin();//HORLOGE
timeClient.update();
Serial.println(“closing connection”);
}

void loop() {
WiFiClientSecure client;
timeClient.begin();
timeClient.update();

Serial.println(timeClient.getFormattedTime());
delay(1000);
Serial.println("Use this URL to connect: ");

Serial.println(WiFi.localIP());
String request = client.readStringUntil(’\r’);
Serial.println(request);
client.flush();
}

Merci beaucoup.

Je vais essayer d'adapter pour les hotspots de mon fournisseur... et je le posterai en retour.
Bonne soirée

MicroQuettas

Bonjour Cdlnd,

Es-tu parvenu à te connecter EFFECTIVEMENT sur *Freewifi ?

En compilant ton code, j'ai des erreurs de librairies (timelib.h et jsonlistener.h) ...

D'autre part, comment obtenir la signature 'fingerprint' ?
Est-elle spécifique à chaque hotspot FreeWifi ou est-elle unique pour tous les hostspots FreeWifi ?

Merci

Pour le fingerprint cf How to View a Certificate Fingerprint as SHA-256, SHA-1 or MD5 using OpenSSL par exemple et plus d’info pratique peut être aussi lue ici (How to Verify Server's Identity? Et Get the Fingerprint)

Le POST versus GET me laisse très dubitatif

@J-M-L :
ton premier lien ne marche pas, le second est OK, je vais essayer d’utiliser ce dernier pour copier-coller la signature du hotspot FreeWifi

Sinon, j’ai finalement réussi à trouver les bons .ZIP et à installer les bonnes librairies pour compiler le programme :
time-master.zip pour timelib.h
et
json-streaming-parser-master.zip pour jsonlistener.h

Toutefois, à la compilation, une autre erreur apparait maintenant :

test_free:21: error: no matching function for call to 'NTPClient::NTPClient(WiFiUDP&, const char [18], int, int)'
NTPClient timeClient(ntpUDP, “0.fr.pool.ntp.org”, 7200, 60000);//7200 en été et 3600 en hiver

Any help ?

Bizarre le lien marche pour moi…

Pour NTP faut trouver la bonne librairie vu le #include <NTPClient.h>

sans doute un truc comme ça

Bonkour à tous,

La structure de la requête est clairement celle d'une GET. Donc, si le serveur fait son travail complètement, il ne devrait pas y répondre ??
Si je comprends bien le code, l'accès au serveur temps NTP vient après la connexion, pour verifier qu'elle est bien établie ?
Mais est-on sur qu'il a besoin d'une connexion authentifiée pour demander l'heure à un serveur NTP ?
En d'autres termes, je ne suis également pas sur que ça marche, en plus des pbs de bibliothèques.

A+

MicroQuettas

En d’autres termes, je ne suis également pas sur que ça marche, en plus des pbs de bibliothèques.

Je suis assez d’accord avec toi, MicroQuettas.

Par ailleurs où doit-on rentrer les identifiants de connexion dans le sketch ?

Une authentification FreeWifi consiste en 2 étapes et 2 saisies :

  • étape 1 :
  • accès au SSID FreeWifi ou FreeWifi_Secure
  • étape 2 :
  • saisie du code freewifi
  • saisie du password

Comment tout ceci s’articule t’il dans le sketch ?