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
 | ||||
|   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]; | ||||
|   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; | ||||
|   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); | ||||
| 
 | ||||
|   WiFi.mode(WIFI_AP); | ||||
|   WiFi.softAP(apName,"homespan2020"); | ||||
|   WiFi.softAP(apName,"homespan"); | ||||
|   dnsServer.start(DNS_PORT, "*", apIP); | ||||
|   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; | ||||
| 
 | ||||
|   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){ | ||||
|     dnsServer.processNextRequest(); | ||||
|     WiFiClient apClient=apServer.available(); | ||||
|  |  | |||
|  | @ -64,7 +64,7 @@ struct Span{ | |||
|    | ||||
|   void begin(Category catID, | ||||
|              char *displayName="HomeSpan Server", | ||||
|              char *hostNameBase="homespan", | ||||
|              char *hostNameBase="HomeSpan", | ||||
|              char *modelName="HS-ESP32");         | ||||
|               | ||||
|   void poll();                                  // poll HAP Clients and process any new HAP requests
 | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ const int MAX_CONNECTIONS=8; | |||
| //    Verbosity -- controls message output       //
 | ||||
| //       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.
 | ||||
| // The code is NOT designed to be compiled from this point.  Compile and test the library using one of the examples.
 | ||||
| // This is a placeholder .ino file that allows you to easily edit the contents of this library using the Arduino IDE,
 | ||||
| // as well as compile and test from this point.  This file is ignored when the library is included in other sketchges.
 | ||||
| 
 | ||||
| void setup(){} | ||||
| void loop(){} | ||||
| #include "HomeSpan.h" | ||||
| 
 | ||||
| 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
	
	 Gregg
						Gregg