#include #include #include "FS.h" #include "DHT.h" #include // sleep awake is via D0 and RST - make sure you dont use these pins for anything else #define DHTPIN D3 // 4 is d2 digital pin the DHT22 is conected to #define DHTTYPE DHT11 // there are multiple kinds of DHT sensors //#define DHTTYPE DHT11 #define MAX_STRING_LEN 20 DHT dht(DHTPIN, DHTTYPE); //old //DHT dht(DHTPIN, DHTTYPE,11); // Time to sleep (in seconds): int sleepTimeS = 300; // needs wire from d0 to rst on wemod d1 mini // const char* ssid = "WiFi-Repeater"; // const char* password = "bbbbb"; // const char* RIP = "192.168.1.***"; // server udp address // const char* HOSTNAME = "WEMOSDHT22"; char HOSTNAME[] = "WEMOSDHTT22"; // Hostname of this device char ssid[] = "WiFi-Repeater"; char password[] = "bbbbb"; char RIP[] = "192.168.1.1xx"; // server udp address unsigned int UDPPort = 4210; // local UDP port for messages - need this in your server char* ssidP ; char* passwordP ; char* RIPP ; char* HOSTNAMEP ; char packetBuffer[255]; //buffer to hold incoming packet char replyBuffer[] = "acknowledged"; // a string to send back char res1[8]; // Buffer big enough for 7-character float char res2[8]; // Buffer big enough for 7-character float WiFiUDP Udp; void get_spiff_data() { SPIFFS.begin(); File f = SPIFFS.open("/f.txt", "r"); int str_len; // open file for reading if (!f) { Serial.println("file open failed"); return; } Serial.println("====== Reading from SPIFFS file ======="); String s=f.readStringUntil('\n'); Serial.print("Data"); Serial.print(":"); Serial.println(s); // Length (with one extra character for the null terminator) str_len = s.length() + 1; // Copy it over s.toCharArray(HOSTNAME, str_len); // HOSTNAME = *char(s); HOSTNAMEP = HOSTNAME; s=f.readStringUntil('\n'); Serial.print("Data1"); Serial.print(":"); Serial.println(s); // Length (with one extra character for the null terminator) str_len = s.length() + 1; // Copy it over s.toCharArray(ssid, str_len); //ssid = *char(s); s=f.readStringUntil('\n'); Serial.print("Data2"); Serial.print(":"); Serial.println(s); str_len = s.length() + 1; // Copy it over s.toCharArray(password, str_len); //password = s; s=f.readStringUntil('\n'); Serial.print("Data3"); Serial.print(":"); Serial.println(s); str_len = s.length() + 1; // Copy it over UDPPort = s.toInt(); // UDPPort = int(s); s=f.readStringUntil('\n'); Serial.print("Data4"); Serial.print(":"); Serial.println(s); str_len = s.length() + 1; // Copy it over s.toCharArray(RIP, str_len); // RIP = s; s=f.readStringUntil('\n'); Serial.print("Data5"); Serial.print(":"); Serial.println(s); str_len = s.length() + 1; // Copy it over sleepTimeS = s.toInt(); f.close(); } void setup() { Serial.begin(9600); get_spiff_data(); // delay(100); Serial.println(" "); Serial.println(HOSTNAMEP); WiFi.hostname(HOSTNAMEP); WiFi.begin("Wi-Fi"); Serial.println(); Serial.println("Wait for WiFi"); ssidP = ssid; Serial.println(ssidP); passwordP = password; Serial.println(passwordP); Serial.println(RIPP); RIPP = RIP; WiFi.begin(ssidP, passwordP); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected"); Serial.println("IP address: " + WiFi.localIP().toString()); Udp.begin(UDPPort); Udp.beginPacket(RIP, UDPPort); //send ip to server NEED TO USE HOSTNAME char ipBuffer[255]; WiFi.localIP().toString().toCharArray(ipBuffer, 255); Udp.write(ipBuffer); Udp.endPacket(); Serial.println("Sent ip adress to server"); } void loop() { // Read humidity long h = dht.readHumidity(); // Read temperature as Celsius (the default) - if duff data set temp humidity to 99 long t = dht.readTemperature(); if (h > 100) { h = 99; } if (t > 100) { t = 99; } Udp.begin(UDPPort); Udp.beginPacket(RIP, UDPPort); //send ip to server NEED TO USE HOST NAME change this for your server Serial.println(" "); Serial.println("Temp = "); Serial.print(t); Serial.println(" "); Serial.println("Humidity = "); Serial.print(h); Serial.println(" "); char ipBuffer[255]; sprintf (ipBuffer, "temperature(%d) humidity(%d) Room=%s=",t, h,HOSTNAME); Serial.println("Sent Temp and Humidity to server"); Serial.print(ipBuffer); //WiFi.localIP().toString().toCharArray(ipBuffer, 255); Udp.write(ipBuffer); Udp.endPacket(); Serial.println("Sent ok"); // if there's data available, read a packet delay(1000); int packetSize = Udp.parsePacket(); if (packetSize) { Serial.print("Received packet of size "); Serial.println(packetSize); Serial.print("From "); IPAddress remoteIp = Udp.remoteIP(); Serial.print(remoteIp); Serial.print(", port "); Serial.println(Udp.remotePort()); // read the packet into packetBufffer int len = Udp.read(packetBuffer, 255); if (len > 0) { packetBuffer[len] = 0; } Serial.println("Contents:"); Serial.println(packetBuffer); // send a reply, to the IP address and port that sent us the packet we received Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); Udp.write(replyBuffer); Udp.endPacket(); } ESP.deepSleep(sleepTimeS*1000000, WAKE_RF_DEFAULT); // Sleep for 600 seconds only seems to work with wemos d1 not wemos d1 pro //delay(80000); // ESP.deepSleep(60*1000000); // Sleep for x seconds // Serial.println("Out of Deep Sleep after delay"); }