diff --git a/docs/advancedusage/index.html b/docs/advancedusage/index.html index 52f8df8..b794657 100644 --- a/docs/advancedusage/index.html +++ b/docs/advancedusage/index.html @@ -715,7 +715,7 @@

By default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the autoSave parameter specified by AutoConnectConfig.

AutoConnect       Portal;
 AutoConnectConfig Config;
-Config.autoSave = AC_SAVECREDENTIAL_NEVER;f
+Config.autoSave = AC_SAVECREDENTIAL_NEVER;
 Portal.config(Config);
 Portal.begin();
 
@@ -732,7 +732,7 @@ void setup() { Serial.begin(115200); - pinMode(BUILTIN_LED, output); + pinMode(BUILTIN_LED, OUTPUT); digitalWrite(BUILTIN_LED, LOW); Portal.onDetect(startCP); if (Portal.begin()) { @@ -766,12 +766,12 @@

Debug print

-

You can output AutoConnect monitor messages to the Serial. A monitor message activation switch is in an include header file AutoConnect.h of library source. Define AC_DEBUG macro to output monitor messages.

+

You can output AutoConnect monitor messages to the Serial. A monitor message activation switch is in an include header file AutoConnect.h of library source. Define AC_DEBUG macro to output the monitor messages.

#define AC_DEBUG
 

Disable the captive portal

-

It can also prevent the captive portal from starting even if the connection at the first WiFi.begin fails. In this case, the behavior of AutoConnect::begin is the same as WiFi.begin.

+

It can also prevent the captive portal from starting even if the connection at the first WiFi.begin fails. In this case, AutoConnect::begin behaves same as WiFi.begin.

For disabling the captive portal, autoRise sets to false with AutoConnectConfig.

AutoConnect       portal;
 AutoConnectConfig acConfig;
diff --git a/docs/examples/index.html b/docs/examples/index.html
index 4320a09..f3b9c66 100644
--- a/docs/examples/index.html
+++ b/docs/examples/index.html
@@ -737,7 +737,7 @@
 
 
  • Invokes "begin()"

    -

    Call AutoConnec::begin. If you need to assign a static IP address, executes AutoConnectConfig before that.

    +

    Call AutoConnect::begin. If you need to assign a static IP address, executes AutoConnectConfig before that.

  • diff --git a/docs/search/search_index.json b/docs/search/search_index.json index b68cbc3..98e9b34 100644 --- a/docs/search/search_index.json +++ b/docs/search/search_index.json @@ -197,7 +197,7 @@ }, { "location": "/advancedusage/index.html", - "text": "Advanced usage\n\u00b6\n\n\n 404 handler\n\u00b6\n\n\nRegistering the \"not found\" handler is a different way than ESP8266WebServer. The \nonNotFound\n of ESP8266WebServer does not work with AutoConnect. AutoConnect overrides \nESP8266WebServer::onNotFound\n to handle a captive portal. To register \"not found\" handler, use \nAutoConnect::onNotFound\n.\n\n\n Auto save Credential\n\u00b6\n\n\nBy default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the \nautoSave\n parameter specified by \nAutoConnectConfig\n.\n\n\nAutoConnect\n \nPortal\n;\n\n\nAutoConnectConfig\n \nConfig\n;\n\n\nConfig\n.\nautoSave\n \n=\n \nAC_SAVECREDENTIAL_NEVER\n;\nf\n\n\nPortal\n.\nconfig\n(\nConfig\n);\n\n\nPortal\n.\nbegin\n();\n\n\n\n\n\n Captive portal start detection\n\u00b6\n\n\nThe captive portal will only be activated if the first \nWiFi::begin\n fails. Sketch can detect with the \nAutoConnect::onDetect\n function that the captive portal has started. For example, the sketch can be written like as follows that turns on the LED at the start captive portal.\n\n\nAutoConnect\n \nPortal\n;\n\n\n\nbool\n \nstartCP\n(\nIPAddress\n \nip\n)\n \n{\n\n\n \ndigitalWrite\n(\nBUILTIN_LED\n,\n \nHIGH\n);\n\n \nSerial\n.\nprintln\n(\n\"C.P. started, IP:\"\n \n+\n \nWiFi\n.\nlocalIP\n().\ntoString\n());\n\n \nreturn\n \ntrue\n;\n\n\n}\n\n\n\nvoid\n \nsetup\n()\n \n{\n\n \nSerial\n.\nbegin\n(\n115200\n);\n\n \npinMode\n(\nBUILTIN_LED\n,\n \noutput\n);\n\n \ndigitalWrite\n(\nBUILTIN_LED\n,\n \nLOW\n);\n\n\n \nPortal\n.\nonDetect\n(\nstartCP\n);\n\n\n \nif\n \n(\nPortal\n.\nbegin\n())\n \n{\n\n \ndigitalWrite\n(\nBUILTIN_LED\n,\n \nLOW\n);\n\n \n}\n\n\n}\n\n\n\nvoid\n \nloop\n()\n \n{\n\n \nPortal\n.\nhandleClient\n();\n\n\n}\n\n\n\n\n\n Combination with mDNS\n\u00b6\n\n\nWith \nmDNS library\n, you can access to ESP8266 by name instead of IP address after connection. The sketch can start the MDNS responder after \nAutoConnect::begin\n.\n\n\n#include\n \n\n\n\n#include\n \n\n\n\n#include\n \n\n\n\nAutoConnect\n \nPortal\n;\n\n\n\nvoid\n \nsetup\n()\n \n{\n\n \nif\n \n(\nPortal\n.\nbegin\n())\n \n{\n\n\n \nif\n \n(\nMDNS\n.\nbegin\n(\n\"esp8266\"\n))\n \n{\n\n\n \nMDNS\n.\naddService\n(\n\"http\"\n,\n \n\"tcp\"\n,\n \n80\n);\n\n\n \n}\n\n \n}\n\n\n}\n\n\n\nvoid\n \nloop\n()\n \n{\n\n \nPortal\n.\nhandleClient\n();\n\n\n}\n\n\n\n\n\n Debug print\n\u00b6\n\n\nYou can output AutoConnect monitor messages to the \nSerial\n. A monitor message activation switch is in an include header file \nAutoConnect.h\n of library source. Define \nAC_DEBUG\n macro to output monitor messages.\n\n\n#define AC_DEBUG\n\n\n\n\n\n Disable the captive portal\n\u00b6\n\n\nIt can also prevent the captive portal from starting even if the connection at the first \nWiFi.begin\n fails. In this case, the behavior of \nAutoConnect::begin\n is the same as \nWiFi.begin\n.\n\n\nFor disabling the captive portal, \nautoRise\n sets to false with \nAutoConnectConfig\n.\n\n\nAutoConnect\n \nportal\n;\n\n\nAutoConnectConfig\n \nacConfig\n;\n\n\n\nacConfig\n.\nautoRaise\n \n=\n \nfalse\n;\n\n\nportal\n.\nconfig\n(\nacConfig\n);\n\n\nportal\n.\nbegin\n();\n\n\n\n\n\n Move the saving area of EEPROM for the credentials\n\u00b6\n\n\nBy default, the credentials saving area is occupied from the beginning of EEPROM area. \nESP8266 Arduino core document\n says that:\n\n\n\n\nThe following diagram illustrates flash layout used in Arduino environment:\n\n\n\n\n\n\n\n \n|--------------|-------|---------------|--|--|--|--|--|\n\n \n^\n \n^\n \n^\n \n^\n \n^\n\n \nSketch\n \nOTA\n \nupdate\n \nFile\n \nsystem\n \nEEPROM\n \nWiFi\n \nconfig\n \n(\nSDK\n)\n\n\n\n\n\n\n\nand\n\n\n\n\nEEPROM library uses one sector of flash located \njust after the SPIFFS\n.\n\n\n\n\nSo in the default state, the credential storage area used by AutoConnect conflicts with data owned by the user sketch. It will be destroyed together saved data in EEPROM by user sketch and AutoConnect each other. But you can move the storage area to avoid this.\n\n\nThe \nboundaryOffset\n in \nAutoConnectConfig\n specifies the start offset of the credentials storage area. The default value is 0.\n\n\n Refers the hosted ESP8266WebServer\n\u00b6\n\n\nConstructing an AutoConnect object variable without parameters then creates and starts an ESP8266WebServer inside the AutoConnect. This object variable could be referred by \nAutoConnect::host()\n function to access ESP8266WebServer instance as like below.\n\n\nAutoConnect\n \nPortal\n;\n\n\n\nPortal\n.\nbegin\n();\n\n\nESP8266WebServer\n&\n \nserver\n \n=\n \nPortal\n.\nhost\n();\n\n\nserver\n.\nsend\n(\n200\n,\n \n\"text/plain\"\n,\n \n\"Hello, world\"\n);\n\n\n\n\n\n\n\nWhen host() is valid\n\n\nThe host() can be referred at after \nAutoConnect::begin\n.\n\n\n\n\n Usage for automatically instantiated ESP8266WebServer\n\u00b6\n\n\nThe sketch can handle URL requests using ESP8266WebServer that AutoConnect started internally. ESP8266WebServer instantiated dynamically by AutoConnect can be referred to by \nAutoConnect::host\n function. The sketch can use the '\non\n' function, '\nsend\n' function, '\nclient\n' function and others by ESP8266WebServer reference of its return value.\n\n\n#include\n \n\n\n\n#include\n \n\n\n\n#include\n \n\n\n\n\nAutoConnect\n \nPortal\n;\n\n\n\nvoid\n \nhandleRoot\n()\n \n{\n\n\n \nESP8266WebServer\n&\n \nIntServer\n \n=\n \nPortal\n.\nhost\n();\n\n\n \nIntServer\n.\nsend\n(\n200\n,\n \n\"text/html\"\n,\n \n\"Hello, world\"\n);\n\n\n}\n\n\n\nvoid\n \nhandleNotFound\n()\n \n{\n\n\n \nESP8266WebServer\n&\n \nIntServer\n \n=\n \nPortal\n.\nhost\n();\n\n\n \nIntServer\n.\nsend\n(\n404\n,\n \n\"text/html\"\n,\n \n\"Unknown.\"\n);\n\n\n}\n\n\n\nvoid\n \nsetup\n()\n \n{\n\n \nbool\n \nr\n \n=\n \nPortal\n.\nbegin\n();\n\n \nif\n \n(\nr\n)\n \n{\n\n\n \nESP8266WebServer\n&\n \nIntServer\n \n=\n \nPortal\n.\nhost\n();\n\n\n \nIntServer\n.\non\n(\n\"/\"\n,\n \nhandleRoot\n);\n\n\n \nPortal\n.\nonNotFound\n(\nhandleNotFound\n);\n \n// For only onNotFound.\n\n \n}\n\n\n}\n\n\n\nvoid\n \nloop\n()\n \n{\n\n\n \nPortal\n.\nhost\n().\nhandleClient\n();\n\n\n \nPortal\n.\nhandleRequest\n();\n\n \n/* or following one line code is equ.\n\n\n Portal.handleClient();\n\n\n */\n\n\n}\n\n\n\n\n\n\n\nESP8266WebServer function should be called after AutoConnect::begin\n\n\nThe sketch cannot refer to an instance of ESP8266WebServer until AutoConnect::begin completes successfully.\n\n\n\n\n\n\nDo not use with ESP8266WebServer::begin\n\n\nESP8266WebServer is already running inside the AutoConnect.\n\n\n\n\n Use with the \nPageBuilder\n library\n\u00b6\n\n\nIn ordinary, the URL handler will respond the request by sending some HTML. \nPageBuilder\n library is HTML assembly aid. it can handle predefined HTML as like a template and simplify an HTML string assemble logic, and also the generated HTML send automatically.\n\n\nAn example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for \nGithub repository\n.\n\n\n\n\nConfiguration functions\n\u00b6\n\n\n Configuration for Soft AP\n\u00b6\n\n\nAutoConnect will activate SoftAP at failed the first \nWiFi.begin\n. It SoftAP settings are stored in \nAutoConnectConfig\n as the following parameters. The sketch could be configured SoftAP using these parameters, refer the \nAutoConnectConfig API\n for details.\n\n\n\n\nIP address of SoftAP activated.\n\n\nGateway IP address.\n\n\nSubnet mask.\n\n\nSSID for SoftAP.\n\n\nPassword for SoftAP.\n\n\nChannel.\n\n\nHidden attribute.\n\n\nAuto save credential.\n\n\nOffset address of the credentials storage area in EEPROM.\n\n\nLength of start up time after reset.\n\n\nAutomatic starting the captive portal.\n\n\nAuto reset after connection establishment.\n\n\nHome URL of the user sketch application.\n\n\n\n\n\n\nAutoConnect::config before AutoConnect::begin\n\n\nAutoConnect::config\n must be executed before \nAutoConnect::begin\n.\n\n\n\n\n Assign user sketch's home path\n\u00b6\n\n\n\"\nHOME\n\" for returning to the user's sketch homepage is displayed at the bottom of the AutoConnect menu. It could be set using the \nAutoConnect::home\n function.\n\n\n\n\n Relocate the AutoConnect home path\n\u00b6\n\n\nA home path of AutoConnect is \n/_ac\n by default. You can access from the browser with http://IPADDRESS/_ac. You can change the home path by revising \nAUTOCONNECT_URI\n macro in the include header file as \nAutoConnect.h\n.\n\n\n#define AUTOCONNECT_URI \"/_ac\"\n\n\n\n\n\n Static IP assignment \n1\n\u00b6\n\n\nIt is also possible to assign static IP Address to ESP8266 in STA mode. By default DHCP is enabled and it becomes the IP address assigned by the DHCP server with \nWiFi.begin\n.\n\n\nTo assign a static IP to ESP8266 with WIFI_MODE_STA, the following parameters are required:\n\n\n\n\nIP address.\n\n\nGateway address.\n\n\nSubnet mask.\n\n\nPrimary DNS server.\n\n\nSecondary DNS server. (optional)\n\n\n\n\nThe above parameters must be executed before \nAutoConnect::begin\n as \narguments of AutoConnectConfig\n.\n\n\nAutoConnect\n \nportal\n;\n\n\nAutoConnectConfig\n \nConfig\n;\n\n\nConfig\n.\nstaip\n \n=\n \nIPAddress\n(\n192\n,\n168\n,\n1\n,\n10\n);\n\n\nConfig\n.\nstaGateway\n \n=\n \nIPAddress\n(\n192\n,\n168\n,\n1\n,\n1\n);\n\n\nConfig\n.\nstaNetmask\n \n=\n \nIPAddress\n(\n255\n,\n255\n,\n255\n,\n0\n);\n\n\nConfig\n.\ndns1\n \n=\n \nIPAddress\n(\n192\n,\n168\n,\n1\n,\n1\n);\n\n\nportal\n.\nconfig\n(\nConfig\n);\n\n\nportal\n.\nbegin\n();\n\n\n\n\n\n\n\n\n\n\n\n\n\nStatic IP address assignment is available from version 0.9.3.\u00a0\n\u21a9", + "text": "Advanced usage\n\u00b6\n\n\n 404 handler\n\u00b6\n\n\nRegistering the \"not found\" handler is a different way than ESP8266WebServer. The \nonNotFound\n of ESP8266WebServer does not work with AutoConnect. AutoConnect overrides \nESP8266WebServer::onNotFound\n to handle a captive portal. To register \"not found\" handler, use \nAutoConnect::onNotFound\n.\n\n\n Auto save Credential\n\u00b6\n\n\nBy default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the \nautoSave\n parameter specified by \nAutoConnectConfig\n.\n\n\nAutoConnect\n \nPortal\n;\n\n\nAutoConnectConfig\n \nConfig\n;\n\n\nConfig\n.\nautoSave\n \n=\n \nAC_SAVECREDENTIAL_NEVER\n;\n\n\nPortal\n.\nconfig\n(\nConfig\n);\n\n\nPortal\n.\nbegin\n();\n\n\n\n\n\n Captive portal start detection\n\u00b6\n\n\nThe captive portal will only be activated if the first \nWiFi::begin\n fails. Sketch can detect with the \nAutoConnect::onDetect\n function that the captive portal has started. For example, the sketch can be written like as follows that turns on the LED at the start captive portal.\n\n\nAutoConnect\n \nPortal\n;\n\n\n\nbool\n \nstartCP\n(\nIPAddress\n \nip\n)\n \n{\n\n\n \ndigitalWrite\n(\nBUILTIN_LED\n,\n \nHIGH\n);\n\n \nSerial\n.\nprintln\n(\n\"C.P. started, IP:\"\n \n+\n \nWiFi\n.\nlocalIP\n().\ntoString\n());\n\n \nreturn\n \ntrue\n;\n\n\n}\n\n\n\nvoid\n \nsetup\n()\n \n{\n\n \nSerial\n.\nbegin\n(\n115200\n);\n\n \npinMode\n(\nBUILTIN_LED\n,\n \nOUTPUT\n);\n\n \ndigitalWrite\n(\nBUILTIN_LED\n,\n \nLOW\n);\n\n\n \nPortal\n.\nonDetect\n(\nstartCP\n);\n\n\n \nif\n \n(\nPortal\n.\nbegin\n())\n \n{\n\n \ndigitalWrite\n(\nBUILTIN_LED\n,\n \nLOW\n);\n\n \n}\n\n\n}\n\n\n\nvoid\n \nloop\n()\n \n{\n\n \nPortal\n.\nhandleClient\n();\n\n\n}\n\n\n\n\n\n Combination with mDNS\n\u00b6\n\n\nWith \nmDNS library\n, you can access to ESP8266 by name instead of IP address after connection. The sketch can start the MDNS responder after \nAutoConnect::begin\n.\n\n\n#include\n \n\n\n\n#include\n \n\n\n\n#include\n \n\n\n\nAutoConnect\n \nPortal\n;\n\n\n\nvoid\n \nsetup\n()\n \n{\n\n \nif\n \n(\nPortal\n.\nbegin\n())\n \n{\n\n\n \nif\n \n(\nMDNS\n.\nbegin\n(\n\"esp8266\"\n))\n \n{\n\n\n \nMDNS\n.\naddService\n(\n\"http\"\n,\n \n\"tcp\"\n,\n \n80\n);\n\n\n \n}\n\n \n}\n\n\n}\n\n\n\nvoid\n \nloop\n()\n \n{\n\n \nPortal\n.\nhandleClient\n();\n\n\n}\n\n\n\n\n\n Debug print\n\u00b6\n\n\nYou can output AutoConnect monitor messages to the \nSerial\n. A monitor message activation switch is in an include header file \nAutoConnect.h\n of library source. Define \nAC_DEBUG\n macro to output the monitor messages.\n\n\n#define AC_DEBUG\n\n\n\n\n\n Disable the captive portal\n\u00b6\n\n\nIt can also prevent the captive portal from starting even if the connection at the first \nWiFi.begin\n fails. In this case, \nAutoConnect::begin\n behaves same as \nWiFi.begin\n.\n\n\nFor disabling the captive portal, \nautoRise\n sets to false with \nAutoConnectConfig\n.\n\n\nAutoConnect\n \nportal\n;\n\n\nAutoConnectConfig\n \nacConfig\n;\n\n\n\nacConfig\n.\nautoRaise\n \n=\n \nfalse\n;\n\n\nportal\n.\nconfig\n(\nacConfig\n);\n\n\nportal\n.\nbegin\n();\n\n\n\n\n\n Move the saving area of EEPROM for the credentials\n\u00b6\n\n\nBy default, the credentials saving area is occupied from the beginning of EEPROM area. \nESP8266 Arduino core document\n says that:\n\n\n\n\nThe following diagram illustrates flash layout used in Arduino environment:\n\n\n\n\n\n\n\n \n|--------------|-------|---------------|--|--|--|--|--|\n\n \n^\n \n^\n \n^\n \n^\n \n^\n\n \nSketch\n \nOTA\n \nupdate\n \nFile\n \nsystem\n \nEEPROM\n \nWiFi\n \nconfig\n \n(\nSDK\n)\n\n\n\n\n\n\n\nand\n\n\n\n\nEEPROM library uses one sector of flash located \njust after the SPIFFS\n.\n\n\n\n\nSo in the default state, the credential storage area used by AutoConnect conflicts with data owned by the user sketch. It will be destroyed together saved data in EEPROM by user sketch and AutoConnect each other. But you can move the storage area to avoid this.\n\n\nThe \nboundaryOffset\n in \nAutoConnectConfig\n specifies the start offset of the credentials storage area. The default value is 0.\n\n\n Refers the hosted ESP8266WebServer\n\u00b6\n\n\nConstructing an AutoConnect object variable without parameters then creates and starts an ESP8266WebServer inside the AutoConnect. This object variable could be referred by \nAutoConnect::host()\n function to access ESP8266WebServer instance as like below.\n\n\nAutoConnect\n \nPortal\n;\n\n\n\nPortal\n.\nbegin\n();\n\n\nESP8266WebServer\n&\n \nserver\n \n=\n \nPortal\n.\nhost\n();\n\n\nserver\n.\nsend\n(\n200\n,\n \n\"text/plain\"\n,\n \n\"Hello, world\"\n);\n\n\n\n\n\n\n\nWhen host() is valid\n\n\nThe host() can be referred at after \nAutoConnect::begin\n.\n\n\n\n\n Usage for automatically instantiated ESP8266WebServer\n\u00b6\n\n\nThe sketch can handle URL requests using ESP8266WebServer that AutoConnect started internally. ESP8266WebServer instantiated dynamically by AutoConnect can be referred to by \nAutoConnect::host\n function. The sketch can use the '\non\n' function, '\nsend\n' function, '\nclient\n' function and others by ESP8266WebServer reference of its return value.\n\n\n#include\n \n\n\n\n#include\n \n\n\n\n#include\n \n\n\n\n\nAutoConnect\n \nPortal\n;\n\n\n\nvoid\n \nhandleRoot\n()\n \n{\n\n\n \nESP8266WebServer\n&\n \nIntServer\n \n=\n \nPortal\n.\nhost\n();\n\n\n \nIntServer\n.\nsend\n(\n200\n,\n \n\"text/html\"\n,\n \n\"Hello, world\"\n);\n\n\n}\n\n\n\nvoid\n \nhandleNotFound\n()\n \n{\n\n\n \nESP8266WebServer\n&\n \nIntServer\n \n=\n \nPortal\n.\nhost\n();\n\n\n \nIntServer\n.\nsend\n(\n404\n,\n \n\"text/html\"\n,\n \n\"Unknown.\"\n);\n\n\n}\n\n\n\nvoid\n \nsetup\n()\n \n{\n\n \nbool\n \nr\n \n=\n \nPortal\n.\nbegin\n();\n\n \nif\n \n(\nr\n)\n \n{\n\n\n \nESP8266WebServer\n&\n \nIntServer\n \n=\n \nPortal\n.\nhost\n();\n\n\n \nIntServer\n.\non\n(\n\"/\"\n,\n \nhandleRoot\n);\n\n\n \nPortal\n.\nonNotFound\n(\nhandleNotFound\n);\n \n// For only onNotFound.\n\n \n}\n\n\n}\n\n\n\nvoid\n \nloop\n()\n \n{\n\n\n \nPortal\n.\nhost\n().\nhandleClient\n();\n\n\n \nPortal\n.\nhandleRequest\n();\n\n \n/* or following one line code is equ.\n\n\n Portal.handleClient();\n\n\n */\n\n\n}\n\n\n\n\n\n\n\nESP8266WebServer function should be called after AutoConnect::begin\n\n\nThe sketch cannot refer to an instance of ESP8266WebServer until AutoConnect::begin completes successfully.\n\n\n\n\n\n\nDo not use with ESP8266WebServer::begin\n\n\nESP8266WebServer is already running inside the AutoConnect.\n\n\n\n\n Use with the \nPageBuilder\n library\n\u00b6\n\n\nIn ordinary, the URL handler will respond the request by sending some HTML. \nPageBuilder\n library is HTML assembly aid. it can handle predefined HTML as like a template and simplify an HTML string assemble logic, and also the generated HTML send automatically.\n\n\nAn example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for \nGithub repository\n.\n\n\n\n\nConfiguration functions\n\u00b6\n\n\n Configuration for Soft AP\n\u00b6\n\n\nAutoConnect will activate SoftAP at failed the first \nWiFi.begin\n. It SoftAP settings are stored in \nAutoConnectConfig\n as the following parameters. The sketch could be configured SoftAP using these parameters, refer the \nAutoConnectConfig API\n for details.\n\n\n\n\nIP address of SoftAP activated.\n\n\nGateway IP address.\n\n\nSubnet mask.\n\n\nSSID for SoftAP.\n\n\nPassword for SoftAP.\n\n\nChannel.\n\n\nHidden attribute.\n\n\nAuto save credential.\n\n\nOffset address of the credentials storage area in EEPROM.\n\n\nLength of start up time after reset.\n\n\nAutomatic starting the captive portal.\n\n\nAuto reset after connection establishment.\n\n\nHome URL of the user sketch application.\n\n\n\n\n\n\nAutoConnect::config before AutoConnect::begin\n\n\nAutoConnect::config\n must be executed before \nAutoConnect::begin\n.\n\n\n\n\n Assign user sketch's home path\n\u00b6\n\n\n\"\nHOME\n\" for returning to the user's sketch homepage is displayed at the bottom of the AutoConnect menu. It could be set using the \nAutoConnect::home\n function.\n\n\n\n\n Relocate the AutoConnect home path\n\u00b6\n\n\nA home path of AutoConnect is \n/_ac\n by default. You can access from the browser with http://IPADDRESS/_ac. You can change the home path by revising \nAUTOCONNECT_URI\n macro in the include header file as \nAutoConnect.h\n.\n\n\n#define AUTOCONNECT_URI \"/_ac\"\n\n\n\n\n\n Static IP assignment \n1\n\u00b6\n\n\nIt is also possible to assign static IP Address to ESP8266 in STA mode. By default DHCP is enabled and it becomes the IP address assigned by the DHCP server with \nWiFi.begin\n.\n\n\nTo assign a static IP to ESP8266 with WIFI_MODE_STA, the following parameters are required:\n\n\n\n\nIP address.\n\n\nGateway address.\n\n\nSubnet mask.\n\n\nPrimary DNS server.\n\n\nSecondary DNS server. (optional)\n\n\n\n\nThe above parameters must be executed before \nAutoConnect::begin\n as \narguments of AutoConnectConfig\n.\n\n\nAutoConnect\n \nportal\n;\n\n\nAutoConnectConfig\n \nConfig\n;\n\n\nConfig\n.\nstaip\n \n=\n \nIPAddress\n(\n192\n,\n168\n,\n1\n,\n10\n);\n\n\nConfig\n.\nstaGateway\n \n=\n \nIPAddress\n(\n192\n,\n168\n,\n1\n,\n1\n);\n\n\nConfig\n.\nstaNetmask\n \n=\n \nIPAddress\n(\n255\n,\n255\n,\n255\n,\n0\n);\n\n\nConfig\n.\ndns1\n \n=\n \nIPAddress\n(\n192\n,\n168\n,\n1\n,\n1\n);\n\n\nportal\n.\nconfig\n(\nConfig\n);\n\n\nportal\n.\nbegin\n();\n\n\n\n\n\n\n\n\n\n\n\n\n\nStatic IP address assignment is available from version 0.9.3.\u00a0\n\u21a9", "title": "Advanced usage" }, { @@ -212,12 +212,12 @@ }, { "location": "/advancedusage/index.html#auto-save-credential", - "text": "By default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the autoSave parameter specified by AutoConnectConfig . AutoConnect Portal ; AutoConnectConfig Config ; Config . autoSave = AC_SAVECREDENTIAL_NEVER ; f Portal . config ( Config ); Portal . begin ();", + "text": "By default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the autoSave parameter specified by AutoConnectConfig . AutoConnect Portal ; AutoConnectConfig Config ; Config . autoSave = AC_SAVECREDENTIAL_NEVER ; Portal . config ( Config ); Portal . begin ();", "title": " Auto save Credential" }, { "location": "/advancedusage/index.html#captive-portal-start-detection", - "text": "The captive portal will only be activated if the first WiFi::begin fails. Sketch can detect with the AutoConnect::onDetect function that the captive portal has started. For example, the sketch can be written like as follows that turns on the LED at the start captive portal. AutoConnect Portal ; bool startCP ( IPAddress ip ) { digitalWrite ( BUILTIN_LED , HIGH ); \n Serial . println ( \"C.P. started, IP:\" + WiFi . localIP (). toString ()); \n return true ; } void setup () { \n Serial . begin ( 115200 ); \n pinMode ( BUILTIN_LED , output ); \n digitalWrite ( BUILTIN_LED , LOW ); Portal . onDetect ( startCP ); if ( Portal . begin ()) { \n digitalWrite ( BUILTIN_LED , LOW ); \n } } void loop () { \n Portal . handleClient (); }", + "text": "The captive portal will only be activated if the first WiFi::begin fails. Sketch can detect with the AutoConnect::onDetect function that the captive portal has started. For example, the sketch can be written like as follows that turns on the LED at the start captive portal. AutoConnect Portal ; bool startCP ( IPAddress ip ) { digitalWrite ( BUILTIN_LED , HIGH ); \n Serial . println ( \"C.P. started, IP:\" + WiFi . localIP (). toString ()); \n return true ; } void setup () { \n Serial . begin ( 115200 ); \n pinMode ( BUILTIN_LED , OUTPUT ); \n digitalWrite ( BUILTIN_LED , LOW ); Portal . onDetect ( startCP ); if ( Portal . begin ()) { \n digitalWrite ( BUILTIN_LED , LOW ); \n } } void loop () { \n Portal . handleClient (); }", "title": " Captive portal start detection" }, { @@ -227,12 +227,12 @@ }, { "location": "/advancedusage/index.html#debug-print", - "text": "You can output AutoConnect monitor messages to the Serial . A monitor message activation switch is in an include header file AutoConnect.h of library source. Define AC_DEBUG macro to output monitor messages. #define AC_DEBUG", + "text": "You can output AutoConnect monitor messages to the Serial . A monitor message activation switch is in an include header file AutoConnect.h of library source. Define AC_DEBUG macro to output the monitor messages. #define AC_DEBUG", "title": " Debug print" }, { "location": "/advancedusage/index.html#disable-the-captive-portal", - "text": "It can also prevent the captive portal from starting even if the connection at the first WiFi.begin fails. In this case, the behavior of AutoConnect::begin is the same as WiFi.begin . For disabling the captive portal, autoRise sets to false with AutoConnectConfig . AutoConnect portal ; AutoConnectConfig acConfig ; acConfig . autoRaise = false ; portal . config ( acConfig ); portal . begin ();", + "text": "It can also prevent the captive portal from starting even if the connection at the first WiFi.begin fails. In this case, AutoConnect::begin behaves same as WiFi.begin . For disabling the captive portal, autoRise sets to false with AutoConnectConfig . AutoConnect portal ; AutoConnectConfig acConfig ; acConfig . autoRaise = false ; portal . config ( acConfig ); portal . begin ();", "title": " Disable the captive portal" }, { @@ -482,7 +482,7 @@ }, { "location": "/examples/index.html", - "text": "How to embed the AutoConnect\n\u00b6\n\n\nHere holds two case examples. Both examples perform the same function. Only how to incorporate the \nAutoConnect\n into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the \nPageBuilder\n library for HTML assemblies.\n\n\nWhat does this example do?\n\u00b6\n\n\nUses the web interface to light the LED connected to the \nNodeMCU\n module D0 port (which could be referred to as \nBUILTIN_LED\n), the following animation is it.\n\n\nAccess to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED blinks according to the value of the button that was clicked. This example is a typical sketch of manipulating ESP8266's GPIO via WLAN.\n\n\n\n\nEmbed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots.\n\n\nEmbed AutoConnect\n\u00b6\n\n\n Pattern A.\n\u00b6\n\n\nBind to ESP8266WebServer, performs handleClient with handleRequest.\n\n\n\n\n\n\nIn what situations should the handleRequest be used.\n\n\nIt is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible.\n\n\n\n\n Pattern B.\n\u00b6\n\n\nDeclare only AutoConnect, performs handleClient.\n\n\n\n\nUsed with MQTT as a client application\n\u00b6\n\n\nThe effect of AutoConnect is not only for ESP8266 as the Web server. It has advantages for something WiFi client as well. For example, AutoConnect is also effective for publishing MQTT messages from various measurement points. Even if the SSID is different for each measurement point, it is not necessary to modify the sketch.\n\n\nThis example tries to publish the WiFi signal strength of ESP8266 with MQTT. It uses the \nThingSpeak\n for MQTT broker. ESP8266 publishes the RSSI value to the channel created on ThingSpeak as \nMQTT client\n. This example is well suited to demonstrate the usefulness of AutoConnect, as RSSI values are measured at each access point usually. Just adding a few lines of code makes it unnecessary to upload sketches with the different SSIDs rewrite for each access point.\n\n\n\n\nAdvance procedures\n\u00b6\n\n\n\n\nArduino Client for MQTT - It's the \nPubSubClient\n, install it to Arduino IDE. If you have the latest version already, this step does not need.\n\n\nCreate a channel on ThingSpeak.\n\n\nGet the Channel API Keys from ThingSpeak, put its keys to the sketch.\n\n\n\n\nThe ThingSpeak is the open IoT platform. It is capable of sending data privately to the cloud and analyzing, visualizing its data. If you do not have an account of ThingSpeak, you need that account to proceed further. ThingSpeak has the free plan for the account which uses within the scope of this example.\n1\n You can sign up with the \nThingSpeak sign-up page\n.\n\n\n\n\nWhether you should do sign-up or not.\n\n\nYou are entrusted with the final judgment of account creation for ThingSpeak. Create an account at your own risk.\n\n\n\n\nCreate a channel on ThingSpeak\n\u00b6\n\n\nSign in ThingSpeak. Select \nChannels\n to show the \nMy Channels\n, then click \nNew Channel\n.\n\n\nAt the \nNew Channel\n screen, enter each field as a below. And click \nSave Channel\n at the bottom of the screen to save.\n\n\n\n\nName: \nESP8266 Signal Strength\n\n\nDescription: \nESP8266 RSSI publish\n\n\nField1: \nRSSI\n\n\n\n\n\n\nGet Channel ID and API Keys\n\u00b6\n\n\nThe channel successfully created, you can see the channel status screen as a below. \nChannel ID\n is displayed there.\n2\n\n\n\n\nHere, switch the channel status tab to \nAPI Keys\n. The API key required to publish the message is the \nWrite API Key\n.\n\n\n\n\nThe last key you need is the \nUser API Key\n and can be confirmed it in the user profile. Pull down \nAccount\n from the top menu, select \nMy profile\n. Then you can see the ThingSpeak settings and the \nUser API Key\n is displayed middle of this screen.\n\n\n\n\nThe sketch, Publishes messages\n\u00b6\n\n\nThe complete code of the sketch is \nmqttRSSI.ino\n in the \nAutoConnect repository\n. Replace the following #define in a sketch with \nUser API Key\n, \nWrite API Key\n and \nChannel ID\n. After Keys updated, compile the sketch and upload it.\n\n\n#define MQTT_USER_KEY \"****************\" \n// Replace to User API Key.\n\n\n#define CHANNEL_ID \"******\" \n// Replace to Channel ID.\n\n\n#define CHANNEL_API_KEY_WR \"****************\" \n// Replace to the write API Key.\n\n\n\n\n\nPublish messages\n\u00b6\n\n\nAfter upload and reboot complete, the message publishing will start via the access point now set. The message carries RSSI as the current WiFi signal strength. The signal strength variations in RSSI are displayed on ThingSpeak's Channel status screen.\n\n\nHow embed to your sketches\n\u00b6\n\n\nFor the client sketches, the code required to connect to WiFi is the following four parts only.\n\n\n\n\n\n\n#include directive\n3\n\n\nInclude \nAutoConnect.h\n header file behind the include of \nESP8266WiFi.h\n.\n\n\n\n\n\n\n\n\nDeclare AutoConnect\n\n\nThe declaration of the \nAutoConnect variable\n is not accompanied by ESP8266WebServer.\n\n\n\n\n\n\n\n\nInvokes \"begin()\"\n\n\nCall \nAutoConnec::begin\n. If you need to assign a static IP address, executes \nAutoConnectConfig\n before that. \n\n\n\n\n\n\n\n\nPerforms \"handleClent()\" in \"loop()\"\n\n\nInvokes \nAutoConnect::handleClient()\n at inside \nloop()\n to enable the AutoConnect menu.\n\n\n\n\n\n\n\n\n\n window.onload = function() {\n Gifffer();\n }\n\n\n\n\n\n\n\n\n\n\n\n\nAs of March 21, 2018.\u00a0\n\u21a9\n\n\n\n\n\n\n'454951' in the example above, but your channel ID should be different.\u00a0\n\u21a9\n\n\n\n\n\n\n#include\n \n\n does not necessary for uses only client.\u00a0\n\u21a9", + "text": "How to embed the AutoConnect\n\u00b6\n\n\nHere holds two case examples. Both examples perform the same function. Only how to incorporate the \nAutoConnect\n into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the \nPageBuilder\n library for HTML assemblies.\n\n\nWhat does this example do?\n\u00b6\n\n\nUses the web interface to light the LED connected to the \nNodeMCU\n module D0 port (which could be referred to as \nBUILTIN_LED\n), the following animation is it.\n\n\nAccess to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED blinks according to the value of the button that was clicked. This example is a typical sketch of manipulating ESP8266's GPIO via WLAN.\n\n\n\n\nEmbed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots.\n\n\nEmbed AutoConnect\n\u00b6\n\n\n Pattern A.\n\u00b6\n\n\nBind to ESP8266WebServer, performs handleClient with handleRequest.\n\n\n\n\n\n\nIn what situations should the handleRequest be used.\n\n\nIt is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible.\n\n\n\n\n Pattern B.\n\u00b6\n\n\nDeclare only AutoConnect, performs handleClient.\n\n\n\n\nUsed with MQTT as a client application\n\u00b6\n\n\nThe effect of AutoConnect is not only for ESP8266 as the Web server. It has advantages for something WiFi client as well. For example, AutoConnect is also effective for publishing MQTT messages from various measurement points. Even if the SSID is different for each measurement point, it is not necessary to modify the sketch.\n\n\nThis example tries to publish the WiFi signal strength of ESP8266 with MQTT. It uses the \nThingSpeak\n for MQTT broker. ESP8266 publishes the RSSI value to the channel created on ThingSpeak as \nMQTT client\n. This example is well suited to demonstrate the usefulness of AutoConnect, as RSSI values are measured at each access point usually. Just adding a few lines of code makes it unnecessary to upload sketches with the different SSIDs rewrite for each access point.\n\n\n\n\nAdvance procedures\n\u00b6\n\n\n\n\nArduino Client for MQTT - It's the \nPubSubClient\n, install it to Arduino IDE. If you have the latest version already, this step does not need.\n\n\nCreate a channel on ThingSpeak.\n\n\nGet the Channel API Keys from ThingSpeak, put its keys to the sketch.\n\n\n\n\nThe ThingSpeak is the open IoT platform. It is capable of sending data privately to the cloud and analyzing, visualizing its data. If you do not have an account of ThingSpeak, you need that account to proceed further. ThingSpeak has the free plan for the account which uses within the scope of this example.\n1\n You can sign up with the \nThingSpeak sign-up page\n.\n\n\n\n\nWhether you should do sign-up or not.\n\n\nYou are entrusted with the final judgment of account creation for ThingSpeak. Create an account at your own risk.\n\n\n\n\nCreate a channel on ThingSpeak\n\u00b6\n\n\nSign in ThingSpeak. Select \nChannels\n to show the \nMy Channels\n, then click \nNew Channel\n.\n\n\nAt the \nNew Channel\n screen, enter each field as a below. And click \nSave Channel\n at the bottom of the screen to save.\n\n\n\n\nName: \nESP8266 Signal Strength\n\n\nDescription: \nESP8266 RSSI publish\n\n\nField1: \nRSSI\n\n\n\n\n\n\nGet Channel ID and API Keys\n\u00b6\n\n\nThe channel successfully created, you can see the channel status screen as a below. \nChannel ID\n is displayed there.\n2\n\n\n\n\nHere, switch the channel status tab to \nAPI Keys\n. The API key required to publish the message is the \nWrite API Key\n.\n\n\n\n\nThe last key you need is the \nUser API Key\n and can be confirmed it in the user profile. Pull down \nAccount\n from the top menu, select \nMy profile\n. Then you can see the ThingSpeak settings and the \nUser API Key\n is displayed middle of this screen.\n\n\n\n\nThe sketch, Publishes messages\n\u00b6\n\n\nThe complete code of the sketch is \nmqttRSSI.ino\n in the \nAutoConnect repository\n. Replace the following #define in a sketch with \nUser API Key\n, \nWrite API Key\n and \nChannel ID\n. After Keys updated, compile the sketch and upload it.\n\n\n#define MQTT_USER_KEY \"****************\" \n// Replace to User API Key.\n\n\n#define CHANNEL_ID \"******\" \n// Replace to Channel ID.\n\n\n#define CHANNEL_API_KEY_WR \"****************\" \n// Replace to the write API Key.\n\n\n\n\n\nPublish messages\n\u00b6\n\n\nAfter upload and reboot complete, the message publishing will start via the access point now set. The message carries RSSI as the current WiFi signal strength. The signal strength variations in RSSI are displayed on ThingSpeak's Channel status screen.\n\n\nHow embed to your sketches\n\u00b6\n\n\nFor the client sketches, the code required to connect to WiFi is the following four parts only.\n\n\n\n\n\n\n#include directive\n3\n\n\nInclude \nAutoConnect.h\n header file behind the include of \nESP8266WiFi.h\n.\n\n\n\n\n\n\n\n\nDeclare AutoConnect\n\n\nThe declaration of the \nAutoConnect variable\n is not accompanied by ESP8266WebServer.\n\n\n\n\n\n\n\n\nInvokes \"begin()\"\n\n\nCall \nAutoConnect::begin\n. If you need to assign a static IP address, executes \nAutoConnectConfig\n before that. \n\n\n\n\n\n\n\n\nPerforms \"handleClent()\" in \"loop()\"\n\n\nInvokes \nAutoConnect::handleClient()\n at inside \nloop()\n to enable the AutoConnect menu.\n\n\n\n\n\n\n\n\n\n window.onload = function() {\n Gifffer();\n }\n\n\n\n\n\n\n\n\n\n\n\n\nAs of March 21, 2018.\u00a0\n\u21a9\n\n\n\n\n\n\n'454951' in the example above, but your channel ID should be different.\u00a0\n\u21a9\n\n\n\n\n\n\n#include\n \n\n does not necessary for uses only client.\u00a0\n\u21a9", "title": "Examples" }, { @@ -542,7 +542,7 @@ }, { "location": "/examples/index.html#how-embed-to-your-sketches", - "text": "For the client sketches, the code required to connect to WiFi is the following four parts only. #include directive 3 Include AutoConnect.h header file behind the include of ESP8266WiFi.h . Declare AutoConnect The declaration of the AutoConnect variable is not accompanied by ESP8266WebServer. Invokes \"begin()\" Call AutoConnec::begin . If you need to assign a static IP address, executes AutoConnectConfig before that. Performs \"handleClent()\" in \"loop()\" Invokes AutoConnect::handleClient() at inside loop() to enable the AutoConnect menu. \n window.onload = function() {\n Gifffer();\n } As of March 21, 2018.\u00a0 \u21a9 '454951' in the example above, but your channel ID should be different.\u00a0 \u21a9 #include does not necessary for uses only client.\u00a0 \u21a9", + "text": "For the client sketches, the code required to connect to WiFi is the following four parts only. #include directive 3 Include AutoConnect.h header file behind the include of ESP8266WiFi.h . Declare AutoConnect The declaration of the AutoConnect variable is not accompanied by ESP8266WebServer. Invokes \"begin()\" Call AutoConnect::begin . If you need to assign a static IP address, executes AutoConnectConfig before that. Performs \"handleClent()\" in \"loop()\" Invokes AutoConnect::handleClient() at inside loop() to enable the AutoConnect menu. \n window.onload = function() {\n Gifffer();\n } As of March 21, 2018.\u00a0 \u21a9 '454951' in the example above, but your channel ID should be different.\u00a0 \u21a9 #include does not necessary for uses only client.\u00a0 \u21a9", "title": "How embed to your sketches" }, { diff --git a/mkdocs/advancedusage.md b/mkdocs/advancedusage.md index 13af696..65ca172 100644 --- a/mkdocs/advancedusage.md +++ b/mkdocs/advancedusage.md @@ -11,7 +11,7 @@ By default, AutoConnect saves the credentials of the established connection in E ```arduino hl_lines="3" AutoConnect Portal; AutoConnectConfig Config; -Config.autoSave = AC_SAVECREDENTIAL_NEVER;f +Config.autoSave = AC_SAVECREDENTIAL_NEVER; Portal.config(Config); Portal.begin(); ``` @@ -31,7 +31,7 @@ bool startCP(IPAddress ip) { void setup() { Serial.begin(115200); - pinMode(BUILTIN_LED, output); + pinMode(BUILTIN_LED, OUTPUT); digitalWrite(BUILTIN_LED, LOW); Portal.onDetect(startCP); if (Portal.begin()) { @@ -69,7 +69,7 @@ void loop() { ### Debug print -You can output AutoConnect monitor messages to the **Serial**. A monitor message activation switch is in an include header file [AutoConnect.h](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnect.h) of library source. Define [**AC_DEBUG**](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnect.h#L27) macro to output monitor messages. +You can output AutoConnect monitor messages to the **Serial**. A monitor message activation switch is in an include header file [AutoConnect.h](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnect.h) of library source. Define [**AC_DEBUG**](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnect.h#L27) macro to output the monitor messages. ```cpp #define AC_DEBUG @@ -77,7 +77,7 @@ You can output AutoConnect monitor messages to the **Serial**. A monitor message ### Disable the captive portal -It can also prevent the captive portal from starting even if the connection at the first *WiFi.begin* fails. In this case, the behavior of [*AutoConnect::begin*](api.md#begin) is the same as *WiFi.begin*. +It can also prevent the captive portal from starting even if the connection at the first *WiFi.begin* fails. In this case, [*AutoConnect::begin*](api.md#begin) behaves same as *WiFi.begin*. For disabling the captive portal, [**autoRise**](api.md#autorise) sets to false with [**AutoConnectConfig**](api.md#autoconnectconfig-api). diff --git a/mkdocs/examples.md b/mkdocs/examples.md index c9d4165..1dbbd6c 100644 --- a/mkdocs/examples.md +++ b/mkdocs/examples.md @@ -110,7 +110,7 @@ For the client sketches, the code required to connect to WiFi is the following f 3. Invokes "begin()" - Call [**AutoConnec::begin**](api.md#begin). If you need to assign a static IP address, executes [**AutoConnectConfig**](api.md#autoconnectconfig-api) before that. + Call [**AutoConnect::begin**](api.md#begin). If you need to assign a static IP address, executes [**AutoConnectConfig**](api.md#autoconnectconfig-api) before that.