#include #include #include #include // ##################### WIFI připojení #################### const char* ssid = ""; const char* password = ""; // ######################################################### // ###################### SRAZKOMER ######################## const int RAIN_PIN = 13; // PIN srážkoměru (Použít na GND paralelně 10K odpor a kondenzátor 105 - jako u anemometru) // ######################################################### // ################# ZAKLADNI NASTAVENI #################### WiFiClient client; HTTPClient http; unsigned long timeNow; volatile int rain_puls = 0; // celkový počet pulsů volatile float rain_minut = 0; // počet pulsů za minutu volatile bool rain_stav = false; String wifiData = ""; String readString = ""; // ######################################################### void setup() { Serial.begin(9600); delay(1000); pinMode(RAIN_PIN,INPUT_PULLUP); // přerušování ze srážkoměru attachInterrupt(digitalPinToInterrupt(RAIN_PIN), rain_sum, RISING); // detekce přerušení Serial.println(); Serial.print("Připojuji se k wifi ... "); Serial.println(ssid); WiFi.begin(ssid, password); // samotný proces pripojeni k siti WiFi.mode(WIFI_STA); while (WiFi.status() != WL_CONNECTED) { // dokud není pripojeno delay(70); Serial.print("."); } Serial.println(""); Serial.println("WiFi připojeno"); Serial.print("IP addresa: "); Serial.println(WiFi.localIP()); Serial.print("Wifi signál: "); Serial.println(WiFi.RSSI()); Serial.print("Data se odesílají na URL adresu:"); Serial.println("http://meteo-roven.cz/?data=?????"); Serial.println("=============================================="); } void loop() { if (millis()<5000) {rain_puls=0; rain_minut=0;} // 5 sekund od startu ignorujeme srážky! // kazdou 1 minutu + ODESLAT DATA if (millis() - timeNow >= 10000 || millis() < timeNow) { timeNow = millis(); rain_puls = rain_puls / 2; rain_minut = rain_puls*0.2; // počet pulsů za minutu Serial.print("Srážkoměr: "); Serial.print(rain_puls); Serial.println(" milimetrů za minutu"); Serial.print(rain_minut); Serial.println(" milimetrů za minutu"); Serial.println("-------------------------------------------"); delay(200); // ######################################################### readString = rain_minut + String("|"); // srážky delay(100); rain_puls = 0; rain_minut = 0; wifiData = WiFi.RSSI(); client.setTimeout(1000); http.begin("http://meteo-roven.cz/?"); int httpCode = http.POST(wifiData + "|" + readString); if (httpCode > 0) { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] POST... code: %d\n", httpCode); // file found at server if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) { Serial.println("Data odeslána na: http://meteo-roven.cz/?data=?????"); String payload = http.getString(); Serial.println(payload); } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); Serial.println(F("Nepodařilo se odeslat data na webovou stránku Meteo-Roven.cz")); } http.end(); } } ICACHE_RAM_ATTR void rain_sum() // sčítání pulsů ze srážkoměru { rain_puls++; }