ESP12 Wifi client - Erreur quand on utilise ip à la place de domaine

Hello.
Sur un esp12, j'ai un souci de code.

Si je fais un if (http.begin(client, urlToCall)) avec urlToCall ="http://trucmachin.fr/masuperpage.php" ca fonctionne...

Sauf que pour les besoins de dev je code sur un serveur en local sur l'ip 10.x.x.99 et que si je fais urlToCall ="http://10.x.x.99/masuperpage.php" ca me retourne un code erreur http -1 avec :
int httpCode = http.GET();
if (httpCode > 0) {

Bref, j'ai testé avec le fichier exemple et ca ne fonctionne pas quand on met une IP à la place d'un domaine.
C'est que chez moi ou y a un "truc" ??

Et si vous tapez http://10.x.x.99/masuperpage.php dans un navigateur web qui est sur le même réseau wifi que votre esp12, ça fonctionne ?

Comment est configuré le réseau sur l’esp ?

Oui tout fonctionne, j'ai tout vérifié, et l'esp connecté (WiFi.status() = WL_CONNECTED) sur le même réseau et même range IP que le serveur.

Comment est configuré le réseau sur l'esp ?

C'est à dire ?

Juste pour préciser; je charge l'exemple BasicHttpClient; avec un nom de domaine, ca fonctionne, j'ai bien le retour HTML dans le Serial, mais si je met l'IP du serveur ca ne fonctionne plus.
Retour sur Serial = [HTTP] GET... failed, error: connection failed

Sachant que le serveur fonctionne nickel; la page s'ouvre bien dans un navigateur.

IP fixe ? DNS ? routeur ? Quel code est utilisé pour rejoindre le réseau ?

Quand la page s’ouvre, est-ce que la connexion est passée en https ?

Serveur configuré en IP fixe sur le routeur, en filaire.
adresse ip donné à l'esp par le routeur par DHCP sur le meme range 10.x.x.50~255

Le code, ben meme celui de l'exemple ne fonctionne pas .... sauf si j'utilise un nom de domaine :-/

Edit: Non, pas de https...

Donnez les infos exactes... vous ne révélez rien de secret avec une IP en 10.xxxx

Est-ce que l’ip et la gateway sont sur le même subnet ?

Oui, evidemment, même subnet ^^
Et heu... oui c'est de l'IP local donc je sais pas pourquoi j'ai caché... un reflexe sans doute ^^'

J'ai activé le debug (wifi) de l'esp sur le serial et ca me sors cette erreur:
[hostByName] Host: 10.0.0.45 is a IP!

Edit: j'ai testé sur plusieurs serveurs... donc l'IP du serveur "peut" changer sur le code que je poste.

Pouvez vous poster exactement le code utilisé ? (Est-ce 100% celui là avec juste une modification de l’URL ?)

Poster ? Non, puisque oui, je viens de tester avec ce code, en changeant l'accès en ligne 35.

Avec la ligne 48 d'origine, c'est ok.
Si je change la ligne 48 avec:
if (http.begin(client, "http://10.0.0.45/index.php")) { // HTTP
ou
fichier html créé pour l'occasion....
if (http.begin(client, "http://10.0.0.45/index.html")) { // HTTP

Ca ne fonctionne plus...

J'ai activé le DEBUG http et j'ai ça qui défile sans le serial:

[HTTP] begin...
[HTTP-Client][begin] url: http://10.0.0.45/index.php
[HTTP-Client][begin] host: 10.0.0.45 port: 80 url: /index.php
[HTTP] GET...
[HTTP-Client][sendRequest] type: 'GET' redirCount: 0
[HTTP-Client] failed connect to 10.0.0.45:80
[HTTP-Client][returnError] error(-1): connection failed
[HTTP] GET... failed, error: connection failed
[HTTP-Client][end] tcp is closed
[HTTP] begin...
[HTTP-Client][begin] url: http://10.0.0.45/index.php
[HTTP-Client][begin] host: 10.0.0.45 port: 80 url: /index.php
[HTTP] GET...
[HTTP-Client][sendRequest] type: 'GET' redirCount: 0

EDIT: je vais me coucher, je sature, ca fait des heures que je suis bloqué à m'arracher les cheveux -_-
Bonne nuit et merci ^^

On dirait que C’est votre serveur web local qui refuse la connexion
Je n’ai pas vu le

[hostByName] Host: 10.0.0.45 is a IP!

que vous aviez mentionné

Bonne nuit

Hello.
Faites des gosses, faut les conduires à l’école… faut se lever… pfffffffffffffffff -_-
Bref :smiley:

Le hostbyname host is a ip est retourné quand j’active le debug wifi uniquement.

J'ai uniquement un souci avec les IP locales.
car http.begin("http://216.58.201.227/") fonctionne ... (ip de google.fr)

Avez vous moyen de voir ce que reçoit votre serveur web ? Lequel utilisez vous ? Sur quelle plateforme ? Si vous prenez votre smartphone en wifi sur le réseau comme l’ESP - est-ce que l’IP fonctionne dans un navigateur web ?

(Pour les enfants - c’est fait depuis très longtemps :slight_smile: )

Rien que ce code également:

#include <ESP8266WiFi.h>

const char* ssid = "*********";
const char* password = "**************";

const char* host = "10.0.0.45"; ////// FONCTIONNE PAS
//const char* host = "google.fr"; ////// FONCTIONNE


void setup()
{
  Serial.begin(38400);
  Serial.println();

  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" connected");
}


void loop()
{
  WiFiClient client;

  Serial.printf("\n[Connecting to %s ... ", host);
  if (client.connect(host, 80))
  {
    Serial.println("connected]");

    Serial.println("[Sending a request]");
    client.print(String("GET /") + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n" +
                 "\r\n"
                );

    Serial.println("[Response:]");
    while (client.connected() || client.available())
    {
      if (client.available())
      {
        String line = client.readStringUntil('\n');
        Serial.println(line);
      }
    }
    client.stop();
    Serial.println("\n[Disconnected]");
  }
  else
  {
    Serial.println("connection failed!]");
    client.stop();
  }
  delay(5000);
}

Sur un smartphone connecté en wifi, la page s’affiche, aucun souci.

Et oui, j’ai accès root sur tous mes serveurs donc je peux voir…
Et un tail -f /var/log/apache2/access.log ne me montre aucune activité lors des tentatives de connexion de l’ESP.

J’ai déjà fait pleins de projets avec ce code; je n’ai jamais eu aucun souci mais j’avais mes serveurs hebergés chez online.
J’ai acheté des serveurs dédiés pour les installer à la maison maintenant vu qu’on a la fibre et ça me coute nettement moins cher du coup ^^
Et donc là c’est la première fois que j’utilise une IP locale, et ça ne fonctionne pas…

Vous avez un DNS local ? Si vous donnez un nom au serveur local est-ce que ça fonctionne ?

Avez vous essayé sans Multi AP et juste avec un code de base de connexion à votre borne en passant la config et en envoyant une requête « à la main » ?

Je deviens chèvre -_- ........................
Bref, oui ca marche impecc sur smartphone, je viens de tester en changeant la page d'index pour etre sûr

PS: le serveur local a déjà un nom, et non pas de DNS local (du moins je ne pense pas, faut que je vois la config du routeur mais les DNS sont sur ceux de google, de mémoire....)

PS2: j'ai essayé avec la boucle locale (127.0.0.1:8080) avec un easyphp (BEEEEEEEEEERK lol ) installé à l'arraché, et idem, ca veut pas.....

Je viens d’essayer avec l’interface serie et des commandes AT+ à la main.
Il n’arrive pas à joindre l’ip d’après ce que je vois…
A croire qu’il croit (ouch c’est français c’te phrase ???) que 10.0.0.45 est un nom de domaine exterieur…

C’est bizarre en effet...

Avec Le code posté en #14 en changeant l’URL

 client.print(String("GET /index.php") + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n" +
                 "\r\n"
                );

ca affiche quoi dans la console et le log web?

Éventuellement essayez avec un WiFi.config() en plus pour coder en dur les infos réseau

Bon, je suis con, le 127.0.0.1 est le local du pc, normal que ca donne rien sur l’esp -_-

Donc en debug actif sur serial+ le code et:
host = google.fr:

connected with *********SSID********, channel 3
dhcp client start...
wifi evt: 0
ip:10.0.0.53,mask:255.255.255.0,gw:10.0.0.1
wifi evt: 3
. connected

[Connecting to google.fr ... [hostByName] request IP for: google.fr
[hostByName] Host: google.fr IP: 216.58.206.227
:ref 1
connected]
[Sending a request]
:wr 54 0
:wrc 54 54 0
[Response:]
:ack 54
:rn 536
:rch 536, 9
:rcl pb=0x3ffefcbc sz=545
HTTP/1.1 301 Moved Permanently

Location: http://www.google.fr/

Content-Type: text/html; charset=UTF-8

Date: Fri, 15 Jan 2021 09:29:41 GMT

Expires: Sun, 14 Feb 2021 09:29:41 GMT

Cache-Control: public, max-age=2592000

Server: gws

Content-Length: 218

X-XSS-Protection: 0

X-Frame-Options: SAMEORIGIN

Connection: close



<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.fr/">here</A>.

:c 1, 536, 545
:c0 1, 9
</BODY></HTML>

:close

[Disconnected]

host=10.0.0.45

connected with ***toujours le meme SSID*****, channel 3
dhcp client start...
wifi evt: 0
.....ip:10.0.0.53,mask:255.255.255.0,gw:10.0.0.1
wifi evt: 3
. connected

[Connecting to 10.0.0.45 ... [hostByName] Host: 10.0.0.45 is a IP!
:ref 1
:ctmo
:abort
:ur 1
:dsrcv 0
:del
connection failed!]

Niveau log web serveur, rien, aucun accès logué. Si j’accède avec le pc ou le tél, ça log bien avec le user agent et tout le tintouin.

Un wifi config n’a rien changé non plus :-/