PowerTGS440

DarkNet ESP-01S Sensor v0.01 BETA

Apr 20th, 2021
434
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.33 KB | None | 0 0
  1. //********************************************************************************************************************
  2. //
  3. //  DarkNet ESP-01S Sensor v0.01 BETA
  4. //  by Tomasz Majcher (TLG)
  5. //
  6. //
  7. //
  8. //********************************************************************************************************************
  9.  
  10. #include <Arduino_JSON.h>
  11. #include "painlessMesh.h"
  12. #include <DHT.h>
  13.  
  14. #define   MESH_PREFIX     "ESP_Root"
  15. #define   MESH_PASSWORD   "ESP_Root"
  16. #define   MESH_PORT       5555
  17.  
  18. #define DHTPIN            2  
  19. #define DHTTYPE           DHT11     // DHT 11
  20.  
  21.  
  22. DHT dht(DHTPIN, DHTTYPE);
  23.  
  24. double myTemperature;
  25. double myHumidity;
  26.  
  27. //********************************************************************************************************************
  28. //
  29. // O B I E K T Y
  30. //
  31. //********************************************************************************************************************
  32.  
  33. Scheduler userScheduler;
  34. painlessMesh  mesh;
  35.  
  36. JSONVar JSON_msg;
  37.  
  38. //********************************************************************************************************************
  39. //
  40. // P R O T O T Y P Y
  41. //
  42. //********************************************************************************************************************
  43.  
  44. void sendSensor();            // poproś o czas NTP z MESH-ROOT   HH:MM
  45.  
  46. //********************************************************************************************************************
  47. //
  48. //    T A S K   O B I E K T Y
  49. //
  50. //********************************************************************************************************************
  51.  
  52.  
  53. Task sendSensorTask ( TASK_SECOND * 60, TASK_FOREVER, &sendSensor );         // wysyłaj co minutę do sieci MESH
  54.  
  55.  
  56. //********************************************************************************************************************
  57. //
  58. //    S T R U K T U R Y
  59. //
  60. //********************************************************************************************************************
  61.  
  62.  
  63. //*********************************************************************************************************************
  64. //
  65. //    T A S K   F U N K C J E
  66. //
  67. //*********************************************************************************************************************
  68.  
  69.  
  70. void sendSensor()
  71. {
  72.     String msg;
  73.  
  74.     myTemperature = dht.readTemperature();
  75.     myHumidity = dht.readHumidity();      
  76.  
  77.     msg = "{\"ID\":\"Out Sensor\",\"CODE\":1110,\"TEMP\"," + String(myTemperature) + ",\"HUM\"," + String(myHumidity) + "}";
  78.     mesh.sendBroadcast( msg );                           // wyślij żądanie do serwera
  79.     sendSensorTask.setInterval( TASK_SECOND * 59 );         // wykonuj co 60 sekund
  80. }
  81.  
  82.  
  83. //*********************************************************************************************************************
  84. //
  85. //    M E S H - receiver Callback
  86. //
  87. //*********************************************************************************************************************
  88.  
  89. void receivedCallback( uint32_t from, String &msg )
  90. {
  91.     Serial.printf("\n[ESP] [otrzymałem od] %u [wiadomość JSON] %s", from, msg.c_str());
  92.    
  93.     JSON_msg = JSON.parse(msg);
  94.     int code = JSON_msg["CODE"];
  95.  
  96.     String msgc;
  97.     String root;
  98.    
  99.     switch(code)
  100.     {
  101.         case  0000  :   root = JSON_msg["ROOT"];
  102.                        
  103.                         Serial.printf("\n[ESP] [ROOT MSG] = %s", root.c_str());
  104.                         Serial.printf(" [Moje ID] %u", from );                      
  105.                         break;
  106.  
  107.         case  1110  :   msgc = "{\"ID\":\"Out Sensor\",\"CODE\":1110,\"TEMP\"," + String(myTemperature) + ",\"HUM\"," + String(myHumidity) + "}";
  108.                         mesh.sendBroadcast( msgc );                           // wyślij na żądanie do serwera
  109.                         break;
  110.  
  111.        
  112.         default     :   Serial.printf("\n[ESP] [otrzymałem od] %u [niezidentyfikowano] %s\n", from, msg.c_str()); break;
  113.     }
  114. }
  115.  
  116. //*********************************************************************************************************************
  117. //
  118. //    M E S H - cknewConnectionCallback
  119. //
  120. //*********************************************************************************************************************
  121.  
  122. void newConnectionCallback(uint32_t nodeId)
  123. {
  124.     Serial.printf("\n[ESP] [Serwer ID] = %u", nodeId);
  125. }
  126.  
  127. //*********************************************************************************************************************
  128. //
  129. //    M E S H - changedConnectionCallback
  130. //
  131. //*********************************************************************************************************************
  132.  
  133. void changedConnectionCallback()
  134. {
  135.     Serial.printf("\n[ESP] zmieniam połączenie");
  136. }
  137.  
  138. //*********************************************************************************************************************
  139. //
  140. //    M E S H - nodeTimeAdjustedCallback
  141. //
  142. //*********************************************************************************************************************
  143.  
  144. void nodeTimeAdjustedCallback(int32_t offset)
  145. {
  146.     Serial.printf("\n[ESP] [Skorygowany czas] %u. Offsetowy = %d", mesh.getNodeTime(),offset);
  147. }
  148.  
  149. //*********************************************************************************************************************
  150. //
  151. //    S E T U P
  152. //
  153. //*********************************************************************************************************************
  154.  
  155. void setup()
  156. {
  157.   Serial.begin(115200);
  158.  
  159.     //mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE );
  160.     //mesh.setDebugMsgTypes( ERROR | STARTUP );  
  161.  
  162.     mesh.init( MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT );
  163.     mesh.onReceive(&receivedCallback);
  164.     mesh.onNewConnection(&newConnectionCallback);
  165.     mesh.onChangedConnections(&changedConnectionCallback);
  166.     mesh.onNodeTimeAdjusted(&nodeTimeAdjustedCallback);
  167.  
  168.     userScheduler.addTask( sendSensorTask );
  169.     sendSensorTask.enable();
  170.  
  171.     dht.begin();
  172. }
  173.  
  174. //*********************************************************************************************************************
  175. //
  176. //    L O O P
  177. //
  178. //*********************************************************************************************************************
  179.  
  180. void loop()
  181. {
  182.     mesh.update();
  183. }
  184.  
Advertisement
Add Comment
Please, Sign In to add comment