Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //********************************************************************************************************************
- //
- // DarkNet ESP-01S Sensor v0.02 BETA IN-SENSOR
- // by Tomasz Majcher (TLG)
- //
- // IN-Sensor wysyła : ID : IN_Sensor, CODE: 1120
- //
- //********************************************************************************************************************
- #include <Arduino_JSON.h>
- #include "painlessMesh.h"
- #include <DHT.h>
- #define MESH_PREFIX "ESP_Root"
- #define MESH_PASSWORD "ESP_Root"
- #define MESH_PORT 5555
- #define DHTPIN 2
- #define DHTTYPE DHT11 // DHT 11
- DHT dht(DHTPIN, DHTTYPE);
- double myTemperature;
- double myHumidity;
- //********************************************************************************************************************
- //
- // O B I E K T Y
- //
- //********************************************************************************************************************
- Scheduler userScheduler;
- painlessMesh mesh;
- JSONVar JSON_msg;
- //********************************************************************************************************************
- //
- // P R O T O T Y P Y
- //
- //********************************************************************************************************************
- void sendSensor(); // poproś o czas NTP z MESH-ROOT HH:MM
- //********************************************************************************************************************
- //
- // T A S K O B I E K T Y
- //
- //********************************************************************************************************************
- Task sendSensorTask ( TASK_SECOND * 60, TASK_FOREVER, &sendSensor ); // wysyłaj co minutę do sieci MESH
- //********************************************************************************************************************
- //
- // S T R U K T U R Y
- //
- //********************************************************************************************************************
- //*********************************************************************************************************************
- //
- // T A S K F U N K C J E
- //
- //*********************************************************************************************************************
- void sendSensor()
- {
- String msg;
- double tempT = dht.readTemperature();
- myTemperature = tempT - (tempT * 0.25); // kalibracja Temperatury
- double tempH = dht.readHumidity();
- myHumidity = tempH + (tempH * 0.19); // kalibarcja Wilgotności
- msg = "{\"ID\":\"IN_Sensor\",\"CODE\":1120,\"TEMP\"," + String(myTemperature) + ",\"HUM\"," + String(myHumidity) + "}";
- mesh.sendBroadcast( msg ); // wyślij dane do całej sieci MESH
- sendSensorTask.setInterval( TASK_SECOND * 60 ); // wykonuj co 60 sekund
- }
- //*********************************************************************************************************************
- //
- // M E S H - receiver Callback
- //
- //*********************************************************************************************************************
- void receivedCallback( uint32_t from, String &msg )
- {
- Serial.printf("\n[ESP] [otrzymałem od] %u [wiadomość JSON] %s", from, msg.c_str());
- JSON_msg = JSON.parse(msg);
- int code = JSON_msg["CODE"];
- double tempT = dht.readTemperature();
- myTemperature = tempT - (tempT * 0.25); // kalibracja Temperatury
- double tempH = dht.readHumidity();
- myHumidity = tempH + (tempH * 0.19); // kalibarcja Wilgotności
- String msgc = "{\"ID\":\"IN_Sensor\",\"CODE\":1120,\"TEMP\"," + String(myTemperature) + ",\"HUM\"," + String(myHumidity) + "}";;
- String root;
- switch(code)
- {
- case 0000 : root = JSON_msg["ROOT"];
- Serial.printf("\n[ESP] [ROOT MSG] = %s", root.c_str());
- Serial.printf(" [Moje ID] %u", from );
- break;
- case 1110 : mesh.sendSingle ( from, msgc.c_str());
- break;
- default : Serial.printf("\n[ESP] [otrzymałem od] %u [niezidentyfikowano] %s\n", from, msg.c_str()); break;
- }
- }
- //*********************************************************************************************************************
- //
- // M E S H - cknewConnectionCallback
- //
- //*********************************************************************************************************************
- void newConnectionCallback(uint32_t nodeId)
- {
- Serial.printf("\n[ESP] [Serwer ID] = %u", nodeId);
- }
- //*********************************************************************************************************************
- //
- // M E S H - changedConnectionCallback
- //
- //*********************************************************************************************************************
- void changedConnectionCallback()
- {
- Serial.printf("\n[ESP] zmieniam połączenie");
- }
- //*********************************************************************************************************************
- //
- // M E S H - nodeTimeAdjustedCallback
- //
- //*********************************************************************************************************************
- void nodeTimeAdjustedCallback(int32_t offset)
- {
- Serial.printf("\n[ESP] [Skorygowany czas] %u. Offsetowy = %d", mesh.getNodeTime(),offset);
- }
- //*********************************************************************************************************************
- //
- // S E T U P
- //
- //*********************************************************************************************************************
- void setup()
- {
- Serial.begin(115200);
- //mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE );
- //mesh.setDebugMsgTypes( ERROR | STARTUP );
- mesh.init( MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT );
- mesh.onReceive(&receivedCallback);
- mesh.onNewConnection(&newConnectionCallback);
- mesh.onChangedConnections(&changedConnectionCallback);
- mesh.onNodeTimeAdjusted(&nodeTimeAdjustedCallback);
- userScheduler.addTask( sendSensorTask );
- sendSensorTask.enable();
- dht.begin();
- }
- //*********************************************************************************************************************
- //
- // L O O P
- //
- //*********************************************************************************************************************
- void loop()
- {
- mesh.update();
- }
Advertisement
Add Comment
Please, Sign In to add comment