Further updates to Captive AP Mode
This commit is contained in:
parent
705a0922e1
commit
cd5b3115f5
|
|
@ -217,11 +217,11 @@ void Span::initWifi(){
|
||||||
memcpy(id,HAPClient::accessory.ID,17); // copy ID bytes
|
memcpy(id,HAPClient::accessory.ID,17); // copy ID bytes
|
||||||
id[17]='\0'; // add terminating null
|
id[17]='\0'; // add terminating null
|
||||||
|
|
||||||
// create broadcaset name from server base name plus accessory ID (with ':' replaced by '_')
|
// create broadcaset name from server base name plus accessory ID (without ':')
|
||||||
|
|
||||||
int nChars=snprintf(NULL,0,"%s-%.2s_%.2s_%.2s_%.2s_%.2s_%.2s",hostNameBase,id,id+3,id+6,id+9,id+12,id+15);
|
int nChars=snprintf(NULL,0,"%s-%.2s%.2s%.2s%.2s%.2s%.2s",hostNameBase,id,id+3,id+6,id+9,id+12,id+15);
|
||||||
char hostName[nChars+1];
|
char hostName[nChars+1];
|
||||||
sprintf(hostName,"%s-%.2s_%.2s_%.2s_%.2s_%.2s_%.2s",hostNameBase,id,id+3,id+6,id+9,id+12,id+15);
|
sprintf(hostName,"%s-%.2s%.2s%.2s%.2s%.2s%.2s",hostNameBase,id,id+3,id+6,id+9,id+12,id+15);
|
||||||
|
|
||||||
nvs_handle wifiHandle;
|
nvs_handle wifiHandle;
|
||||||
size_t len; // not used but required to read blobs from NVS
|
size_t len; // not used but required to read blobs from NVS
|
||||||
|
|
@ -349,17 +349,52 @@ void Span::configure(char *apName){
|
||||||
IPAddress apIP(192, 168, 4, 1);
|
IPAddress apIP(192, 168, 4, 1);
|
||||||
|
|
||||||
WiFi.mode(WIFI_AP);
|
WiFi.mode(WIFI_AP);
|
||||||
WiFi.softAP(apName,"homespan2020");
|
WiFi.softAP(apName,"homespan");
|
||||||
dnsServer.start(DNS_PORT, "*", apIP);
|
dnsServer.start(DNS_PORT, "*", apIP);
|
||||||
apServer.begin();
|
apServer.begin();
|
||||||
|
|
||||||
String responseHTML = ""
|
|
||||||
"<!DOCTYPE html><html><head><title>CaptivePortal</title></head><body>"
|
|
||||||
"<h1>Hello World!</h1><p>This is a captive portal example. All requests will "
|
|
||||||
"be redirected here.</p></body></html>";
|
|
||||||
|
|
||||||
boolean configured=false;
|
boolean configured=false;
|
||||||
|
|
||||||
|
TODO: Eliminate these two lines and replace with a new generic CaptiveAP flag to trackAP mode
|
||||||
|
ALSO CHANGE HAP[0] to POINTER REFERENCES
|
||||||
|
|
||||||
|
hap[0].cPair=NULL; // reset pointer to verified ID
|
||||||
|
HAPClient::pairStatus=pairState_M1; // reset starting PAIR STATE (which may be needed if Accessory failed in middle of pair-setup)
|
||||||
|
|
||||||
|
while(!configured){
|
||||||
|
|
||||||
|
dnsServer.processNextRequest();
|
||||||
|
|
||||||
|
if(hap[0].client=apServer.available()){ // found a new HTTP client
|
||||||
|
LOG2("=======================================\n");
|
||||||
|
LOG1("** Access Point Client Connected: (");
|
||||||
|
LOG1(millis()/1000);
|
||||||
|
LOG1(" sec) ");
|
||||||
|
LOG1(hap[0].client.remoteIP());
|
||||||
|
LOG1("\n");
|
||||||
|
LOG2("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hap[0].client && hap[0].client.available()){ // if connection exists and data is available
|
||||||
|
|
||||||
|
HAPClient::conNum=0; // set connection number
|
||||||
|
hap[0].processRequest(); // process HAP request
|
||||||
|
|
||||||
|
if(!hap[0].client){ // client disconnected by server
|
||||||
|
LOG1("** Disconnecting AP Client (");
|
||||||
|
LOG1(millis()/1000);
|
||||||
|
LOG1(" sec)\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG2("\n");
|
||||||
|
|
||||||
|
} // process HAP Client
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
while(1);
|
||||||
|
|
||||||
|
|
||||||
while(!configured){
|
while(!configured){
|
||||||
dnsServer.processNextRequest();
|
dnsServer.processNextRequest();
|
||||||
WiFiClient apClient=apServer.available();
|
WiFiClient apClient=apServer.available();
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ struct Span{
|
||||||
|
|
||||||
void begin(Category catID,
|
void begin(Category catID,
|
||||||
char *displayName="HomeSpan Server",
|
char *displayName="HomeSpan Server",
|
||||||
char *hostNameBase="homespan",
|
char *hostNameBase="HomeSpan",
|
||||||
char *modelName="HS-ESP32");
|
char *modelName="HS-ESP32");
|
||||||
|
|
||||||
void poll(); // poll HAP Clients and process any new HAP requests
|
void poll(); // poll HAP Clients and process any new HAP requests
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ const int MAX_CONNECTIONS=8;
|
||||||
// Verbosity -- controls message output //
|
// Verbosity -- controls message output //
|
||||||
// 0=Minimal, 1=Informative, 2=All //
|
// 0=Minimal, 1=Informative, 2=All //
|
||||||
|
|
||||||
#define VERBOSITY 1
|
#define VERBOSITY 2
|
||||||
|
|
||||||
//-------------------------------------------------//
|
//-------------------------------------------------//
|
||||||
|
|
||||||
|
|
|
||||||
41
src/src.ino
41
src/src.ino
|
|
@ -1,6 +1,39 @@
|
||||||
|
|
||||||
// This is a dummy .ino file that allows you to easily edit the contents of this library using the Arduino IDE.
|
// This is a placeholder .ino file that allows you to easily edit the contents of this library using the Arduino IDE,
|
||||||
// The code is NOT designed to be compiled from this point. Compile and test the library using one of the examples.
|
// as well as compile and test from this point. This file is ignored when the library is included in other sketchges.
|
||||||
|
|
||||||
void setup(){}
|
#include "HomeSpan.h"
|
||||||
void loop(){}
|
|
||||||
|
void setup() {
|
||||||
|
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
homeSpan.begin(Category::Lighting,"HomeSpan Benchmark");
|
||||||
|
|
||||||
|
char *version=(char *)HOMESPAN_VERSION;
|
||||||
|
|
||||||
|
new SpanAccessory(); // Begin by creating a new Accessory using SpanAccessory(), which takes no arguments
|
||||||
|
|
||||||
|
new Service::AccessoryInformation(); // HAP requires every Accessory to implement an AccessoryInformation Service, which has 6 required Characteristics
|
||||||
|
new Characteristic::Name("HomeSpan Test"); // Name of the Accessory, which shows up on the HomeKit "tiles", and should be unique across Accessories
|
||||||
|
new Characteristic::Manufacturer("HomeSpan"); // Manufacturer of the Accessory (arbitrary text string, and can be the same for every Accessory)
|
||||||
|
new Characteristic::SerialNumber("HSL-123"); // Serial Number of the Accessory (arbitrary text string, and can be the same for every Accessory)
|
||||||
|
new Characteristic::Model("HSL Test"); // Model of the Accessory (arbitrary text string, and can be the same for every Accessory)
|
||||||
|
new Characteristic::FirmwareRevision(version); // Firmware of the Accessory (arbitrary text string, and can be the same for every Accessory)
|
||||||
|
new Characteristic::Identify(); // Create the required Identify
|
||||||
|
|
||||||
|
new Service::HAPProtocolInformation(); // Create the HAP Protcol Information Service
|
||||||
|
new Characteristic::Version("1.1.0"); // Set the Version Characteristicto "1.1.0" as required by HAP
|
||||||
|
|
||||||
|
new Service::LightBulb(); // Create the Light Bulb Service
|
||||||
|
new Characteristic::On(); // This Service requires the "On" Characterstic to turn the light on and off
|
||||||
|
|
||||||
|
} // end of setup()
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
|
||||||
|
void loop(){
|
||||||
|
|
||||||
|
homeSpan.poll();
|
||||||
|
|
||||||
|
} // end of loop()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue