mirror of
				https://github.com/KevinMidboe/TinyGSM.git
				synced 2025-10-29 18:00:18 +00:00 
			
		
		
		
	Add NTP server date time sync function
Add NTPServerSync() function to sync datetime with NTP server.
This commit is contained in:
		@@ -715,6 +715,78 @@ TINY_GSM_MODEM_WAIT_FOR_NETWORK()
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /*
 | 
			
		||||
   * NTP server functions
 | 
			
		||||
   */
 | 
			
		||||
  boolean isValidNumber(String str)
 | 
			
		||||
{
 | 
			
		||||
   boolean isNum = false;
 | 
			
		||||
   if(!(str.charAt(0) == '+' || str.charAt(0) == '-' || isDigit(str.charAt(0)))) return false;
 | 
			
		||||
 | 
			
		||||
   for(byte i=1;i < str.length(); i++)
 | 
			
		||||
   {
 | 
			
		||||
       if(!(isDigit(str.charAt(i)) || str.charAt(i) == '.')) return false;
 | 
			
		||||
   }
 | 
			
		||||
   return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
String ShowNTPError(byte error)
 | 
			
		||||
{
 | 
			
		||||
  switch (error)
 | 
			
		||||
  {
 | 
			
		||||
    case 1:
 | 
			
		||||
      return "Network time synchronization is successful";
 | 
			
		||||
    case 61:
 | 
			
		||||
      return "Network error";
 | 
			
		||||
    case 62:
 | 
			
		||||
      return "DNS resolution error";
 | 
			
		||||
    case 63:
 | 
			
		||||
      return "Connection error";
 | 
			
		||||
    case 64:
 | 
			
		||||
      return "Service response error";
 | 
			
		||||
    case 65:
 | 
			
		||||
      return "Service response timeout";
 | 
			
		||||
    default:
 | 
			
		||||
      return "Unknown error: " + String(error);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
  
 | 
			
		||||
byte NTPServerSync(String server = "pool.ntp.org", byte TimeZone = 3)
 | 
			
		||||
{
 | 
			
		||||
  //Serial.println("Sync time with NTP server.");
 | 
			
		||||
  sendAT(GF("+CNTPCID=1"));
 | 
			
		||||
  if (waitResponse(10000L) != 1) 
 | 
			
		||||
  {
 | 
			
		||||
      //Serial.println("AT command \"AT+CNTPCID=1\" executing fault.");
 | 
			
		||||
      return -1; 
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  String CNTP = "+CNTP=" + server + "," + String(TimeZone);   
 | 
			
		||||
  sendAT(GF(CNTP));
 | 
			
		||||
  if (waitResponse(10000L) != 1) 
 | 
			
		||||
  {
 | 
			
		||||
      //Serial.println("AT command \"" + CNTP + "\" executing fault.");
 | 
			
		||||
      return -1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sendAT(GF("+CNTP"));
 | 
			
		||||
  if (waitResponse(10000L, GF(GSM_NL "+CNTP:")))
 | 
			
		||||
  {
 | 
			
		||||
      String result = stream.readStringUntil('\n');
 | 
			
		||||
      result.trim();
 | 
			
		||||
      if (isValidNumber(result))
 | 
			
		||||
      {
 | 
			
		||||
        return result.toInt();
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
  {
 | 
			
		||||
    //Serial.println("AT command \"+CNTP\" executing fault.");
 | 
			
		||||
    return -1;
 | 
			
		||||
  }  
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  float getTemperature() TINY_GSM_ATTR_NOT_AVAILABLE;
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user