{"id":29371,"date":"2021-03-25T10:17:02","date_gmt":"2021-03-25T09:17:02","guid":{"rendered":"http:\/\/alessandrobuzzi.com\/?p=29371"},"modified":"2021-03-25T10:17:02","modified_gmt":"2021-03-25T09:17:02","slug":"arduino-ntp-serial-synch-with-esp8266","status":"publish","type":"post","link":"https:\/\/alessandrobuzzi.com\/?p=29371","title":{"rendered":"Arduino &#8211; NTP serial synch with ESP8266"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Codice per ESP8266<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"http:\/\/alessandrobuzzi.com\/wp-content\/uploads\/2021\/03\/arduino-nodemcu_iaYUQaxYV7.jpeg\" alt=\"\" class=\"wp-image-29372\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\/**\n * https:\/\/lastminuteengineers.com\/esp8266-ntp-server-date-time-tutorial\/ - works!\n *\/\n \n#include &lt;NTPClient.h>\n#include &lt;ESP8266WiFi.h>\n#include &lt;WiFiUdp.h>\n#include&lt;SoftwareSerial.h>\nSoftwareSerial SUART( 4, 5); \/\/SRX  = DPin-D2; STX = DPin-D1\n\n\nconst char *ssid     = \"your-wifi-ssid\";\nconst char *password = \"password\";\n\nconst long utcOffsetInSeconds = 3600;\n\nchar daysOfTheWeek[7][12] = {\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"};\n\n\/\/ Define NTP Client to get time\nWiFiUDP ntpUDP;\nNTPClient timeClient(ntpUDP, \"pool.ntp.org\", utcOffsetInSeconds);\n\n\n\/\/SETUP\nvoid setup(){\n  SUART.begin(115200); \/\/enable SUART Port\n  Serial.begin(115200);\n\/\/wifi\n  WiFi.begin(ssid, password);\n\n  while ( WiFi.status() != WL_CONNECTED ) {\n    delay ( 500 );\n    Serial.print ( \".\" );\n  }\n\n  timeClient.begin();\n   \n}\n\n\/\/LOOP\nvoid loop() {\n  timeClient.update();\n\n  \/\/Serial.print(daysOfTheWeek[timeClient.getDay()]);\n  \/\/Serial.print(\", \");\n  \/\/Serial.print(timeClient.getHours());\n  \/\/Serial.print(\":\");\n  \/\/Serial.print(timeClient.getMinutes());\n  \/\/Serial.print(\":\");\n  \/\/Serial.println(timeClient.getSeconds());\n  \/\/ posso remmare i precedenti\n  Serial.println(timeClient.getFormattedTime()); \/\/ 16:46:32\n  \/\/----Send Temp and Humidity signal to NodeMCU via SUART port----\n  SUART.print(timeClient.getFormattedTime()); \/\/ 16:46:32     \n\n  delay(1000);\n\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Codice per arduino<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">#include&lt;SoftwareSerial.h>\n#include &lt;TimeLib.h>\n\nSoftwareSerial SUART(2, 3); \/\/SRX=Dpin-2; STX-DPin-3\n\/\/-------------------------\nboolean dataSync = false;\nchar unixString[11];\nlong unixTime;\n\/\/--------------------------------------------\n\/\/ definisco pin relay\nint Relay = 4;\nconst int OnHour = 10; \/\/SET TIME TO ON RELAY (24 HOUR FORMAT)\nconst int OnMin = 00;\nconst int OffHour = 19; \/\/SET TIME TO OFF RELAY\nconst int OffMin = 00;\n\/\/--------------------------------------------\nvoid setup()\n{\n  Serial.begin(115200); \/\/enable Serial Monitor\n  SUART.begin(115200); \/\/enable SUART Port\n\n  pinMode(Relay, OUTPUT);\n  digitalWrite(Relay, LOW);\n\n}\n\nvoid loop()\n{\n  \/\/--------\n  char buffer[40];\n   int i = 0;\n\n  \/\/ while the ESP output available, push it\n  \/\/ into the buffer and set the flag true\n  while (SUART.available()) {\n    buffer[i++] = SUART.read();\n    dataSync = true;\n  }\n  \/\/--------\n  \/\/---\n  byte n = SUART.available(); \/\/n != 0 means a character has arrived\n  if (n != 0)\n  {\n    char x = SUART.read();  \/\/read character\n    Serial.print(x);        \/\/show character on Serial Monitor\n    dataSync = true;\n  }\n\n\n  if (dataSync == true) {\n    \/\/if ((buffer[0] == 'U') &amp;&amp; (buffer[1] == 'N') &amp;&amp; (buffer[2] == 'X')) {\n      \/\/ if data sent is the UNX token, take it\n      unixString[0] = buffer[3];\n      unixString[1] = buffer[4];\n      unixString[2] = buffer[5];\n      unixString[3] = buffer[6];\n      unixString[4] = buffer[7];\n      unixString[5] = buffer[8];\n      unixString[6] = buffer[9];\n      unixString[7] = buffer[10];\n      unixString[8] = buffer[11];\n      unixString[9] = buffer[12];\n      unixString[10] = '\\0';\n\n      \/* print the UNX time on the UNO serial\n      Serial.println();\n      Serial.print(\"TIME FROM ESP: \");\n      Serial.print(unixString[0]);\n      Serial.print(unixString[1]);\n      Serial.print(unixString[2]);\n      Serial.print(unixString[3]);\n      Serial.print(unixString[4]);\n      Serial.print(unixString[5]);\n      Serial.print(unixString[6]);\n      Serial.print(unixString[7]);\n      Serial.print(unixString[8]);\n      Serial.print(unixString[9]);\n      Serial.println();\n      *\/\n      \n      unixTime = atol(unixString);\n      \/\/ Synchronize the time with the internal clock\n      \/\/ for external use RTC.setTime();\n      setTime(unixTime);\n      dataSync = false;\n      delay(1000);\n    }\n    \/\/display internal time\n    \/\/digitalClockDisplay();\n    \n    \/\/ ----comando i relay ma non va\n    \/*\n    if(hour() == OnHour &amp;&amp; min() == OnMin){\n    digitalWrite(Relay,HIGH);\n    Serial.println(\"LIGHT ON\");\n    }\n    \n    else if(hour() == OffHour &amp;&amp; min() == OffMin){\n      digitalWrite(Relay,LOW);\n      Serial.println(\"LIGHT OFF\");\n    }\n    *\/\n\n\n    \n}\n\n\/** display time from internal clock\nvoid digitalClockDisplay(){\n  \/\/ digital clock display of the time\n  Serial.print(year());\n  Serial.print(\"-\");\n  if (month() &lt; 10) {\n    Serial.print('0');\n  }\n  Serial.print(month());\n  Serial.print(\"-\");\n  if (day() &lt; 10) {\n    Serial.print('0');\n  }\n  Serial.print(day());\n  Serial.print(\" \");\n  \/\/Serial.print(dayOfWeek[weekday()]);\n  Serial.print(' ');\n  if (hour() &lt; 10) {\n    Serial.print('0');\n  }\n  Serial.print(hour());\n  Serial.print(':');\n  if (minute() &lt; 10) {\n    Serial.print('0');\n  }\n  Serial.print(minute());\n  Serial.print(':');\n  if (second() &lt; 10) {\n    Serial.print('0');\n  }\n  Serial.print(second());\n  Serial.println();\n}\n*\/<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Codice per ESP8266 Codice per arduino<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-29371","post","type-post","status-publish","format-standard","hentry","category-arduino"],"acf":[],"_links":{"self":[{"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=\/wp\/v2\/posts\/29371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=29371"}],"version-history":[{"count":0,"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=\/wp\/v2\/posts\/29371\/revisions"}],"wp:attachment":[{"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alessandrobuzzi.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}