- #include <ESP8266WiFi.h>
- #include <ESP8266HTTPClient.h>
- #include <SPI.h>
- #include <Wire.h>
- // ##################### 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++;
- }