PowerTGS440

DarkNet ESP-01S IN_Sensor v0.02 BETA

Apr 20th, 2021 (edited)
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.71 KB | None | 0 0
  1. //********************************************************************************************************************
  2. //
  3. //  DarkNet ESP-01S Sensor v0.02 BETA IN-SENSOR
  4. //  by Tomasz Majcher (TLG)
  5. //
  6. //  IN-Sensor wysyła : ID : IN_Sensor, CODE: 1120
  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.     double tempT = dht.readTemperature();
  75.     myTemperature = tempT - (tempT * 0.25);   // kalibracja Temperatury
  76.    
  77.     double tempH = dht.readHumidity();
  78.     myHumidity = tempH + (tempH * 0.19);      // kalibarcja Wilgotności
  79.  
  80.     msg = "{\"ID\":\"IN_Sensor\",\"CODE\":1120,\"TEMP\"," + String(myTemperature) + ",\"HUM\"," + String(myHumidity) + "}";
  81.    
  82.     mesh.sendBroadcast( msg );                              // wyślij dane do całej sieci MESH
  83.     sendSensorTask.setInterval( TASK_SECOND * 60 );         // wykonuj co 60 sekund
  84. }
  85.  
  86.  
  87. //*********************************************************************************************************************
  88. //
  89. //    M E S H - receiver Callback
  90. //
  91. //*********************************************************************************************************************
  92.  
  93. void receivedCallback( uint32_t from, String &msg )
  94. {
  95.     Serial.printf("\n[ESP] [otrzymałem od] %u [wiadomość JSON] %s", from, msg.c_str());
  96.    
  97.     JSON_msg = JSON.parse(msg);
  98.     int code = JSON_msg["CODE"];
  99.  
  100.     double tempT = dht.readTemperature();
  101.     myTemperature = tempT - (tempT * 0.25);   // kalibracja Temperatury
  102.    
  103.     double tempH = dht.readHumidity();
  104.     myHumidity = tempH + (tempH * 0.19);      // kalibarcja Wilgotności
  105.  
  106.     String msgc = "{\"ID\":\"IN_Sensor\",\"CODE\":1120,\"TEMP\"," + String(myTemperature) + ",\"HUM\"," + String(myHumidity) + "}";;
  107.     String root;
  108.    
  109.     switch(code)
  110.     {
  111.         case  0000  :   root = JSON_msg["ROOT"];
  112.                        
  113.                         Serial.printf("\n[ESP] [ROOT MSG] = %s", root.c_str());
  114.                         Serial.printf(" [Moje ID] %u", from );                      
  115.                         break;
  116.  
  117.         case  1110  :   mesh.sendSingle ( from, msgc.c_str());                        
  118.                         break;
  119.  
  120.        
  121.         default     :   Serial.printf("\n[ESP] [otrzymałem od] %u [niezidentyfikowano] %s\n", from, msg.c_str()); break;
  122.     }
  123. }
  124.  
  125. //*********************************************************************************************************************
  126. //
  127. //    M E S H - cknewConnectionCallback
  128. //
  129. //*********************************************************************************************************************
  130.  
  131. void newConnectionCallback(uint32_t nodeId)
  132. {
  133.     Serial.printf("\n[ESP] [Serwer ID] = %u", nodeId);
  134. }
  135.  
  136. //*********************************************************************************************************************
  137. //
  138. //    M E S H - changedConnectionCallback
  139. //
  140. //*********************************************************************************************************************
  141.  
  142. void changedConnectionCallback()
  143. {
  144.     Serial.printf("\n[ESP] zmieniam połączenie");
  145. }
  146.  
  147. //*********************************************************************************************************************
  148. //
  149. //    M E S H - nodeTimeAdjustedCallback
  150. //
  151. //*********************************************************************************************************************
  152.  
  153. void nodeTimeAdjustedCallback(int32_t offset)
  154. {
  155.     Serial.printf("\n[ESP] [Skorygowany czas] %u. Offsetowy = %d", mesh.getNodeTime(),offset);
  156. }
  157.  
  158. //*********************************************************************************************************************
  159. //
  160. //    S E T U P
  161. //
  162. //*********************************************************************************************************************
  163.  
  164. void setup()
  165. {
  166.   Serial.begin(115200);
  167.  
  168.     //mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE );
  169.     //mesh.setDebugMsgTypes( ERROR | STARTUP );  
  170.  
  171.     mesh.init( MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT );
  172.     mesh.onReceive(&receivedCallback);
  173.     mesh.onNewConnection(&newConnectionCallback);
  174.     mesh.onChangedConnections(&changedConnectionCallback);
  175.     mesh.onNodeTimeAdjusted(&nodeTimeAdjustedCallback);
  176.  
  177.     userScheduler.addTask( sendSensorTask );
  178.     sendSensorTask.enable();
  179.  
  180.     dht.begin();
  181. }
  182.  
  183. //*********************************************************************************************************************
  184. //
  185. //    L O O P
  186. //
  187. //*********************************************************************************************************************
  188.  
  189. void loop()
  190. {
  191.     mesh.update();
  192. }
  193.  
Advertisement
Add Comment
Please, Sign In to add comment