Facebook
From Beige Lizard, 3 Years ago, written in Plain Text.
This paste is a reply to Untitled from Paltry Guinea Pig - go back
Embed
Viewing differences between Untitled and Re: Untitled
#include 
#include 
#include 
#include h>
#include 


h>

// ##################### WIFI připojení ####################
const char* ssid = "";
const char* password = "";
// #########################################################

#define pinTrigger    5
#define pinEcho       4
#define maxVzdalenost 450
#########################################################


// inicializace měřícího modulu z knihovny
NewPing sonar(pinTrigger, pinEcho, maxVzdalenost);

###################### 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);

  \n  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 >= 60000 10000 || millis() < timeNow) {
    timeNow = millis();
    rain_puls = rain_puls / 2;
    rain_minut = rain_puls*0.2; 
// načtení vzdálenosti v centimetrech do vytvořené proměnné vzdalenost
int vzdalenost = sonar.ping_cm();
// pauza před dalším měřením
delay(50);
// pokud byla detekována vzdálenost větší než 0,
// provedeme další měření
if (vzdalenost > 0) {
vzdalenost = 0;
 // pro získání stabilnějších výsledků provedeme 5 měření
// a výsledky budeme přičítat do proměnné vzdalenost
for(int i=0; i<10; i++) {
 vzdalenost += sonar.ping_cm();
   delay(50);
 }
 // v proměnné vzdálenost máme součet posledních 5 měření
 // a musíme tedy provést dělení 5 pro získání průměru
 vzdalenost = vzdalenost/10;
 // Odecteme kominek + odtok
    vzdalenost = 275 - vzdalenost;
 // vytištění informací po sériové lince
 
počet pulsů za minutu
    
Serial.print("Vzdalenost mezi senzorem a predmetem je ");
print("Srážkoměr: ");
    
Serial.print(vzdalenost);
print(rain_puls);
    
Serial.println(" cm.");
 }
 // pokud byla detekována vzdálenost 0, je předmět mimo měřící rozsah,
 // tedy příliš blízko nebo naopak daleko
else {
  
milimetrů za minutu");
    
Serial.println("Vzdalenost mezi senzorem a predmetem je mimo merici rozsah.");
 delay(500) ;
  }
print(rain_minut);
    Serial.println(" milimetrů za minutu");

    Serial.println("-------------------------------------------");
    delay(200);
    // #########################################################
    
readString = vzdalenost rain_minut + String("|"); // vzdalenost
srážky
    delay(100);
    rain_puls = 0;
    rain_minut = 0;

    wifiData = WiFi.RSSI();   
    client.setTimeout(1000);
 
    http.begin("http://meteo-roven.cz/");
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++;
}