Facebook
From Beige Lizard, 3 Years ago, written in Plain Text.
This paste is a reply to Untitled from Paltry Guinea Pig - view diff
Embed
Download Paste or View Raw
Hits: 168
  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266HTTPClient.h>
  3. #include <SPI.h>
  4. #include <Wire.h>
  5.  
  6. // ##################### WIFI připojení ####################
  7. const char* ssid = "";
  8. const char* password = "";
  9. // #########################################################
  10.  
  11.  
  12. // ###################### SRAZKOMER ########################
  13. const int RAIN_PIN = 13; // PIN srážkoměru (Použít na GND paralelně 10K odpor a kondenzátor 105 - jako u anemometru)
  14. // #########################################################
  15.  
  16.  
  17. // ################# ZAKLADNI NASTAVENI ####################
  18. WiFiClient client;
  19. HTTPClient http;
  20. unsigned long timeNow;
  21. volatile int rain_puls = 0; // celkový počet pulsů
  22. volatile float rain_minut = 0; // počet pulsů za minutu
  23. volatile bool rain_stav = false;
  24. String wifiData = "";
  25. String readString = "";
  26. // #########################################################
  27.  
  28.  
  29. void setup() {
  30.   Serial.begin(9600);
  31.   delay(1000);
  32.  
  33.   pinMode(RAIN_PIN,INPUT_PULLUP); // přerušování ze srážkoměru
  34.   attachInterrupt(digitalPinToInterrupt(RAIN_PIN), rain_sum, RISING); // detekce přerušení
  35.  
  36.   Serial.println();
  37.   Serial.print("Připojuji se k wifi ... ");
  38.   Serial.println(ssid);
  39.  
  40.   WiFi.begin(ssid, password); // samotný proces pripojeni k siti
  41.   WiFi.mode(WIFI_STA);
  42.  
  43.   while (WiFi.status() != WL_CONNECTED) { // dokud není pripojeno
  44.     delay(70); Serial.print(".");
  45.   }
  46.  
  47.   Serial.println("");
  48.   Serial.println("WiFi připojeno");
  49.   Serial.print("IP addresa: ");
  50.   Serial.println(WiFi.localIP());
  51.  
  52.   Serial.print("Wifi signál: ");
  53.   Serial.println(WiFi.RSSI());
  54.  
  55.   Serial.print("Data se odesílají na URL adresu:");
  56.   Serial.println("http://meteo-roven.cz/?data=?????");
  57.   Serial.println("==============================================");
  58. }
  59.  
  60.  
  61. void loop() {
  62.   if (millis()<5000) {rain_puls=0; rain_minut=0;} // 5 sekund od startu ignorujeme srážky!
  63.  
  64.   // kazdou 1 minutu + ODESLAT DATA
  65.   if (millis() - timeNow >= 10000 || millis() < timeNow) {
  66.     timeNow = millis();
  67.     rain_puls = rain_puls / 2;
  68.     rain_minut = rain_puls*0.2; // počet pulsů za minutu
  69.     Serial.print("Srážkoměr: ");
  70.     Serial.print(rain_puls);
  71.     Serial.println(" milimetrů za minutu");
  72.     Serial.print(rain_minut);
  73.     Serial.println(" milimetrů za minutu");
  74.  
  75.     Serial.println("-------------------------------------------");
  76.     delay(200);
  77.     // #########################################################
  78.     readString = rain_minut + String("|"); // srážky
  79.     delay(100);
  80.     rain_puls = 0;
  81.     rain_minut = 0;
  82.  
  83.     wifiData = WiFi.RSSI();  
  84.     client.setTimeout(1000);
  85.  
  86.     http.begin("http://meteo-roven.cz/?");
  87.     int httpCode = http.POST(wifiData + "|" + readString);
  88.    
  89.     if (httpCode > 0) {
  90.       // HTTP header has been send and Server response header has been handled
  91.       Serial.printf("[HTTP] POST... code: %d\n", httpCode);
  92.  
  93.       // file found at server
  94.       if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
  95.  
  96.         Serial.println("Data odeslána na: http://meteo-roven.cz/?data=?????");
  97.  
  98.         String payload = http.getString();
  99.         Serial.println(payload);
  100.  
  101.       }
  102.     } else {
  103.       Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
  104.       Serial.println(F("Nepodařilo se odeslat data na webovou stránku Meteo-Roven.cz"));
  105.     }
  106.  
  107.     http.end();    
  108.   }
  109. }
  110.  
  111. ICACHE_RAM_ATTR void rain_sum() // sčítání pulsů ze srážkoměru
  112. {
  113.   rain_puls++;
  114. }