• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z ESP8266EX
#1
Cześć,

mam program, który ma za zadanie łączyć się z wifi, dodawać do bazy danych kilka danych, a także odczytywać informacje z bazy danych. Program opiera się o płytkę WEMOS D1 R1 z mikrokontrolerem ESP8266EX. Na czym polega mój problem? Po wgraniu programu ESP łączy się z siecią, ale nie dodaje później do bazy nic i nie odbiera. Sytuacja ta ma miejsce dla wszystkich innych sieci oprócz jednej konkretnej. Na jednym modemie wifi - od światłowodu wszystko działa. Kiedy chcę odpalić układ na innym urządzeniu wifi - przykładowo na hotspocie z telefonu - nie działa. Wpisując ip z konsoli do przeglądarki, skrypty PHP działają prawidłowo, ale ESP nie chce współpracować. Tak jakby nie chciało się ono łączyć z hostem. Jak rozwiązać ten problem? Miał ktoś podobną sytuację?
Poniżej zamieszczam kod mojego programu. Za każdą pomoc dziękuję. 

Kod:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

 const char* ssid     = "xxxx"
 const char* password = "xxxx"
 const char* host = "xxxxx";

void setup()
{
 
 Serial.begin(115200);
 WiFi.mode(WIFI_STA);
 WiFi.begin(ssid, password);

 while(WiFi.status() != WL_CONNECTED)
 {
   delay(500);
   Serial.print(".");
 }
 
 Serial.println("");
 Serial.println("Wi-Fi connected successfully");
 
 Serial.print("Connecting to ");
 Serial.println(ssid);
 Serial.println("WiFi connected");
 Serial.println(WiFi.localIP());
 
 
}

void loop()
{
 
   
   Serial.print("connecting to ");
   Serial.println(host);
   
   WiFiClient client;
   const int httpPort = 80;
   
   if(!client.connect(host, httpPort)) {

   Serial.println("connection failed");

   }

   String url = "/esp/baza.php?";
   url += "temperatura=";
   url += 12;//temperatura;
   url += "&ciecz=";
   url += 1;//ciecz_w_zbiorniku;
   url += "&wilgoc=";
   url += 2321;//wilgotnosc;
   url += "&data=";
   url += "2019-10-10";
   url += "&czas=";
   url += "12:23";

   Serial.print("Requesting URL: ");
   Serial.println(url);

   // wyslanie zapytania do serwera
   client.print(String("GET ") + url + " HTTP/1.1\r\n" +
              "Host: " + host + "\r\n" +
              "Connection: close\r\n\r\n");
   unsigned long timeout = millis();
   while (client.available() == 0)
   {
     if (millis() - timeout > 5000)
     {
       Serial.println(">>> Client Timeout !");
       client.stop();
       return;
     }
   }
   while (client.available())
   {
     String line = client.readStringUntil('\r');
     Serial.print(line);
   }

   Serial.println();
   Serial.println("closing connection");

   HTTPClient http;
   http.begin("http://xxxxx/esp/fetch.php");
   int httpCode = http.GET();

   if(httpCode > 0)
   {
     String status = http.getString();
     Serial.print("ustawiona godzina nawadniania: ");
     Serial.println(status);

     //Serial.print("");
    // odczyt[0] = getValue(status, ':',0);
     //Serial.println(odczyt[0]);
     //Serial.print("");
     //odczyt[1] = getValue(status, ':',1);
     //Serial.println(odczyt[1]);
   }
     http.end();
}

a tutaj screen z monitora:
   
 
Odpowiedź
#2
(10-01-2019, 18:08)michu110 napisał(a): Po wgraniu programu ESP łączy się z siecią, ale nie dodaje później do bazy nic i nie odbiera.
Co pokazuje Wireshark?
Debuger jest po to aby z niego korzystać!
Niestety, AVR'owcy (Arduino'wcy) nie używają go (nie potrafią?) przez co  proste programy uruchamiają miesiącami.
 
Odpowiedź
#3
Wygląda na to że sieć do której się łączysz ESP nie ma dostępu do serwera, na podstawie informacji co podales, mogę tylko poradzić byś sprawdził dla czego tego połączenia nie ma.
 
Odpowiedź
#4
(10-01-2019, 18:32)es2 napisał(a):
(10-01-2019, 18:08)michu110 napisał(a): Po wgraniu programu ESP łączy się z siecią, ale nie dodaje później do bazy nic i nie odbiera.
Co pokazuje Wireshark?

kod, który wstawiłem to kod poglądowy na którym tylko testuję to połączenie dlatego jest tam delay ^^ 

co do Wiresharka to o co konkretnie pytasz?
 
Odpowiedź
#5
Mam bazę danych w php myadmin oraz dwa skrypty. Jeden obsługuje pobieranie danych z bazy i przekazywanie ich do ESP, a drugi odpowiada za wstawianie danych z ESP do bazy. Kiedy łączę się z siecią w mieszkaniu to wszystko działa tzn. ESP łączy się z Wifi, dodaje dane do bazy i odbiera je. Gdy łączę ESP z inną siecią Wifi np. z moim hotspotem z telefonu to co prawda ESP łączy się z tą siecią, ale nie działa dodawania i pobieranie danych z bazy. Ip w celu łączenia podaję z konsoli - IPV4. Sprawdzam czy podaję do kodu poprawne Ip wpisując je w przeglądarce i odpalając tam któryś ze skryptów. I to także działa, więc problem leży w łączeniu między hostem a ESP. Tylko dziwne, że na jednej konkretnej sieci mi działa wszystko, a na pozostałych nie. Serwer mam lokalny z XAMPP'a...

Poza tym łączę się również z inną siecią Wifi (nie hotspotem) żeby sprawdzić czy to nie wina po stronie hotspota, ale też nie działa wysyłanie i odbieranie danych
 
Odpowiedź
#6
(10-01-2019, 19:24)michu110 napisał(a): co do Wiresharka to o co konkretnie pytasz?
Co masz w logach programu. Co jest wysłane, czy przychodzi odpowiedź i jaka.

Sprawdzałeś traceroute?
Debuger jest po to aby z niego korzystać!
Niestety, AVR'owcy (Arduino'wcy) nie używają go (nie potrafią?) przez co  proste programy uruchamiają miesiącami.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości