PowerTGS440

LESZEK_ESP8266

Apr 17th, 2021
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.86 KB | None | 0 0
  1. //********************************************************************************************************************
  2. //
  3. //
  4. //
  5. //
  6. //
  7. //
  8. //********************************************************************************************************************
  9.  
  10. #include <Arduino_JSON.h>
  11. #include "painlessMesh.h"
  12.  
  13. #define MESH_PREFIX "ESP_Root"
  14. #define MESH_PASSWORD "ESP_Root"
  15. #define MESH_PORT 5555
  16.  
  17. //********************************************************************************************************************
  18. //
  19. // O B I E K T Y
  20. //
  21. //********************************************************************************************************************
  22.  
  23. Scheduler userScheduler;
  24. painlessMesh mesh;
  25.  
  26. JSONVar JSON_msg;
  27.  
  28. //********************************************************************************************************************
  29. //
  30. // P R O T O T Y P Y
  31. //
  32. //********************************************************************************************************************
  33.  
  34. void sendMessage();
  35. void getTime(); // poproś o czas NTP z MESH-ROOT HH:MM:SS
  36. void getTimeHM(); // poproś o czas NTP z MESH-ROOT HH:MM
  37. void getDate(); // poproś o datę NTP z MESH-ROOT DD.MM.YYYY
  38. void getDatePL(); // poproś o datę NTP z MESH-ROOT DD miesiac YYYY
  39. void getRoot(); // poproś ROOT kto tu rządzi
  40.  
  41. //********************************************************************************************************************
  42. //
  43. // T A S K O B I E K T Y
  44. //
  45. //********************************************************************************************************************
  46.  
  47. Task taskgetTime ( TASK_SECOND * 60, TASK_FOREVER, &getTime );
  48. Task taskgetTimeHM ( TASK_SECOND * 60, TASK_FOREVER, &getTimeHM );
  49. Task taskgetDate ( TASK_SECOND * 90, TASK_FOREVER, &getDate );
  50. Task taskgetDatePL ( TASK_SECOND * 90, TASK_FOREVER, &getDatePL );
  51. Task taskgetRoot ( TASK_SECOND * 90, TASK_FOREVER, &getRoot );
  52.  
  53.  
  54. //********************************************************************************************************************
  55. //
  56. // S T R U K T U R Y
  57. //
  58. //********************************************************************************************************************
  59.  
  60. struct ZEGAR
  61. {
  62. String SformatowanyCzas = ""; // czas HH:MM:SS
  63. String SformatowanyCzasHM = ""; // czas HH:MM
  64. String SformatowanaData = ""; // data DD.MM.RRRR
  65. String SformatowanaDataPL = ""; // data DD miesiac RRRR
  66. }
  67. zegar;
  68.  
  69. String root = "";
  70.  
  71. //*********************************************************************************************************************
  72. //
  73. // T A S K F U N K C J E
  74. //
  75. //*********************************************************************************************************************
  76.  
  77. void getTime()
  78. {
  79. String msg;
  80. msg = "{\"ID\":2229645491,\"CODE\":1001}"; // msg do wysłania (kod 1001) - ządanie czasu
  81. mesh.sendBroadcast( msg ); // wyślij żądanie do serwera
  82. taskgetTime.setInterval( TASK_SECOND * 60 ); // wykonuj co 60 sekund
  83. }
  84.  
  85. void getTimeHM()
  86. {
  87. String msg;
  88. msg = "{\"ID\":2229645491,\"CODE\":1002}"; // msg do wysłania (kod 1002) - ządanie czasu
  89. mesh.sendBroadcast( msg ); // wyślij żądanie do serwera
  90. taskgetTime.setInterval( TASK_SECOND * 59 ); // wykonuj co 60 sekund
  91. }
  92.  
  93. void getDate()
  94. {
  95. String msg;
  96. msg = "{\"ID\":2229645491,\"CODE\":1011}"; // msg do wysłania (kod 1002) - żadanie daty
  97. mesh.sendBroadcast( msg ); // wyślij żądanie do serwera
  98. taskgetDate.setInterval( TASK_SECOND * 600 ); // wykonuj co godzinę
  99. }
  100.  
  101. void getDatePL()
  102. {
  103. String msg;
  104. msg = "{\"ID\":2229645491,\"CODE\":1012}"; // msg do wysłania (kod 1002) - żadanie daty
  105. mesh.sendBroadcast( msg ); // wyślij żądanie do serwera
  106. taskgetDate.setInterval( TASK_SECOND * 90 ); // wykonuj co
  107. }
  108.  
  109. void getRoot()
  110. {
  111. String msg;
  112. msg = "{\"ID\":2229645491,\"CODE\":0000}"; // msg do wysłania (kod 0000) - pytanie do ROOT
  113. mesh.sendBroadcast( msg ); // wyślij żądanie do serwera
  114. taskgetDate.setInterval( TASK_SECOND * 120 ); // wykonuj co
  115. }
  116.  
  117.  
  118.  
  119.  
  120. //*********************************************************************************************************************
  121. //
  122. // M E S H - receiver Callback
  123. //
  124. //*********************************************************************************************************************
  125.  
  126. void receivedCallback( uint32_t from, String &msg )
  127. {
  128. Serial.printf("\n[ESP] [otrzymałem od] %u [wiadomość JSON] %s", from, msg.c_str());
  129.  
  130. JSON_msg = JSON.parse(msg);
  131. int code = JSON_msg["CODE"];
  132.  
  133. switch(code)
  134. {
  135. case 0000 : root = JSON_msg["ROOT"];
  136. Serial.printf("\n[ESP] [ROOT MSG] = %s", root.c_str());
  137. Serial.printf(" [Moje ID] %u", from );
  138. break;
  139.  
  140. case 1001 : zegar.SformatowanyCzas = JSON_msg["CZAS"];
  141. Serial.printf("\n[ESP] [struct ZEGAR -> zegar.SformatowanyCzas] = %s", zegar.SformatowanyCzas.c_str());
  142. break;
  143.  
  144. case 1002 : zegar.SformatowanyCzasHM = JSON_msg["CZAS"];
  145. Serial.printf("\n[ESP] [struct ZEGAR -> zegar.SformatowanyCzas] = %s", zegar.SformatowanyCzasHM.c_str());
  146. break;
  147.  
  148. case 1011 : zegar.SformatowanaData = JSON_msg["DATA"];
  149. Serial.printf("\n[ESP] [struct ZEGAR -> zegar.SformatowanaData] = %s", zegar.SformatowanaData.c_str());
  150. break;
  151.  
  152. case 1012 : zegar.SformatowanaDataPL = JSON_msg["DATA"];
  153. Serial.printf("\n[ESP] [struct ZEGAR -> zegar.SformatowanaDataPL] = %s", zegar.SformatowanaDataPL.c_str());
  154. break;
  155.  
  156. default : Serial.printf("\n[ESP] [otrzymałem od] %u [niezidentyfikowano] %s\n", from, msg.c_str()); break;
  157. }
  158. }
  159.  
  160. //*********************************************************************************************************************
  161. //
  162. // M E S H - cknewConnectionCallback
  163. //
  164. //*********************************************************************************************************************
  165.  
  166. void newConnectionCallback(uint32_t nodeId)
  167. {
  168. Serial.printf("\n[ESP] [Serwer ID] = %u", nodeId);
  169. }
  170.  
  171. //*********************************************************************************************************************
  172. //
  173. // M E S H - changedConnectionCallback
  174. //
  175. //*********************************************************************************************************************
  176.  
  177. void changedConnectionCallback()
  178. {
  179. Serial.printf("\n[ESP] zmieniam połączenie");
  180. }
  181.  
  182. //*********************************************************************************************************************
  183. //
  184. // M E S H - nodeTimeAdjustedCallback
  185. //
  186. //*********************************************************************************************************************
  187.  
  188. void nodeTimeAdjustedCallback(int32_t offset)
  189. {
  190. Serial.printf("\n[ESP] [Skorygowany czas] %u. Offsetowy = %d", mesh.getNodeTime(),offset);
  191. }
  192.  
  193. //*********************************************************************************************************************
  194. //
  195. // S E T U P
  196. //
  197. //*********************************************************************************************************************
  198.  
  199. void setup()
  200. {
  201. Serial.begin(115200);
  202.  
  203. //mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE );
  204. //mesh.setDebugMsgTypes( ERROR | STARTUP );
  205.  
  206. mesh.init( MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT );
  207. mesh.onReceive(&receivedCallback);
  208. mesh.onNewConnection(&newConnectionCallback);
  209. mesh.onChangedConnections(&changedConnectionCallback);
  210. mesh.onNodeTimeAdjusted(&nodeTimeAdjustedCallback);
  211.  
  212. userScheduler.addTask( taskgetTime );
  213. userScheduler.addTask( taskgetTimeHM );
  214. userScheduler.addTask( taskgetDate );
  215. userScheduler.addTask( taskgetDatePL );
  216. userScheduler.addTask( taskgetRoot );
  217.  
  218. taskgetTime.enable();
  219. taskgetTimeHM.enable();
  220. taskgetDate.enable();
  221. taskgetDatePL.enable();
  222. taskgetRoot.enable();
  223. }
  224.  
  225. //*********************************************************************************************************************
  226. //
  227. // L O O P
  228. //
  229. //*********************************************************************************************************************
  230.  
  231. void loop()
  232. {
  233. mesh.update();
  234. }
  235.  
Advertisement
Add Comment
Please, Sign In to add comment