Fork of the excellent esp8266-react - https://github.com/rjwats/esp8266-react
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.8 KiB

  1. #include <WiFiStatus.h>
  2. WiFiStatus::WiFiStatus(AsyncWebServer *server) : _server(server) {
  3. _server->on(WIFI_STATUS_SERVICE_PATH, HTTP_GET, std::bind(&WiFiStatus::wifiStatus, this, std::placeholders::_1));
  4. _onStationModeConnectedHandler = WiFi.onStationModeConnected(onStationModeConnected);
  5. _onStationModeDisconnectedHandler = WiFi.onStationModeDisconnected(onStationModeDisconnected);
  6. _onStationModeGotIPHandler = WiFi.onStationModeGotIP(onStationModeGotIP);
  7. }
  8. void WiFiStatus::onStationModeConnected(const WiFiEventStationModeConnected& event) {
  9. Serial.print("WiFi Connected. SSID=");
  10. Serial.println(event.ssid);
  11. }
  12. void WiFiStatus::onStationModeDisconnected(const WiFiEventStationModeDisconnected& event) {
  13. Serial.print("WiFi Disconnected. Reason code=");
  14. Serial.println(event.reason);
  15. }
  16. void WiFiStatus::onStationModeGotIP(const WiFiEventStationModeGotIP& event) {
  17. Serial.print("WiFi Got IP. localIP=");
  18. Serial.print(event.ip);
  19. Serial.print(", hostName=");
  20. Serial.println(WiFi.hostname());
  21. }
  22. void WiFiStatus::wifiStatus(AsyncWebServerRequest *request) {
  23. AsyncJsonResponse * response = new AsyncJsonResponse();
  24. JsonObject& root = response->getRoot();
  25. wl_status_t status = WiFi.status();
  26. root["status"] = (uint8_t) status;
  27. if (status == WL_CONNECTED){
  28. root["local_ip"] = WiFi.localIP().toString();
  29. root["rssi"] = WiFi.RSSI();
  30. root["ssid"] = WiFi.SSID();
  31. root["bssid"] = WiFi.BSSIDstr();
  32. root["channel"] = WiFi.channel();
  33. root["subnet_mask"] = WiFi.subnetMask().toString();
  34. root["gateway_ip"] = WiFi.gatewayIP().toString();
  35. IPAddress dnsIP1 = WiFi.dnsIP(0);
  36. IPAddress dnsIP2 = WiFi.dnsIP(1);
  37. if (dnsIP1 != 0U){
  38. root["dns_ip_1"] = dnsIP1.toString();
  39. }
  40. if (dnsIP2 != 0U){
  41. root["dns_ip_2"] = dnsIP2.toString();
  42. }
  43. }
  44. response->setLength();
  45. request->send(response);
  46. }