- #include <ESP8266WiFi.h>
- #include <ESP8266HTTPClient.h>
- #include <SPI.h>
- #include <Wire.h>
- #include <NewPing.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);
- // ################# ZAKLADNI NASTAVENI ####################
- WiFiClient client;
- HTTPClient http;
- unsigned long timeNow;
- String wifiData = "";
- String readString = "";
- // #########################################################
- void setup() {
- Serial.begin(9600);
- delay(1000);
- 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() - timeNow >= 60000 || millis() < timeNow) {
- timeNow = millis();
- // 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
- Serial.print("Vzdalenost mezi senzorem a predmetem je ");
- Serial.print(vzdalenost);
- 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 {
- Serial.println("Vzdalenost mezi senzorem a predmetem je mimo merici rozsah.");
- delay(500) ;
- }
- readString = vzdalenost + String("|"); // vzdalenost
- 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();
- }
- }