// target - DOIT ESP32 DEVKIT V1 #include #define LED_BUILTIN 2 #include #include GyverBME280 bme; WiFiMulti_Generic wifiMulti; #define BM280_READ_PERIOD 125 #define LOOPS_LIMIT 10 float bm_buf[LOOPS_LIMIT * 3]; uint32_t mil_list[LOOPS_LIMIT]; int loopnum = 0; boolean blinkmode = false; uint16_t blinktime = 1000; uint32_t lastReading = 0; time_t start_time = 0; char your_ssid[] = "Keenetic-6595"; // your network SSID (name) char your_pass[] = "1Q2w3e4r"; // your network password char your_ssid1[] = "ShurikPoint"; // your network SSID (name) char your_pass1[] = "IyeHjr15"; // your network password //const char* httpuri ="http://192.168.1.79/pox"; // home 25.03.2026 const char* httpuri ="http://195.201.126.70:8080/pox"; // Germany //const char* httpuri ="http://activity206.li.ru/cgi-bin/baro.sh"; // Владимир const char *ap_id = "BMP280_01"; void setup() { Serial.begin(115200); while (!Serial && millis() < 5000); pinMode(LED_BUILTIN, OUTPUT); bme.setFilter(FILTER_COEF_2); bme.setStandbyTime(STANDBY_125MS); if(!bme.begin()){ Serial.println("BARO ERROR"); blinkmode = true; blinktime = 100; return; } Serial.print(F("\nStarting WiFiMulti on ")); Serial.println(BOARD_NAME); Serial.println(WIFIMULTI_GENERIC_VERSION); wifiMulti.addAP(your_ssid, your_pass); wifiMulti.addAP(your_ssid1, your_pass1); if (wifiMulti.run() == WL_CONNECTED) { Serial.print("\nWiFi connected, SSID: "); Serial.print(WiFi.SSID()); Serial.print(", IP address: "); Serial.println(WiFi.localIP()); }else{ Serial.println("WiFi ERROR"); blinkmode = true; blinktime = 500; return; } // Получение мирового времени Serial.print("Retrieving time: "); configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP time_t now = time(nullptr); while (now < 24 * 3600) { Serial.print("."); digitalWrite(LED_BUILTIN, HIGH); delay(20); digitalWrite(LED_BUILTIN, LOW); delay(80); now = time(nullptr); //pisk(1); } Serial.println(now); } void getBaroData() { //Serial.println(loopnum); if (loopnum >= LOOPS_LIMIT) {return;} if (loopnum == 0) start_time = time(nullptr); bm_buf[loopnum * 3] = bme.readTemperature(); bm_buf[loopnum * 3 + 1] = bme.readHumidity(); bm_buf[loopnum * 3 + 2] = bme.readPressure(); mil_list[loopnum] = millis(); loopnum++; return; } void loop() { if(blinkmode) { digitalWrite(LED_BUILTIN, HIGH); delay(blinktime); digitalWrite(LED_BUILTIN, LOW); delay(blinktime); return; } lastReading = millis(); getBaroData(); if (loopnum >= LOOPS_LIMIT){ bool rez = sendData(); loopnum = 0; } delay(BM280_READ_PERIOD - (millis() - lastReading) % BM280_READ_PERIOD); } bool sendData(){ // send data to host WiFiClient client; time_t now = time(nullptr); char fstr[16]; String ds = ap_id; sprintf(fstr,"Start %lu", start_time); ds += ", "; ds += fstr; sprintf(fstr,"Send %lu", now); ds += ", "; ds += fstr; ds += " :\t"; for(int i=0; i< LOOPS_LIMIT; i++){ if(i>0) ds += "; "; ds+= String(mil_list[i]); ds += ","; ds+= String(bm_buf[i * 3]); ds += ","; ds+= String(bm_buf[i * 3 + 1]); ds += ","; ds+= String(bm_buf[i * 3 + 2]); // / 100.0F); } HTTPClient http; //Объявить объект класса HttpClient http.begin(client, httpuri); //Укажите адрес запроса http.addHeader("Content-Type", "text/plain"); //Укажите заголовок типа содержимого http.addHeader("Title", ds); // так передадим ID датчика Serial.println("Send data:"); Serial.println(ds); int httpCode = http.POST(ds); //Отправьте запрос String payload = http.getString(); //Получите полезную нагрузку ответа Serial.println("HTTP answer:"); Serial.println(httpCode); //Распечатать код возврата HTTP Serial.println(payload); //Полезная нагрузка для ответа на запрос печати http.end(); //Закрыть соединение if(httpCode==200){ return(true); }else{ return(false); } return(true); }