Skocz do zawartości

ESP8266 - brak połączenia się z serwerem


faustin

Pomocna odpowiedź

witam napisałam program , który ma na celu napisanie informacji , ze wykryto obiekt na serwerze wykorzystując przerwanie. Kod jest dobry bo nie ma żadnych błedów w dodatku robiłam to tak jak było na kursie esp tutaj , a jednak kompletnie mi się niełączy i nic na mojej stronie się nie dzieje 

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <LCD_I2C.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <FS.h>


#define pir 16

const char* ssid="Livebox-49E8";
const char* pass="20C5487147E40CF90637C9A163";
WiFiClient Client;
ESP8266WebServer server(80);

void wtedy()
{
       server.send(200,"text/html","<p>zauważono obiekt<p/>");
}
void juz()
{
  server.on("/",wtedy);
}


void setup()
{
  Serial.begin(9600);
  pinMode(pir,INPUT);
 // attachInterrupt(digitalPinToInterrupt(16),wtedy,RISING);

  WiFi.begin(ssid,pass);
  Serial.println("laczenie");
  while(WiFi.status()!=WL_CONNECTED)
  {
    Serial.print("...");
    delay(400);
    Serial.print(" ");
    delay(400);
  }
    Serial.println("polaczono");
  Serial.println(WiFi.localIP());
  attachInterrupt(digitalPinToInterrupt(pir),juz,RISING);
 // server.on("/",wtedy);
   server.begin();

}


void loop()
{
  server.handleClient();

}

czy może to wina tego ,że używam monitora portu szeregowego do wyświetlania informacji ? zamiast lcd , watpie ale na lcd działało.

dokładnie po wpisaniu adresu IP wyswietla mi się ze niestey nie można przejsc do tej strony

Link do komentarza
Share on other sites

Nie wiem skąd pomysł że

44 minuty temu, faustin napisał:

Kod jest dobry bo nie ma żadnych błedów

Obawiam się, błędy jednak się znajdą.

Ale tak z ciekawości zapytam, czy po zadziałaniu czujnika pir nadal nic nie pojawia się po wpisaniu adresu IP w przeglądarce?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

To że się kompiluje zupełnie o niczym nie świadczy - ten program raczej nie ma szans zadziałać zgodnie z oczekiwaniami. Natomiast po wykryciu przerwania jest chociaż szansa na pojawienie się strony z tekstem "zauważono obiekt" - na pewno działa obsługa przerwania, a po zareagowaniu czujnika pir nie otwiera się "strona"?

Link do komentarza
Share on other sites

Proponuję dodać komunikaty wysyłane przez port szeregowy do funkcji "już". Jeśli się pojawią, to będzie wiadomo że czujnik działa poprawnie. A po jego zadziałaniu - może uda się otworzyć stronę.

Piszę "może", bo nie wiem, nie mam dużo doświadczenia z ESP8266 - ale jest cień szansy że wtedy coś zadziała.

Link do komentarza
Share on other sites

56 minut temu, farmaceuta napisał:

A tutaj przypadkiem nie musisz mieć nawiasów przy wywołaniu funkcji?? 


server.on("/",wtedy);

 

Nie to nie bo jak dałam nawias to błędy zaczęly wywalać 

Link do komentarza
Share on other sites

Wszystko źle 🙂

Klauzulę server.on() dajesz przed uruchomieniem serwera.

Żeby coś się zaczęło dziać (zmiana strony www), to musiałbyć użyć odrobiny javascriptu (żeby miała szansą się odświeżyć) i ajaxa (żeby obsłużyć nowe dane z serwera).

Poszukaj tutoriali - były jakies proste przykłady na randomnerdtutorials.

 

Link do komentarza
Share on other sites

5 minut temu, kostuch napisał:

Klauzulę server.on() dajesz przed uruchomieniem serwera.

Właśnie tego byłem ciekaw, bo wydaje mi się że zadziała i wywołane po uruchomieniu. Nie będzie to 100% poprawny kod, bo klasa ESP8266WebServer nie wydaje się bezpieczna ze względu na wątki/wywołania z przerwań, ale mogłoby zdziałać. Co prawda autorce tematu chyba chodziło o inny sposób działania, ale jeśli obecny kod dałoby się chociaż przetestować, byłoby ta ciekawa lekcja.

Edytowano przez Elvis
Link do komentarza
Share on other sites

Z tego co widziałem w kodzie ESP8266WebServer, adresy "stron" są przechowywane na zwykłej liście. Więc wywołanie server.on() z przerwania powinno zadziałać. Ale nie testowałem tego i jak napisałem wcześniej, ESP8266WebServer nie powinna być używana z przerwań.

Natomiast zrozumienie działania błędnego programu jest chyba dobrym początkiem do napisania poprawnej wersji.

Link do komentarza
Share on other sites

1 godzinę temu, kostuch napisał:

Nigdy nie próbowałem dawać server.on() po uruchomieniu. Jakoś nie widziałem w tym sensu...

Zaglądałem swego czasu do kodu biblioteki - nie wyglądało to najlepiej, pamięć ciekła jak woda z kranu. Tym niemniej zadziałało 🙂

 

Link do komentarza
Share on other sites

A tak jeszcze zapytam czym właściwie się różni visual studio code od samego visual studio. Czy programować w C# mogę też w samym visual studio code ? Bo ile razy widzę jakiś kurs lub tutorial to wszyscy tylko mówią o visual studio 

Link do komentarza
Share on other sites

VS Code jest dużo "lżejsze".

No i chyba opensource (nie wczytywałem się w licencję).

Do VSC doinstalowujesz dodatki związane z używanym językiem wg potrzeb. Jest też wersja webowa działająca bez żadnych instalacji.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.