Skocz do zawartości
MrShadow

ESP 8266 12E HTML request

Pomocna odpowiedź

Nie bardzo rozumiem dlaczego to miałoby działać.

Poza tym po to są biblioteki, aby z nich korzystać. Jeśli nie chcesz - to oznacza tyle, że masz wiedzę wykraczającą poza ramy tego forum i potrafisz to zrobić lepiej niż autorzy bibliotek.

Udostępnij ten post


Link to post
Share on other sites

Oczywiście, przepraszam za nieścisłości. Ten wysłany kod absolutnie nie ma na calu wysłania jakiejkolwiek informacji o stanie wyjściowym Arduino. Zaprezentowałem tutaj jak wygląda implementowana metoda "get". Moje pytanie natomiast odnosi się do jej poprawności. W jaki sposób mogę bezpośrednio na Serial monitor wysłać jakikolwiek tekst ze strony napisanej w HTML? Z bibliotek oczywiście kiedyś skorzystam, ale teraz staram się wszystko pisać od podstaw - wydaje mi się to nieco trudniejsze i bardziej czasochłonnej, ale jednocześnie ciekawsze i dające więcej satysfakcji po zadziałaniu. Jednym słowem, mam trochę czasu na eksperymenty 🙂

Udostępnij ten post


Link to post
Share on other sites

Rozumiem że świetnie znasz protokół http, i sam doskonale wiesz jak to działa. Po co pytasz na forum o robotach jeśli wiesz lepiej?

Oczywiście biblioteki są dla cieniasów, prawdziwi twardziele programują serwery w asemblerze.

Tak trzymać...

BTW. Słyszałeś kuedyś o tym, że protokół http jest bezstanowy?

Udostępnij ten post


Link to post
Share on other sites

Dlaczego biblioteki są dla cieniasów? Nigdzie nic takiego nie napisałem. Nie napisałem również, że doskonale znam http, a wręcz przeciwnie. Zadałem pytanie, czy istnieje sposób na wyświetlenie w Serial monitorze danych ze strony.

Udostępnij ten post


Link to post
Share on other sites

Owszem istnieje - ale w ten sposób to nie działa.

Jak wspomniałem protokół http jest bezstanowy. Czyli wysłanie formatki i odbiór danych to są dwa oddzielne requesty, które nie mają ze sobą nic wspólnego.

Wystarczy czy mam Ci wyoślić jak działają protokoły bezstanowe - czy może dalej nie wiedząc (z tego co widzę) jak to działs będxiesz mądrzejszy od autorów bibliotek?

Bo ja nie jestem...

Udostępnij ten post


Link to post
Share on other sites

Ok, czyli coś typu

nie pozwoli mi na wyświetlenie przesyłanych przez formularz danych na ekranie monitora portu szeregowego, ani na jakiekolwiek ich przechwycenie do zmiennej tekstowej?

Zasugerowałem się przykładem z poniższego linku i dlatego zrodziły się moje wątpliwości, co myślę jest uzasadnione :Link Zastanawia mnie jednak, w jaki sposób tam to działa? Oraz o jakim istniejącym sposobie napisałeś w poście wyżej?

Udostępnij ten post


Link to post
Share on other sites
mam zamiar stworzyć sterowanie wyjściowymi pinami z Arduino na podstawie klikniętego przycisku w przeglądarce internetowej (Android)

Z tego wnioskuję, że Arduino będzie głównym sterownikiem Twojego urządzenia, a ESP będzie pełniło rolę karty WiFi? Jak połączysz te urządzenia - portem szeregowym?

Kolejne pytanie to gdzie jest ta strona? Nie piszesz precyzyjnie. Jest ona na ESP czy na zewnętrznym serwerze gdzieś w internecie?

Jaki dokładnie moduł ESP posiadasz - może jakiś link?

Udostępnij ten post


Link to post
Share on other sites

Oczywiście już wszystko precyzuję. Moduł mam następujący :

Moduł ESP8266. Podłączam go do Arduino tworząc Software Serial. Arduino będzie głównym sterownikiem. Komunikacja z modułem odbywa się przez port szeregowy przy wykorzystaniu komend AT. Strona internetowa (bardzo prosta) zapisana jest w zmiennej typu String i jest ona wysyłana do esp korzystając z komendy : AT+CIPSEND, czekając na znak > i następnie odbywa się wysłanie strony. W głównej pętli programu odbywa się obsługa dla kolejnych połączeń z serwerem.

Do tej pory udało mi się umieścić na stronie wskazania termometru, przy odświeżaniu działa bez zarzutów, lecz moim celem głównym jest sterowanie wyjściami Arduino np. po kliknięciu buttona umieszczonego na stronie. Zastanawiam się, w jaki sposób mogę przesłać dane ze strony do Arduino - po rozwiązaniu tego, teoretycznie problem będzie z głowy. Wystarczyłoby nawet przesłanie adresu strony, na przykład, gdyby przycisk powodował jego zmianę, chociaż nie wiem, czy ten sposób jest właściwy.

W linku który podesłałem wyżej pokazana jest przykładowa strona.

Udostępnij ten post


Link to post
Share on other sites

Nadal troszeczkę jeszcze nie rozumiem ale to nic. Piszesz, że komunikujesz się pomiędzy Arduino i ESP, i że udało Ci się umieścić na stronie wskaźnik termometru. Rozumiem, że na stronie, która dla świata dostępna jest z poziomu przeglądarki po połączeniu typu http://adres_esp/strona.html

Jeśli tak to takie wywołanie strony to właśnie użycie metody GET z żądaniem przesłania zawartości pliku strona.html.

Umieszczając na stronie formularz z przyciskiem w kodzie html określasz akcję i metodę jaka ma zostać wykorzystana. Akcja to np. http://aders_esp/strona.html?parametr=1&parametr2=2

Każdy serwer (więc i pewnie ESP) przechowuje odebrany url można go więc analizować (po stronie ESP). Odbierając parametr można przed odpowiedzią na tak otrzymane GET wysłać ten parametr jako "komendę" do Arduino przez port szeregowy, które zrobi z tym co będzie chciało. By to działało musisz oczywiście ustalić zasady komunikowania się ESP i Arduino. Tak ja bym to widział.

Ja posiadam inny moduł ESP (https://botland.com.pl/moduly-wifi/4450-modul-wifi-esp8266-nodemcu-v2-4mb.html) i wystarczyło zapoznanie się z przykładami dostępnymi w środowisku IDE.

[ Dodano: 11-02-2018, 21:44 ]

To oczywiście uważnie czytałeś:

https://botland.com.pl/content/125-sterowanie-ledami-przez-wifi-z-wykorzystaniem-esp8266

Udostępnij ten post


Link to post
Share on other sites

Ogromne dzięki za odpowiedź. Jak najbardziej zgadzam się z takim podejściem do rozwiązania tego problemu. Oczywiście, ten przykład już przeanalizowałem - wykorzystuje on jednak bibliotekę, której raczej na Androidzie nie zaimplementuję. ( nie mam pojęcia w jaki sposób ). Tak, strona dostępna jest pod adresem http://adres.html. Udało mi się umieścić przycisk wykorzystujący metodę GET, o której napisałeś powyżej. Problemem nadal pozostaje jednak sposób przesłania odpowiednich danych do Arduino poprzez port szeregowy.

Udostępnij ten post


Link to post
Share on other sites

Chyba rozumiem Twoją koncepcję, a ja rozumowałem trochę inaczej stąd pewne rozbieżności. Powiem tak - ja bym dążył do uruchomienia na ESP mini serwera HTTP niezależnego od Arduino np. zgodnie z przykładem w PLIK-PRZYKLADY-ESP8266WebServer - AdvancedWebSerwer. Takie rozwiązanie wymagać będzie do sterowania jedynie przeglądarki internetowej. Bez znaczenia (prawie) będzie czy ta przeglądarka działa pod Androidem, Linuxem, Win, czy innym OS. Przeanalizuj klasę ESP8266WebServer dostępną chociażby tu:

https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WebServer/src/ESP8266WebServer.h

Tam znajdujesz między innymi w metodach publicznych:

String uri() { return _currentUri; }

HTTPMethod method() { return _currentMethod; }

virtual WiFiClient client() { return _currentClient; }

HTTPUpload& upload() { return *_currentUpload; }

String arg(String name); // get request argument value by name

String arg(int i); // get request argument value by number

String argName(int i); // get request argument name by number

int args(); // get arguments count

bool hasArg(String name); // check if argument exists

Myślę, że dzięki temu w samym ESP jesteś w stanie sprawdzać przesłane z formularzy parametry. Na podstawie tego sprawdzenia za pomocą np. Serial.print() prześlesz co trzeba do Arduino. Jeśli jednak tych pinów do sterowania za pomocą strony nie masz za dużo to może i samo ESP wystarczy - bez Arduino. ESP też ma porty wejścia / wyjścia. Ja będę się bawił swoim ESP gdzieś za tydzień więc wtedy będę mógł być bardziej konkretny.

[ Dodano: 12-02-2018, 21:12 ]

Parametry przesyłane są razem z url

  • Pomogłeś! 1

Udostępnij ten post


Link to post
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!

Gość
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...