Tak, możesz wysyłać dane do ESP8266 bez użycia serwera WWW, ale możesz chcieć użyć jednego lub użyć czegoś funkcjonalnie związanego z jednym.
ESP8266 to dość ogólne urządzenie komputerowe z radiem Wi-Fi i stosem sieci, więc możesz wdrożyć dowolny rozsądny protokół, który chcesz opisać w kodzie.
Jednak dość popularne stało się wdrażanie protokołów, które wyglądają i działają podobnie jak miniaturowe strony internetowe przeznaczone do spożycia przez ludzi.
tzn. zamiast łączenia się i robienia czegoś takiego przez klienta
GET /index.html HTTP/1.1
to może powiedzieć
GET /gpio/15/value HTTP/1.1
Adres URL nie odnosi się do konkretnego dokumentu, ale do pewnej ilości danych na urządzeniu, do którego chcesz uzyskać dostęp. Można zrobić podobne rzeczy POST
, PATCH
,DELETE
itp żądań.
O ile nie tworzysz strony do spożycia przez ludzi, zwykle wymienianymi danymi nie byłyby strony HTML. Często może to być coś w rodzaju JSON. Na przykład
GET /gpio/15/value HTTP/1.1
może wywołać odpowiedź typu
{"gpio": 15, "direction": "in", "value": 0}
Podobnie można utworzyć punkt końcowy, w którym klient może ustawić GPIO, mówiąc
POST /gpio/15 HTTP/1.1
{"direction": "out", "value": 1}
Jest to do pewnego stopnia pytanie semantyczne lub specyficzne dla implementacji, czy program odpowiadający na takie zapytania jest „serwerem WWW” - może to być serwer WWW, który uruchamia różne zadania pomocnicze do obsługi danych i gpios (podobnie jak serwer obsługujący strony dynamicznie generować część ich treści na podstawie zapytań do bazy danych), lub może to być dedykowany program, który zarówno zajmuje się danymi, jak i potrafi mówić HTTP.
I oczywiście używanie HTTP do wymiany ładunków JSON jest tylko jednym z wielu sposobów robienia rzeczy - tak się składa, że jest to obecnie popularny sposób, który ponownie wykorzystuje wiele koncepcji podobnych do serwera WWW, i może do pewnego stopnia nawet pozwolić na korzystanie z przeglądarki internetowej dla testów.
Warto również pamiętać, że taki schemat działa najlepiej lokalnie, gdy telefon i ESP8266 są klientami tej samej domowej sieci Wi-Fi. Jeśli telefon nie jest „w domu” lub jest, ale jest tylko w sieci mobilnej, zezwolenie na połączenie z ESP8266 oznaczałoby zezwolenie na zewnętrzne żądania do sieci domowej, czego najlepiej unikać. W takim przypadku dość popularne jest użycie protokołu, w którym zarówno urządzenie ESP8266, jak i telefon niezależnie docierają do zewnętrznego serwera przekaźników, który przesyła między nimi wiadomości. MQTT jest przykładem schematu często używanego w systemie z architekturą opartą na serwerze przekaźnikowym.