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, 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
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" "Choisissez une offre Fibre ou ADSL sans engagement - 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 :
Comment tout ceci s'articule t'il dans le sketch ?