PowerTGS440

DarkNet ESP-01S IN_Sensor v0.03 BETA

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