Go Down

Topic: Connecter un esp8266 au HOTSPOT FREEWIFI (Read 629 times) previous topic - next topic

cdlnd

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

Leptro

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.



cdlnd

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" "https://wifi.free.fr/Auth")

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


lesept

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.

cdlnd

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é

 

 

 

tahitibob35

C'est quoi cette ligne ?
Code: [Select]
Serial.print("wget -O - --post-data="login=$LOGIN&password=$PASSWORD" "https://wifi.free.fr/Auth")


cdlnd

merci tahitibob35
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino
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

J-M-L

#8
Nov 17, 2017, 06:09 am Last Edit: Nov 17, 2017, 06:11 am by J-M-L
De mémoire ils utilisent un Captive Portal. regardez ce genre de truc ou celui là (ou cherchez « ESP8266 Captive Portal arduino»)
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

cdlnd

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+

J-M-L

#10
Nov 17, 2017, 06:42 am Last Edit: Nov 17, 2017, 06:46 am by J-M-L
Cool... évitez d'utiliser la classe String

Ce code fait la même chose sans surcharger la mémoire en allocations dynamiques
Code: [Select]
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 ?
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

MicroQuettas

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

cdlnd

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();
}

MicroQuettas

Merci beaucoup.

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

MicroQuettas

ym58

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

Go Up