PowerTGS440

DarkNet ESP-01S OUT_Sensor v0.03 BETA

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