mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-30 21:51:40 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			127 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Provisioning for Arduino
 | |
| 
 | |
| This sketch implements provisioning using various IDF components
 | |
| 
 | |
| # Description
 | |
| 
 | |
| This example allows Arduino user to choose either BLE or SOFTAP as a mode of transport, over which the provisioning related communication is to take place, between the device (to be provisioned) and the client (owner of the device).
 | |
| 
 | |
| # APIs introduced for provisioning
 | |
| 
 | |
| ## WiFi.onEvent()
 | |
| 
 | |
| Using this API user can register to receive WiFi Events and Provisioning Events
 | |
| 
 | |
| #### Parameters passed
 | |
| 
 | |
| A function with following signature
 | |
| * void SysProvEvent(system_event_t * , wifi_prov_event_t * );
 | |
|  
 | |
| #### structure [ wifi_prov_event_t ]
 | |
| 
 | |
| * wifi_prov_cb_event_t event;
 | |
| * void * event_data;
 | |
| 
 | |
| ## WiFi.beginProvision()
 | |
| 
 | |
| WiFi.beginProvision(void ( * scheme_cb)(), wifi_prov_scheme_event_handler_t scheme_event_handler, wifi_prov_security_t security, char * pop, char * service_name, char * service_key, uint8_t * uuid);
 | |
| 
 | |
| #### Parameters passed
 | |
| 
 | |
| *  function pointer : choose the mode of transfer
 | |
|     * provSchemeBLE - Using BLE
 | |
|     * provSchemeSoftAP - Using SoftAP
 | |
|         
 | |
| * security : choose security type
 | |
|     * WIFI_PROV_SECURITY_1 - It allows secure communication which consists of secure handshake using key exchange and proof of possession (pop) and encryption/decryption of messages.
 | |
| 
 | |
|     * WIFI_PROV_SECURITY_0 - It do not provide application level security, it involve simply plain text communication.
 | |
| 
 | |
| * scheme_event_handler : specify the handlers according to the mode chosen
 | |
|     * BLE :
 | |
|         - WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BTDM - This scheme event handler is used when application doesn't need BT and BLE after provisioning is finised
 | |
|         - WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BLE - This scheme event handler is used when application doesn't need BLE to be active after provisioning is finised
 | |
|         - WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BT - This scheme event handler is used when application doesn't need BT to be active after provisioning is finised
 | |
| 
 | |
|     * SoftAp :
 | |
|         - WIFI_PROV_EVENT_HANDLER_NONE
 | |
| 
 | |
| * pop : It is the string that is used to provide the authentication.
 | |
| 
 | |
| * service_name : Specify service name for the device, if it is not specified then default chosen name is PROV_XXX where XXX are the last 3 bytes of the MAC address.  
 | |
| 
 | |
| * service_key : Specify service key, if chosen mode of provisioning is BLE then service_key is always NULL
 | |
| 
 | |
| * uuid : user can specify there own 128 bit UUID while provisioning using BLE, if not specified then default value taken is
 | |
|         - {  0xb4, 0xdf, 0x5a, 0x1c, 0x3f, 0x6b, 0xf4, 0xbf,
 | |
|              0xea, 0x4a, 0x82, 0x03, 0x04, 0x90, 0x1a, 0x02, }
 | |
| 
 | |
| # NOTE
 | |
| 
 | |
| * If none of the parameters are specified in beginProvision then default provisioning takes place using SoftAP with
 | |
|     * scheme = WIFI_PROV_SCHEME_SOFTAP
 | |
|     * scheme_event_handler = WIFI_PROV_EVENT_HANDLER_NONE
 | |
|     * security = WIFI_PROV_SECURITY_1
 | |
|     * pop = "abcd1234"
 | |
|     * service_name = "PROV_XXX"
 | |
|     * service_key = NULL
 | |
|     * uuid = NULL
 | |
| 
 | |
| # Log Output
 | |
| * Enable debuger : [ Tools -> Core Debug Level -> Info ] 
 | |
| 
 | |
| # Provisioning Tools
 | |
| https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/provisioning/wifi_provisioning.html#provisioning-tools
 | |
| 
 | |
| # Example output
 | |
| 
 | |
| ## Provisioning using SoftAP
 | |
| 
 | |
| ```
 | |
| [I][WiFiProv.cpp:117] beginProvision(): Starting AP using SOFTAP
 | |
|  service_name : PROV_XXX
 | |
|  password : 123456789
 | |
|  pop : abcd1234
 | |
| 
 | |
| Provisioning started
 | |
| Give Credentials of your access point using " Android app "
 | |
| 
 | |
| Received Wi-Fi credentials
 | |
| 	SSID : GIONEE M2
 | |
| 	Password : 123456789
 | |
| 
 | |
| Connected IP address : 192.168.43.120
 | |
| Provisioning Successful
 | |
| Provisioning Ends
 | |
| 
 | |
| ```
 | |
| 
 | |
| ## Provisioning using BLE
 | |
| 
 | |
| ```
 | |
| [I][WiFiProv.cpp:115] beginProvision(): Starting AP using BLE
 | |
|  service_name : PROV_XXX
 | |
|  pop : abcd1234
 | |
| 
 | |
| Provisioning started
 | |
| Give Credentials of your access point using " Android app "
 | |
| 
 | |
| Received Wi-Fi credentials
 | |
| 	SSID : GIONEE M2
 | |
| 	Password : 123456789
 | |
| 
 | |
| Connected IP address : 192.168.43.120
 | |
| Provisioning Successful
 | |
| Provisioning Ends
 | |
| 
 | |
| ```
 | |
| 
 | |
| ## Credentials are available on device
 | |
| 
 | |
| ```
 | |
| [I][WiFiProv.cpp:146] beginProvision(): Aleardy Provisioned, starting Wi-Fi STA
 | |
| [I][WiFiProv.cpp:150] beginProvision(): SSID : Wce*****
 | |
| [I][WiFiProv.cpp:152] beginProvision(): CONNECTING TO THE ACCESS POINT : 
 | |
| Connected IP address : 192.168.43.120
 | |
| ```
 |