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