Page 1 of 1

Cannot connect to NTP server with fixed IP

Posted: Mon May 13, 2019 1:31 pm
by lesept
Hi
I usually use the sketch from here https://lastminuteengineers.com/esp32-n ... -tutorial/ to get the time via NTP. But when I use a fixed IP for my ESP32, the connexion to the NTP server doesn't work anymore.

Here is the modified sketch: the fixed IP part works in any other conditions.

Code: Select all

#include <WiFi.h>
#include "time.h"

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

// **** These lines added :
//Static IP address configuration
IPAddress staticIP(192, 168, 0, 51); //ESP32 static ip
IPAddress gateway(192, 168, 0, 254); //IP Address of WiFi Router
IPAddress subnet(255, 255, 255, 0);  //Subnet mask
IPAddress dns(192, 168, 0, 254);     //DNS
// *** up to here

const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 3600;
const int   daylightOffset_sec = 3600;

void printLocalTime()
{
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    Serial.println("Failed to obtain time");
    return;
  }
  Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}

void setup()
{
  Serial.begin(115200);

  //connect to WiFi
  Serial.printf("Connecting to %s ", ssid);

// **** These lines added :
  WiFi.mode(WIFI_OFF);
  WiFi.config(staticIP, dns, gateway, subnet);
  WiFi.mode(WIFI_STA); //WiFi mode station (connect to wifi router only)
  delay(100);
// *** up to here

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" CONNECTED");
  Serial.print("WiFi connected - IP address: ");
  Serial.println(WiFi.localIP());

  //init and get the time
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  printLocalTime();

  //disconnect WiFi as it's no longer needed
  WiFi.disconnect(true);
  WiFi.mode(WIFI_OFF);
}

void loop()
{
  delay(1000);
  printLocalTime();
}
I get :
Connecting to ***.. CONNECTED
WiFi connected - IP address: 192.168.0.51
Failed to obtain time
What is wrong? Thanks for your help.

Re: Cannot connect to NTP server with fixed IP

Posted: Mon May 13, 2019 8:16 pm
by martinayotte
lesept wrote:
Mon May 13, 2019 1:31 pm

Code: Select all

IPAddress dns(192, 168, 0, 254);     //DNS
Is this DNS really able to resolve it ?
Is this address of your router ?
Doesn't have external DNS enabled ?
Did you tried using 8.8.8.8 as the DNS ?

Re: Cannot connect to NTP server with fixed IP

Posted: Mon May 13, 2019 9:57 pm
by boarchuz
Reorder the parameters in config:

Code: Select all

bool WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1, IPAddress dns2)

Re: Cannot connect to NTP server with fixed IP

Posted: Tue May 14, 2019 8:09 am
by lesept
@martinayotte : Actually, I don't know. How can I find this information?
@boarchuz : I'll try to change the order. Thanks

Re: Cannot connect to NTP server with fixed IP

Posted: Tue May 14, 2019 3:15 pm
by martinayotte
lesept wrote:
Tue May 14, 2019 8:09 am
@martinayotte : Actually, I don't know. How can I find this information?
If on your PC, the DNS is the same 192.168.0.254, then try to ping "pool.ntp.org" from the PC.
If it is not working there too, then your router is misconfigured.
As I said, try using 8.8.8.8 as DNS, it should work ...

Re: Cannot connect to NTP server with fixed IP

Posted: Thu May 16, 2019 12:43 pm
by lesept
martinayotte wrote:
Tue May 14, 2019 3:15 pm
As I said, try using 8.8.8.8 as DNS, it should work ...
Changed the order of the parameters in the config. Changed the DNS to 8.8.8.8.
It works now, thanks a lot!

Re: Cannot connect to NTP server with fixed IP

Posted: Mon Jul 01, 2019 4:57 pm
by SlemiELK
Hi!

I also had problems with this. The following code solved it:
IPAddress ip(*,*,*,*);
IPAddress gateway(*,*,*,*,);
IPAddress subnet(*,*,*,*);
IPAddress dns1(*,*,*,*);
IPAddress dns2(*,*,*,*);
WiFi.config(ip, gateway, subnet, dns1, dns2); //This is important! Include dns1 and dns2 when configuring!
enter your configuration where there are *
Regards!

Re: Cannot connect to NTP server with fixed IP

Posted: Sat Jul 09, 2022 10:50 pm
by Viafx24
Agree with the last comment but i did not need to add two dns (dns1 and dns2). Only one dns. (Dns appears to be a thing needed to allow the esp to go on internet and looks to be often the same than the gateway; at least in my case it is the same i.e 192.168.1.1). THUS, the MAIN POINT was to put dns at the end of the parameters of Wifi.config. It looks like the order matters. I dont know why but when dns was placed just after staticIP, it failed to work for me. Cheers.

Working code for me:

Code: Select all

IPAddress local_IP(192, 168, 1, 24);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 1, 1); //needed to go on internet

WiFi.config(staticIP,  gateway, subnet, dns);