Gdy esp8266 ucina odpowiedzi serwera

Budując układ oparty na Arduino, esp8266 oraz termometrze cyfrowym ds18b20 doszedłem do momentu gdy komunikacja esp z aplikacją webową nie działała poprawnie – drapiąc się po głowie kilka dni już wiem dlaczego!

Objawy były takie, że wysyłając z aplikacji webowej formularz, który kierowany był na adres IP esp8266 w domowej sieci WIFI natrafiałem na błąd. Mianowice wszytsko to, co było wysyłane z serwera łącznie z nagłówkami było ucinane w różnym miejscach bez ładu i składu. Jedno na 20 zapytań przeszło poprawnie, a pozostałe ucinały się po drodze uniemozliwiając odczytanie wysyłanych formularzem wartości. Prezentowany niżej kod nie działał.

void loop (){

    setTemperature();
    
    WiFiEspClient client = server.available();  // listen for incoming client
    
    if (client) {
    
        int ctr = 0;
        buffer[200] = "";
        boolean currentLineIsBlank = true;
        int allowReadAllTheTime = 0;
        data = "";
    
        while (client.connected()) {
            while (client.available()) {
                char c = client.read();
                Serial.print(c);
            }
        }
    }
}

void setTemperature() {
    String temperatura = "";
    sensors.requestTemperatures();
    temperatura = String(float(sensors.getTempCByIndex(0)));
    //Serial.println(temperatura);
}

Kilka dni kombinowania i szukania przyczyny dało rezultat. Okazało się że w funkcji loop jest funkcja setTemperature, która cały czas zczytuje z ds18b20 temeraturę i przypisuje do globalnej zmiennej temperatura i to własnie to powodowało nieustanne, ciągłe kłopoty z serwerem. Rozwiązaniem było okresowe czytanie i aktualizowanie temperatury np poprze dodanie indexu, który w loopie się inkrementuje i gdy osiągnie wartość np 1000 wywoła funkcję setTemperature i wartość indexu znów osiągnie 0. I tak cały czas.

Pomysł jak prosty tak skuteczny, momentalnie wszelkie problemy z komunikacją z serwerem odesżły w niepamięć, a jak znów uwierzyłem w moc esp8266.


Opublikowano: 16 września, 2019 przez Pan z Pogodna

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *