8000 Add capability to have light static DHCP lease by SmartBlug · Pull Request #5594 · esp8266/Arduino · GitHub
[go: up one dir, main page]

Skip to content

Add capability to have light static DHCP lease #5594

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Jan 25, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
added ESP8266WiFi StaticLease sample
  • Loading branch information
SmartBlug committed Jan 19, 2019
commit 0d4dfa8b2500597ae207bc7c59204fac08440ed6
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
url = https://github.com/earlephilhower/bearssl-esp8266
[submodule "libraries/SoftwareSerial"]
path = libraries/SoftwareSerial
url = https://github.com/plerup/espsoftwareserial.git
url = https://github.com/plerup/espsoftwareserial.git
95 changes: 95 additions & 0 deletions libraries/ESP8266WiFi/examples/StaticLease/StaticLease.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/* Create a WiFi access point and provide static lease */

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

/* Set these to your desired credentials. */
const char *ssid = "ESPap";
const char *password = "thereisnospoon";

ESP8266WebServer server(80);

/* Set the IP Address you want for your AP */
IPAddress apIP(192, 168, 0, 1);

/* Go to http://192.168.0.1 in a web browser to see current lease */
void handleRoot() {
String result;
char wifiClientMac[18];
unsigned char number_client;
struct station_info *stat_info;
struct ip_addr *IPaddress;

IPAddress address;
int i = 1;

number_client = wifi_softap_get_station_num();
stat_info = wifi_softap_get_station_info();

result = "<html><body><h1>Total Connected Clients : ";
result += String(number_client);
result += "</h1></br>";
while (stat_info != NULL) {
IPaddress = &stat_info->ip;
address = IPaddress->addr;

result += "Client ";
result += String(i);
result += " = ";
result += String(address.toString());
result += " - ";
sprintf(wifiClientMac, "%02X:%02X:%02X:%02X:%02X:%02X", MAC2STR(stat_info->bssid));
result += wifiClientMac;
result += "</br>";

stat_info = STAILQ_NEXT(stat_info, next);
i++;
}
result = result + "</body></html>";

server.send(200, "text/html", result);
}

void setup() {
/* List of mac address for static lease */
uint8 mac_CAM[6] = { 0x00, 0x0C, 0x43, 0x01, 0x60, 0x15 };
uint8 mac_PC[6] = { 0xb4, 0x52, 0x7e, 0x9a, 0x19, 0xa5 };

Serial.begin(115200);
Serial.println();
Serial.println("Configuring access point...");

/* Disable the WiFi persistence to avoid any re-configuration that may erase static lease when starting softAP */
WiFi.persistent(false);

WiFi.mode(WIFI_AP);
/* Configure AP with IP = 192.168.0.1 / Gateway = 192.168.0.1 / Subnet = 255.255.255.0
if you specify the ESP8266's IP-address with 192.168.0.1, the function softAPConfig() sets the DHCP-range as 192.168.0.100 - 192.168.0.200
*/
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
/* Setup your static leases.

As it depend from your first address, and need to be done BEFORE any request from client,
this need to be specified after WiFi.softAPConfig() and before WiFi.softAP().

first call to wifi_softap_add_dhcps_lease() will setup first IP address of the range
second call to wifi_softap_add_dhcps_lease() will setup second IP address of the range
...
any client not listed will use next IP address available from the range (here 192.168.0.102 and more)
*/
wifi_softap_add_dhcps_lease(mac_CAM); // always 192.168.0.100
wifi_softap_add_dhcps_lease(mac_PC); // always 192.168.0.101
/* Start Access Point. You can remove the password parameter if you want the AP to be open. */
WiFi.softAP(ssid, password);
Serial.print("AP IP address: ");
Serial.println(WiFi.softAPIP());
/* Setup HTTP Server */
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}

void loop() {
server.handleClient();
}
2 changes: 1 addition & 1 deletion tools/sdk/lwip2/include/lwip-git-hash.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// generated by makefiles/make-lwip2-hash
#ifndef LWIP_HASH_H
#define LWIP_HASH_H
#define LWIP_HASH_STR "STABLE-2_1_2_RELEASE/glue:1.0-9-g56e0410"
#define LWIP_HASH_STR "STABLE-2_1_2_RELEASE/glue:1.0-11-g87c709d"
#endif // LWIP_HASH_H
0