Under the work of v0.9.7 documentation

pull/41/head
Hieromon Ikasamo 6 years ago
parent 401000579a
commit bd16286da9
  1. 63
      docs/404.html
  2. 99
      docs/acelements.html
  3. 105
      docs/achandling.html
  4. 63
      docs/acintro.html
  5. 63
      docs/acjson.html
  6. 97
      docs/advancedusage.html
  7. 63
      docs/api.html
  8. 63
      docs/apiaux.html
  9. 63
      docs/apiconfig.html
  10. 86
      docs/apielements.html
  11. 67
      docs/apiextra.html
  12. 63
      docs/basicusage.html
  13. 63
      docs/changelog.html
  14. 83
      docs/faq.html
  15. 63
      docs/gettingstarted.html
  16. 97
      docs/howtoembed.html
  17. BIN
      docs/images/aux_fsbrowser.gif
  18. 1029
      docs/images/fsbrowser_ba.svg
  19. 103
      docs/index.html
  20. 63
      docs/license.html
  21. 63
      docs/menu.html
  22. 875
      docs/menuize.html
  23. 2
      docs/search/search_index.json
  24. 48
      docs/sitemap.xml
  25. BIN
      docs/sitemap.xml.gz
  26. 5
      mkdocs.yml
  27. 34
      mkdocs/advancedusage.md
  28. 2
      mkdocs/howtoembed.md
  29. BIN
      mkdocs/images/aux_fsbrowser.gif
  30. 1029
      mkdocs/images/fsbrowser_ba.svg
  31. 19
      mkdocs/index.md
  32. 42
      mkdocs/menuize.md

@ -258,6 +258,17 @@
<li class="md-tabs__item">
<a href="/AutoConnect/howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -529,13 +540,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="/AutoConnect/examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/AutoConnect/howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -622,6 +633,13 @@
label label
</a> </a>
</li>
<li class="md-nav__item">
<a href="#pattern" title=" pattern" class="md-nav__link">
pattern
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@ -970,9 +988,28 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a> </a>
</li> </li>
@ -982,6 +1019,35 @@
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="faq.html" title="FAQ" class="md-nav__link"> <a href="faq.html" title="FAQ" class="md-nav__link">
FAQ FAQ
@ -1216,6 +1282,13 @@
label label
</a> </a>
</li>
<li class="md-nav__item">
<a href="#pattern" title=" pattern" class="md-nav__link">
pattern
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@ -1562,7 +1635,7 @@ Only <i class="far fa-square"></i> will be displayed if a label is not specified
<small><strong><code>AutoConnectInput input("input", "", "Server", "MQTT broker server");</code></strong></small></p> <small><strong><code>AutoConnectInput input("input", "", "Server", "MQTT broker server");</code></strong></small></p>
<p><small>On the page:</small><br><img src="./images/acinput.png"></p> <p><small>On the page:</small><br><img src="./images/acinput.png"></p>
<h3 id="constructor_3"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_3" title="Permanent link">&para;</a></h3> <h3 id="constructor_3"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_3" title="Permanent link">&para;</a></h3>
<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectInput(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">placeholder)</span> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectInput(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">pattern,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">placeholder)</span>
</pre></div> </pre></div>
<h3 id="name_3"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_3" title="Permanent link">&para;</a></h3> <h3 id="name_3"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_3" title="Permanent link">&para;</a></h3>
@ -1571,6 +1644,26 @@ Only <i class="far fa-square"></i> will be displayed if a label is not specified
<p>It becomes a string value of the <code>value</code> attribute of an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;text&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag. The text entered from the custom Web page will be grouped in the query string of the form submission and the string set before accessing the page will be displayed as the initial value.</p> <p>It becomes a string value of the <code>value</code> attribute of an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;text&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag. The text entered from the custom Web page will be grouped in the query string of the form submission and the string set before accessing the page will be displayed as the initial value.</p>
<h3 id="label_1"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_1" title="Permanent link">&para;</a></h3> <h3 id="label_1"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_1" title="Permanent link">&para;</a></h3>
<p>A <code>label</code> is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an id attribute. The input box and the label are connected by the id attribute.</p> <p>A <code>label</code> is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an id attribute. The input box and the label are connected by the id attribute.</p>
<h3 id="pattern"><i class="fa fa-caret-right"></i> pattern<a class="headerlink" href="#pattern" title="Permanent link">&para;</a></h3>
<p>A <code>pattern</code> specifies a <a href="https://www.w3schools.com/js/js_regexp.asp">regular expression</a> that the AutoConnectInput element's value is checked against on form submission. If it is invalid, the background color will change, but it will be sent even if the data format does not match. </p>
<ul>
<li>The password that must contain 8 or more characters that are of at least one number, and one uppercase and lowercase letter:<br><code>(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}</code></li>
<li>
<p>Email address as <em>characters@characters.domain</em>:<br><code>[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$</code></p>
</li>
<li>
<p>IP address</p>
</li>
<li>
<p>Host name of the internet</p>
</li>
<li>
<p>Date (MM-DD-YYYY)</p>
</li>
<li>
<p>Twitter account:<br><code>^@?(\w){1,15}$</code></p>
</li>
</ul>
<h3 id="placeholder"><i class="fa fa-caret-right"></i> placeholder<a class="headerlink" href="#placeholder" title="Permanent link">&para;</a></h3> <h3 id="placeholder"><i class="fa fa-caret-right"></i> placeholder<a class="headerlink" href="#placeholder" title="Permanent link">&para;</a></h3>
<p>A placeholder is an option string. Specification of a placeholder will generate a <code>placeholder</code> attribute for the input tag.</p> <p>A placeholder is an option string. Specification of a placeholder will generate a <code>placeholder</code> attribute for the input tag.</p>
<h2 id="autoconnectradio">AutoConnectRadio<a class="headerlink" href="#autoconnectradio" title="Permanent link">&para;</a></h2> <h2 id="autoconnectradio">AutoConnectRadio<a class="headerlink" href="#autoconnectradio" title="Permanent link">&para;</a></h2>

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -516,8 +527,8 @@
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#parameter-handling" title="Parameter handling" class="md-nav__link"> <a href="#custom-field-data-handling" title="Custom field data handling" class="md-nav__link">
Parameter handling Custom field data handling
</a> </a>
<nav class="md-nav"> <nav class="md-nav">
@ -549,6 +560,20 @@
Over typing with LoadElement function Over typing with LoadElement function
</a> </a>
</li>
<li class="md-nav__item">
<a href="#check-data-against-on-submission" title=" Check data against on submission" class="md-nav__link">
Check data against on submission
</a>
</li>
<li class="md-nav__item">
<a href="#convert-data-to-actually-type" title=" Convert data to actually type" class="md-nav__link">
Convert data to actually type
</a>
</li> </li>
</ul> </ul>
@ -688,13 +713,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>
@ -804,8 +877,8 @@
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#parameter-handling" title="Parameter handling" class="md-nav__link"> <a href="#custom-field-data-handling" title="Custom field data handling" class="md-nav__link">
Parameter handling Custom field data handling
</a> </a>
<nav class="md-nav"> <nav class="md-nav">
@ -837,6 +910,20 @@
Over typing with LoadElement function Over typing with LoadElement function
</a> </a>
</li>
<li class="md-nav__item">
<a href="#check-data-against-on-submission" title=" Check data against on submission" class="md-nav__link">
Check data against on submission
</a>
</li>
<li class="md-nav__item">
<a href="#convert-data-to-actually-type" title=" Convert data to actually type" class="md-nav__link">
Convert data to actually type
</a>
</li> </li>
</ul> </ul>
@ -1073,7 +1160,7 @@
<span style="color: #f8f8f2">]</span> <span style="color: #f8f8f2">]</span>
</pre></div> </pre></div>
<h2 id="parameter-handling">Parameter handling<a class="headerlink" href="#parameter-handling" title="Permanent link">&para;</a></h2> <h2 id="custom-field-data-handling">Custom field data handling<a class="headerlink" href="#custom-field-data-handling" title="Permanent link">&para;</a></h2>
<p>A sketch can access variables of AutoConnectElements in the custom Web page. The value entered into the AutoConnectElements on the page is stored in the member variable of each element by AutoConnect whenever GET/POST transmission occurs. </p> <p>A sketch can access variables of AutoConnectElements in the custom Web page. The value entered into the AutoConnectElements on the page is stored in the member variable of each element by AutoConnect whenever GET/POST transmission occurs. </p>
<p>The following diagram shows the flow of the input values of a custom Web page into a sketch and is the basis for actions to manipulate the values of custom Web pages using sketches.</p> <p>The following diagram shows the flow of the input values of a custom Web page into a sketch and is the basis for actions to manipulate the values of custom Web pages using sketches.</p>
<p><img src="./images/ac_param_flow.svg"></p> <p><img src="./images/ac_param_flow.svg"></p>
@ -1327,8 +1414,10 @@ ESP8266WebServer class will parse the query string and rebuilds its arguments wh
<span style="color: #f8f8f2">portal.begin();</span> <span style="color: #f8f8f2">portal.begin();</span>
</pre></div> </pre></div>
<h3 id="over-typing-with-loadelement-function"><i class="fa fa-desktop"></i> Over typing with LoadElement function<a class="headerlink" href="#over-typing-with-loadelement-function" title="Permanent link">&para;</a></h3> <h3 id="over-typing-with-loadelement-function"><i class="fa fa-wpforms"></i> Over typing with LoadElement function<a class="headerlink" href="#over-typing-with-loadelement-function" title="Permanent link">&para;</a></h3>
<p>The <a href="apiaux.html#loadelement">AutoConnectAux::loadElement</a> function overwrites its value when loading an AutoConnectElement. If the loadElement function wields an element with an input value, the previous value will be lost by the loaded value. If you need to preserve input values even during page transition operations, we recommend that you load parameters only once at an early stage in the <code>setup()</code> of sketches.</p> <p>The <a href="apiaux.html#loadelement">AutoConnectAux::loadElement</a> function overwrites its value when loading an AutoConnectElement. If the loadElement function wields an element with an input value, the previous value will be lost by the loaded value. If you need to preserve input values even during page transition operations, we recommend that you load parameters only once at an early stage in the <code>setup()</code> of sketches.</p>
<h3 id="check-data-against-on-submission"><i class="fa fa-check-square"></i> Check data against on submission<a class="headerlink" href="#check-data-against-on-submission" title="Permanent link">&para;</a></h3>
<h3 id="convert-data-to-actually-type"><i class="fa fa-exchange"></i> Convert data to actually type<a class="headerlink" href="#convert-data-to-actually-type" title="Permanent link">&para;</a></h3>
<h2 id="transitions-of-the-custom-web-pages">Transitions of the custom Web pages<a class="headerlink" href="#transitions-of-the-custom-web-pages" title="Permanent link">&para;</a></h2> <h2 id="transitions-of-the-custom-web-pages">Transitions of the custom Web pages<a class="headerlink" href="#transitions-of-the-custom-web-pages" title="Permanent link">&para;</a></h2>
<h3 id="the-uri-of-the-custom-web-pages">The URI of the custom Web pages<a class="headerlink" href="#the-uri-of-the-custom-web-pages" title="Permanent link">&para;</a></h3> <h3 id="the-uri-of-the-custom-web-pages">The URI of the custom Web pages<a class="headerlink" href="#the-uri-of-the-custom-web-pages" title="Permanent link">&para;</a></h3>
<p>The transition of the custom Web page follows the URI of the page, but the ESP8266WebServer class does not know the URI of an AutoConnectAux page. (Registering a custom Web page does not use the <em>ESP8266WebServer::on</em>/<em>WebServer::on</em> function.) Therefore ESP8266WebServer class does not detect its URI access. If you want to detect an http request to AutoConnectAux's custom Web page, you need to register its URI with the <a href="apiaux.html#on">AutoConnectAux::on</a> function.</p> <p>The transition of the custom Web page follows the URI of the page, but the ESP8266WebServer class does not know the URI of an AutoConnectAux page. (Registering a custom Web page does not use the <em>ESP8266WebServer::on</em>/<em>WebServer::on</em> function.) Therefore ESP8266WebServer class does not detect its URI access. If you want to detect an http request to AutoConnectAux's custom Web page, you need to register its URI with the <a href="apiaux.html#on">AutoConnectAux::on</a> function.</p>

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -615,13 +626,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -738,13 +749,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -264,6 +264,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -735,9 +746,28 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a> </a>
</li> </li>
@ -747,6 +777,35 @@
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="faq.html" title="FAQ" class="md-nav__link"> <a href="faq.html" title="FAQ" class="md-nav__link">
FAQ FAQ
@ -1125,7 +1184,7 @@ Also, if you want to stop AutoConnect completely when the captive portal is time
<h3 id="cast-items-of-your-sketch-own-into-the-autoccnnect-menu"><i class="fa fa-caret-right"></i> Cast items of your sketch own into the AutocCnnect menu<a class="headerlink" href="#cast-items-of-your-sketch-own-into-the-autoccnnect-menu" title="Permanent link">&para;</a></h3> <h3 id="cast-items-of-your-sketch-own-into-the-autoccnnect-menu"><i class="fa fa-caret-right"></i> Cast items of your sketch own into the AutocCnnect menu<a class="headerlink" href="#cast-items-of-your-sketch-own-into-the-autoccnnect-menu" title="Permanent link">&para;</a></h3>
<p>If your sketch is handling your own web page, you can call that page from the <a href="menu.html">AutoConnect menu</a>. Unlike the custom Web pages by <a href="apiaux.html#autoconnectaux">AutoConnectAux</a>, this allows AutoConnect menu to legacy web pages registered by <em>ESP8266WebServer::on</em>/<em>WebServer::on</em> function.</p> <p>If your sketch is handling your own web page, you can call that page from the <a href="menu.html">AutoConnect menu</a>. Unlike the custom Web pages by <a href="apiaux.html#autoconnectaux">AutoConnectAux</a>, this allows AutoConnect menu to legacy web pages registered by <em>ESP8266WebServer::on</em>/<em>WebServer::on</em> function.</p>
<p>To implement this with your sketch, use only the <a href="apiaux.html#autoconnectaux">AutoConnectAux</a> constructed with the URI of that page. <a href="acelements.html">AutoConnectElements</a> is not required. The basic procedure for this as follows. The FSBrowser menu as the below has <strong>Edit</strong> and <strong>List</strong> item, which are implemented according to this basic procedure.</p> <p>To implement this with your sketch, use only the <a href="apiaux.html#autoconnectaux">AutoConnectAux</a> constructed with the URI of that page. <a href="acelements.html">AutoConnectElements</a> is not required. The basic procedure for this as follows. </p>
<ol> <ol>
<li>Declare AutoConnectAux for each legacy page. It includes the URI of the page and item string which will display in the AutoConnect menu.</li> <li>Declare AutoConnectAux for each legacy page. It includes the URI of the page and item string which will display in the AutoConnect menu.</li>
<li>Sketch legacy page handlers.</li> <li>Sketch legacy page handlers.</li>
@ -1134,37 +1193,7 @@ Also, if you want to stop AutoConnect completely when the captive portal is time
<li><a href="api.html#begin">Begin</a> the portal.</li> <li><a href="api.html#begin">Begin</a> the portal.</li>
<li>Performs <a href="api.html#handleClient">AutoConnect::handleClient</a> in the <strong>loop</strong> function.</li> <li>Performs <a href="api.html#handleClient">AutoConnect::handleClient</a> in the <strong>loop</strong> function.</li>
</ol> </ol>
<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ESP8266WebServer</span> <span style="color: #f8f8f2">Server;</span> <p>For details see the <a href="menuize.html">Constructing menu</a> section of Examples page.</p>
<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #a6e22e">Portal</span><span style="color: #f8f8f2">(Server);</span>
<span style="color: #75715e">// Declare for menu item for legacy pages</span>
<span style="background-color: #49483e"><span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #a6e22e">FSBedit</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/edit&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Edit&quot;</span><span style="color: #f8f8f2">);</span>
</span><span style="background-color: #49483e"><span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #a6e22e">FSBlist</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/list?dir=</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">/</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;List&quot;</span><span style="color: #f8f8f2">);</span>
</span>
<span style="color: #75715e">// /edit page handler</span>
<span style="color: #f8f8f2">Void</span> <span style="color: #a6e22e">handleEdit</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
<span style="color: #f8f8f2">...</span>
<span style="color: #f8f8f2">}</span>
<span style="color: #75715e">// /list page handler</span>
<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">handleList</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
<span style="color: #f8f8f2">...</span>
<span style="color: #f8f8f2">}</span>
<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
<span style="color: #75715e">// Register legacy page handler to WebServer</span>
<span style="color: #f8f8f2">Server.on(</span><span style="color: #e6db74">&quot;/edit&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">handleEdit);</span>
<span style="color: #f8f8f2">Server.on(</span><span style="color: #e6db74">&quot;/list&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">handleList);</span>
<span style="color: #75715e">// Insert the menu items for legacy pages</span>
<span style="background-color: #49483e"> <span style="color: #f8f8f2">Portal.join({</span> <span style="color: #f8f8f2">FSBedit,</span> <span style="color: #f8f8f2">FSBlist</span> <span style="color: #f8f8f2">});</span>
</span> <span style="color: #75715e">// Start portal</span>
<span style="color: #f8f8f2">portal.begin();</span>
<span style="color: #f8f8f2">}</span>
<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
<span style="color: #f8f8f2">Portal.handleClient();</span>
<span style="color: #f8f8f2">}</span>
</pre></div>
<h3 id="change-menu-title"><i class="fa fa-caret-right"></i> Change menu title<a class="headerlink" href="#change-menu-title" title="Permanent link">&para;</a></h3> <h3 id="change-menu-title"><i class="fa fa-caret-right"></i> Change menu title<a class="headerlink" href="#change-menu-title" title="Permanent link">&para;</a></h3>
<p>Although the default menu title is <strong>AutoConnect</strong>, you can change the title by setting <a href="apiconfig.html#title">AutoConnectConfig::title</a>. To set the menu title properly, you must set before calling <a href="api.html#begin">AutoConnect::begin</a>.</p> <p>Although the default menu title is <strong>AutoConnect</strong>, you can change the title by setting <a href="apiconfig.html#title">AutoConnectConfig::title</a>. To set the menu title properly, you must set before calling <a href="api.html#begin">AutoConnect::begin</a>.</p>
<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span>

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -724,13 +735,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -676,13 +687,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -774,13 +785,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -797,6 +808,13 @@
label label
</a> </a>
</li>
<li class="md-nav__item">
<a href="#pattern" title=" pattern" class="md-nav__link">
pattern
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@ -1013,9 +1031,40 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a> </a>
</li> </li>
@ -1025,6 +1074,23 @@
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="faq.html" title="FAQ" class="md-nav__link"> <a href="faq.html" title="FAQ" class="md-nav__link">
FAQ FAQ
@ -1338,6 +1404,13 @@
label label
</a> </a>
</li>
<li class="md-nav__item">
<a href="#pattern" title=" pattern" class="md-nav__link">
pattern
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@ -1656,13 +1729,14 @@ Returns type of AutoConnectElement.
</dl></p> </dl></p>
<h2 id="autoconnectinput">AutoConnectInput<a class="headerlink" href="#autoconnectinput" title="Permanent link">&para;</a></h2> <h2 id="autoconnectinput">AutoConnectInput<a class="headerlink" href="#autoconnectinput" title="Permanent link">&para;</a></h2>
<h3 id="constructor_3"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_3" title="Permanent link">&para;</a></h3> <h3 id="constructor_3"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_3" title="Permanent link">&para;</a></h3>
<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectInput(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">placeholder</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">)</span> <p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectInput(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">pattern</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">placeholder</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">)</span>
</pre></div> </pre></div>
<dl class="apidl"> <dl class="apidl">
<dt><strong>Parameters</strong></dt> <dt><strong>Parameters</strong></dt>
<dd><span class="apidef">name</span>The element name.</dd> <dd><span class="apidef">name</span>The element name.</dd>
<dd><span class="apidef">value</span>Value of the element.</dd> <dd><span class="apidef">value</span>Value of the element.</dd>
<dd><span class="apidef">label</span>Label string.</dd> <dd><span class="apidef">label</span>Label string.</dd>
<dd><span class="apidef">pattern</span>Regular expression string for checking data format.</dd>
<dd><span class="apidef">placeholder</span>A placeholder string.</dd> <dd><span class="apidef">placeholder</span>A placeholder string.</dd>
</dl></p> </dl></p>
<h3 id="public-member-variables_3"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_3" title="Permanent link">&para;</a></h3> <h3 id="public-member-variables_3"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_3" title="Permanent link">&para;</a></h3>
@ -1684,6 +1758,12 @@ Returns type of AutoConnectElement.
<dt><strong>Type</strong></dt> <dt><strong>Type</strong></dt>
<dd><span class="apidef" style="width:230px;">String</span></dd> <dd><span class="apidef" style="width:230px;">String</span></dd>
</dl></p> </dl></p>
<h4 id="pattern"><i class="fa fa-caret-right"></i> pattern<a class="headerlink" href="#pattern" title="Permanent link">&para;</a></h4>
<p>A pattern specifies a regular expression that the input-box's value is checked against on form submission.
<dl class="apidl">
<dt><strong>Type</strong></dt>
<dd><span class="apidef" style="width:230px;">String</span></dd>
</dl></p>
<h4 id="placeholder"><i class="fa fa-caret-right"></i> placeholder<a class="headerlink" href="#placeholder" title="Permanent link">&para;</a></h4> <h4 id="placeholder"><i class="fa fa-caret-right"></i> placeholder<a class="headerlink" href="#placeholder" title="Permanent link">&para;</a></h4>
<p>A placeholder is an option string. Specification of a placeholder will generate a <code>placeholder</code> attribute for the input tag. <p>A placeholder is an option string. Specification of a placeholder will generate a <code>placeholder</code> attribute for the input tag.
<dl class="apidl"> <dl class="apidl">

@ -266,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -573,9 +584,28 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a> </a>
</li> </li>
@ -585,6 +615,35 @@
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="faq.html" title="FAQ" class="md-nav__link"> <a href="faq.html" title="FAQ" class="md-nav__link">
FAQ FAQ
@ -719,13 +778,13 @@
</a> </a>
<a href="examples.html" title="Examples" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> <a href="howtoembed.html" title="How to embed" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis"> <span class="md-flex__ellipsis">
<span class="md-footer-nav__direction"> <span class="md-footer-nav__direction">
Next Next
</span> </span>
Examples How to embed
</span> </span>
</div> </div>
<div class="md-flex__cell md-flex__cell--shrink"> <div class="md-flex__cell md-flex__cell--shrink">

@ -264,6 +264,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -664,13 +675,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -264,6 +264,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -535,13 +546,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -264,6 +264,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -535,9 +546,28 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a> </a>
</li> </li>
@ -547,6 +577,35 @@
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active"> <li class="md-nav__item md-nav__item--active">
@ -699,6 +758,13 @@
I cannot complete to Wi-Fi login from smartphone. I cannot complete to Wi-Fi login from smartphone.
</a> </a>
</li>
<li class="md-nav__item">
<a href="#i-can-not-see-the-custom-web-page" title=" I can not see the custom web page." class="md-nav__link">
I can not see the custom web page.
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@ -944,6 +1010,13 @@
I cannot complete to Wi-Fi login from smartphone. I cannot complete to Wi-Fi login from smartphone.
</a> </a>
</li>
<li class="md-nav__item">
<a href="#i-can-not-see-the-custom-web-page" title=" I can not see the custom web page." class="md-nav__link">
I can not see the custom web page.
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@ -1227,6 +1300,8 @@ wdt reset
<p>It consumes about 2K bytes in the static and about 12K bytes are consumed at the moment when menu executed.</p> <p>It consumes about 2K bytes in the static and about 12K bytes are consumed at the moment when menu executed.</p>
<h2 id="i-cannot-complete-to-wi-fi-login-from-smartphone"><i class="fa fa-question-circle"></i> I cannot complete to Wi-Fi login from smartphone.<a class="headerlink" href="#i-cannot-complete-to-wi-fi-login-from-smartphone" title="Permanent link">&para;</a></h2> <h2 id="i-cannot-complete-to-wi-fi-login-from-smartphone"><i class="fa fa-question-circle"></i> I cannot complete to Wi-Fi login from smartphone.<a class="headerlink" href="#i-cannot-complete-to-wi-fi-login-from-smartphone" title="Permanent link">&para;</a></h2>
<p>Because AutoConnect does not send a login success response to the captive portal requests from the smartphone. The login success response varies iOS, Android and Windows. By analyzing the request URL of different login success inquiries for each OS, the correct behavior can be implemented, but not yet. Please resets ESP8266 from the AutoConnect menu.</p> <p>Because AutoConnect does not send a login success response to the captive portal requests from the smartphone. The login success response varies iOS, Android and Windows. By analyzing the request URL of different login success inquiries for each OS, the correct behavior can be implemented, but not yet. Please resets ESP8266 from the AutoConnect menu.</p>
<h2 id="i-can-not-see-the-custom-web-page"><i class="fa fa-question-circle"></i> I can not see the custom web page.<a class="headerlink" href="#i-can-not-see-the-custom-web-page" title="Permanent link">&para;</a></h2>
<p>JSON parse error</p>
<h2 id="autoconnect-behaves-not-stable-with-my-sketch-yet"><i class="fa fa-question-circle"></i> AutoConnect behaves not stable with my sketch yet.<a class="headerlink" href="#autoconnect-behaves-not-stable-with-my-sketch-yet" title="Permanent link">&para;</a></h2> <h2 id="autoconnect-behaves-not-stable-with-my-sketch-yet"><i class="fa fa-question-circle"></i> AutoConnect behaves not stable with my sketch yet.<a class="headerlink" href="#autoconnect-behaves-not-stable-with-my-sketch-yet" title="Permanent link">&para;</a></h2>
<p>If AutoConnect behavior is not stable with your sketch, you can try the following measures.</p> <p>If AutoConnect behavior is not stable with your sketch, you can try the following measures.</p>
<h3 id="1-change-wifi-channel">1. Change WiFi channel<a class="headerlink" href="#1-change-wifi-channel" title="Permanent link">&para;</a></h3> <h3 id="1-change-wifi-channel">1. Change WiFi channel<a class="headerlink" href="#1-change-wifi-channel" title="Permanent link">&para;</a></h3>
@ -1285,7 +1360,7 @@ wdt reset
<div class="md-footer-nav"> <div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid"> <nav class="md-footer-nav__inner md-grid">
<a href="examples.html" title="Examples" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> <a href="menuize.html" title="Constucting menu" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink"> <div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div> </div>
@ -1294,7 +1369,7 @@ wdt reset
<span class="md-footer-nav__direction"> <span class="md-footer-nav__direction">
Previous Previous
</span> </span>
Examples Constucting menu
</span> </span>
</div> </div>
</a> </a>

@ -264,6 +264,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -603,13 +614,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -13,7 +13,7 @@
<meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"> <meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface">
<link rel="canonical" href="https://Hieromon.github.io/AutoConnect/examples.html"> <link rel="canonical" href="https://Hieromon.github.io/AutoConnect/howtoembed.html">
<meta name="author" content="Hieromon Ikasamo"> <meta name="author" content="Hieromon Ikasamo">
@ -42,7 +42,7 @@
<title>Examples - AutoConnect for ESP8266/ESP32</title> <title>How to embed - AutoConnect for ESP8266/ESP32</title>
@ -115,7 +115,7 @@
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" data-md-component="overlay" for="__drawer"></label> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
<a href="#how-to-embed-the-autoconnect" tabindex="1" class="md-skip"> <a href="#embed-the-autoconnect-to-the-sketch" tabindex="1" class="md-skip">
Skip to content Skip to content
</a> </a>
@ -141,7 +141,7 @@
AutoConnect for ESP8266/ESP32 AutoConnect for ESP8266/ESP32
</span> </span>
<span class="md-header-nav__topic"> <span class="md-header-nav__topic">
Examples How to embed
</span> </span>
@ -213,14 +213,16 @@
<nav class="md-tabs" data-md-component="tabs">
<nav class="md-tabs md-tabs--active" data-md-component="tabs">
<div class="md-tabs__inner md-grid"> <div class="md-tabs__inner md-grid">
<ul class="md-tabs__list"> <ul class="md-tabs__list">
<li class="md-tabs__item"> <li class="md-tabs__item">
<a href="index.html" title="Overview" class="md-tabs__link md-tabs__link--active"> <a href="index.html" title="Overview" class="md-tabs__link">
Overview Overview
</a> </a>
@ -264,6 +266,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link md-tabs__link--active">
Examples
</a>
</li>
@ -537,17 +550,38 @@
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked>
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active"> <li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"> <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc">
Examples How to embed
</label> </label>
<a href="examples.html" title="Examples" class="md-nav__link md-nav__link--active"> <a href="howtoembed.html" title="How to embed" class="md-nav__link md-nav__link--active">
Examples How to embed
</a> </a>
@ -559,8 +593,8 @@
<ul class="md-nav__list" data-md-scrollfix> <ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#how-to-embed-the-autoconnect" title="How to embed the AutoConnect" class="md-nav__link"> <a href="#embed-the-autoconnect-to-the-sketch" title="Embed the AutoConnect to the sketch" class="md-nav__link">
How to embed the AutoConnect Embed the AutoConnect to the sketch
</a> </a>
</li> </li>
@ -676,6 +710,35 @@
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="faq.html" title="FAQ" class="md-nav__link"> <a href="faq.html" title="FAQ" class="md-nav__link">
FAQ FAQ
@ -726,8 +789,8 @@
<ul class="md-nav__list" data-md-scrollfix> <ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#how-to-embed-the-autoconnect" title="How to embed the AutoConnect" class="md-nav__link"> <a href="#embed-the-autoconnect-to-the-sketch" title="Embed the AutoConnect to the sketch" class="md-nav__link">
How to embed the AutoConnect Embed the AutoConnect to the sketch
</a> </a>
</li> </li>
@ -844,9 +907,9 @@
<h1>Examples</h1> <h1>How to embed</h1>
<h2 id="how-to-embed-the-autoconnect">How to embed the AutoConnect<a class="headerlink" href="#how-to-embed-the-autoconnect" title="Permanent link">&para;</a></h2> <h2 id="embed-the-autoconnect-to-the-sketch">Embed the AutoConnect to the sketch<a class="headerlink" href="#embed-the-autoconnect-to-the-sketch" title="Permanent link">&para;</a></h2>
<p>Here holds two case examples. Both examples perform the same function. Only how to incorporate the <strong>AutoConnect</strong> into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library for HTML assemblies.</p> <p>Here holds two case examples. Both examples perform the same function. Only how to incorporate the <strong>AutoConnect</strong> into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library for HTML assemblies.</p>
<h2 id="what-does-this-example-do">What does this example do?<a class="headerlink" href="#what-does-this-example-do" title="Permanent link">&para;</a></h2> <h2 id="what-does-this-example-do">What does this example do?<a class="headerlink" href="#what-does-this-example-do" title="Permanent link">&para;</a></h2>
<p>Uses the web interface to light the LED connected to the <strong><a href="https://github.com/nodemcu/nodemcu-devkit-v1.0">NodeMCU</a></strong> module D0 port (which could be referred to as <em>BUILTIN_LED</em>), the following animation is it.</p> <p>Uses the web interface to light the LED connected to the <strong><a href="https://github.com/nodemcu/nodemcu-devkit-v1.0">NodeMCU</a></strong> module D0 port (which could be referred to as <em>BUILTIN_LED</em>), the following animation is it.</p>
@ -983,13 +1046,13 @@
</a> </a>
<a href="faq.html" title="FAQ" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> <a href="menuize.html" title="Constucting menu" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis"> <span class="md-flex__ellipsis">
<span class="md-footer-nav__direction"> <span class="md-footer-nav__direction">
Next Next
</span> </span>
FAQ Constucting menu
</span> </span>
</div> </div>
<div class="md-flex__cell md-flex__cell--shrink"> <div class="md-flex__cell md-flex__cell--shrink">

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 87 KiB

@ -264,6 +264,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -383,15 +394,15 @@
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#lives-with-the-your-sketches" title=" Lives with the your sketches" class="md-nav__link"> <a href="#lives-with-your-sketches" title=" Lives with your sketches" class="md-nav__link">
Lives with the your sketches Lives with your sketches
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#easy-to-add-custom-web-screenenhanced-wv097" title=" Easy to add custom web screenENHANCED w/v0.9.7" class="md-nav__link"> <a href="#easy-to-add-the-custom-web-screens-enhanced-wv097" title=" Easy to add the custom Web screens ENHANCED w/v0.9.7" class="md-nav__link">
Easy to add custom web screenENHANCED w/v0.9.7 Easy to add the custom Web screens ENHANCED w/v0.9.7
</a> </a>
</li> </li>
@ -668,9 +679,28 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a> </a>
</li> </li>
@ -680,6 +710,35 @@
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="faq.html" title="FAQ" class="md-nav__link"> <a href="faq.html" title="FAQ" class="md-nav__link">
FAQ FAQ
@ -768,15 +827,15 @@
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#lives-with-the-your-sketches" title=" Lives with the your sketches" class="md-nav__link"> <a href="#lives-with-your-sketches" title=" Lives with your sketches" class="md-nav__link">
Lives with the your sketches Lives with your sketches
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#easy-to-add-custom-web-screenenhanced-wv097" title=" Easy to add custom web screenENHANCED w/v0.9.7" class="md-nav__link"> <a href="#easy-to-add-the-custom-web-screens-enhanced-wv097" title=" Easy to add the custom Web screens ENHANCED w/v0.9.7" class="md-nav__link">
Easy to add custom web screenENHANCED w/v0.9.7 Easy to add the custom Web screens ENHANCED w/v0.9.7
</a> </a>
</li> </li>
@ -864,13 +923,16 @@ Easy implementing the Web interface constituting the WLAN for ESP8266/ESP32 WiFi
<p><span class="lead">The connection authentication data as credentials are saved automatically in EEPROM of ESP8266/ESP32 and You can select the past SSID from the <a href="menu.html">AutoConnect menu</a>.</span></p> <p><span class="lead">The connection authentication data as credentials are saved automatically in EEPROM of ESP8266/ESP32 and You can select the past SSID from the <a href="menu.html">AutoConnect menu</a>.</span></p>
<h3 id="easy-to-embed-in"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to embed in<a class="headerlink" href="#easy-to-embed-in" title="Permanent link">&para;</a></h3> <h3 id="easy-to-embed-in"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to embed in<a class="headerlink" href="#easy-to-embed-in" title="Permanent link">&para;</a></h3>
<p><span class="lead">AutoConnect can be placed easily in your sketch. It's "<strong>begin</strong>" and "<strong>handleClient</strong>" only.</span></p> <p><span class="lead">AutoConnect can be placed easily in your sketch. It's "<strong>begin</strong>" and "<strong>handleClient</strong>" only.</span></p>
<h3 id="lives-with-the-your-sketches"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Lives with the your sketches<a class="headerlink" href="#lives-with-the-your-sketches" title="Permanent link">&para;</a></h3> <h3 id="lives-with-your-sketches"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Lives with your sketches<a class="headerlink" href="#lives-with-your-sketches" title="Permanent link">&para;</a></h3>
<p><span class="lead">The sketches which provide the web page using ESP8266WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object, or itself can assign it.<br>This efficacy can also be applied to ESP32. The corresponding class for ESP32 will be the WebServer.</span></p> <p><span class="lead">The sketches which provide the web page using ESP8266WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object, or itself can assign it. This effect also applies to ESP32. The corresponding class for ESP32 will be the WebServer.</span></p>
<h3 id="easy-to-add-custom-web-screenenhanced-wv097"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to add custom web screen<sup><sub>ENHANCED w/v0.9.7</sub></sup><a class="headerlink" href="#easy-to-add-custom-web-screenenhanced-wv097" title="Permanent link">&para;</a></h3> <h3 id="easy-to-add-the-custom-web-screens-enhanced-wv097"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to add the <a href="acintro.html">custom Web screens</a> <sup><sub>ENHANCED w/v0.9.7</sub></sup><a class="headerlink" href="#easy-to-add-the-custom-web-screens-enhanced-wv097" title="Permanent link">&para;</a></h3>
<p><span class="lead">You can easily add your own web screen that can consist of representative HTML elements as the styled TEXT, INPUT, BUTTON, CHECKBOX, RADIO, SELECT, SUBMIT into the menu. It can be invoked from the AutoConnect menu and parameters can be passed. Custom screens can be written easily with JSON and can be loaded from PROGMEM, SPIFFS or SD.</span></p> <p><span class="lead">You can easily add your owned web screens that can consist of representative HTML elements and invoke them from the menu. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD.</span></p>
<p><img style="float:left;width:380px;" src="./images/aux_json.png"> <div style="display:block;height:425px;">
<img style="float:left;width:380px;" src="./images/aux_json.png">
<img style="float:left;margin-top:200px;margin-left:10px;margin-right:10px;width:32px;" src="./images/arrow_right.png"> <img style="float:left;margin-top:200px;margin-left:10px;margin-right:10px;width:32px;" src="./images/arrow_right.png">
<img style="float:left;width:240px" src="./images/AutoConnectAux.gif"></p> <img style="float:left;width:240px" src="./images/AutoConnectAux.gif">
</div>
<h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">&para;</a></h2> <h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">&para;</a></h2>
<h3 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">&para;</a></h3> <h3 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">&para;</a></h3>
<h4 id="supported-hardware">Supported hardware<a class="headerlink" href="#supported-hardware" title="Permanent link">&para;</a></h4> <h4 id="supported-hardware">Supported hardware<a class="headerlink" href="#supported-hardware" title="Permanent link">&para;</a></h4>
@ -905,12 +967,12 @@ Install third-party platform using the <em>Boards Manager</em> of Arduino IDE. P
<p><i class="fa fa-download"></i> <strong>ESP32 Arduino core</strong></p> <p><i class="fa fa-download"></i> <strong>ESP32 Arduino core</strong></p>
<p>Also, to apply AutoConnect to ESP32, the <a href="https://github.com/espressif/arduino-esp32">arduino-esp32 core</a> provided by Espressif is needed. The <a href="https://github.com/espressif/arduino-esp32/releases/latest">latest release</a> is recommended.<br /> <p>Also, to apply AutoConnect to ESP32, the <a href="https://github.com/espressif/arduino-esp32">arduino-esp32 core</a> provided by Espressif is needed. The <a href="https://github.com/espressif/arduino-esp32/releases/latest">latest release</a> is recommended.<br />
Install third-party platform using the <em>Boards Manager</em> of Arduino IDE. You can add multiple URLs into <em>Additional Board Manager URLs</em> field, separating them with commas. Package URL is <a href="https://dl.espressif.com/dl/package_esp32_index.json">https://dl.espressif.com/dl/package_esp32_index.json</a> for ESP32.</p> Install third-party platform using the <em>Boards Manager</em> of Arduino IDE. You can add multiple URLs into <em>Additional Board Manager URLs</em> field, separating them with commas. Package URL is <a href="https://dl.espressif.com/dl/package_esp32_index.json">https://dl.espressif.com/dl/package_esp32_index.json</a> for ESP32.</p>
<p><i class="fa fa-download"></i> <strong>Additional necessary library</strong></p> <p><i class="fa fa-download"></i> <strong>Additional library (Required)</strong></p>
<p>The <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library to build HTML for ESP8266WebServer is needed.<br /> <p>The <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library to build HTML for ESP8266WebServer is needed.<br />
To install the PageBuilder library into your Arduino IDE, you can use the <em>Library Manager</em>. Select the board of ESP8266 series in the Arduino IDE, open the library manager and search keyword '<strong>PageBuilder</strong>' with the topic '<strong>Communication</strong>', then you can see the <em>PageBuilder</em>. The latest version is required 1.3.2 later.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p> To install the PageBuilder library into your Arduino IDE, you can use the <em>Library Manager</em>. Select the board of ESP8266 series in the Arduino IDE, open the library manager and search keyword '<strong>PageBuilder</strong>' with the topic '<strong>Communication</strong>', then you can see the <em>PageBuilder</em>. The latest version is required 1.3.2 later.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
<p><img src="./images/lm.png" width="640"/></p> <p><img src="./images/lm.png" width="640"/></p>
<p><i class="fa fa-download"></i> <strong>Another library (optional)</strong></p> <p><i class="fa fa-download"></i> <strong>Additional library (Optional)</strong></p>
<p>The <a href="https://github.com/bblanchon/ArduinoJson">ArduinoJson</a> library is necessary to be able to process the <a href="acintro.html"><strong>custom Web Pages</strong></a> with JSON description. Since AutoConnect v0.9.7, you can insert user owned screens that can consist of representative HTML elements as the styled TEXT, INPUT, BUTTON, CHECKBOX, SELECT, SUBMIT to the AutoConnect menu. These HTML elements can be added from the user sketch using the AutoConnect API, and you can also easily import the custom Web page declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. <a href="https://arduinojson.org/v5/doc/">ArduinoJson version 5</a> is required to use this feature.</p> <p>By adding the <a href="https://github.com/bblanchon/ArduinoJson">ArduinoJson</a> library, AutoConnect will be able to handle the <a href="acintro.html"><strong>custom Web pages</strong></a> described with JSON. With AutoConnect v0.9.7 you can insert user-owned screens that can consist of representative HTML elements as styled TEXT, INPUT, BUTTON, CHECKBOX, SELECT, SUBMIT and invoke them from the AutoConnect menu. These HTML elements can be added by sketches using the AutoConnect API. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. <a href="https://arduinojson.org/v5/doc/">ArduinoJson version 5</a> is required to use this feature.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></p>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">AutoConnect supports ArduinoJson version 5 only</p> <p class="admonition-title">AutoConnect supports ArduinoJson version 5 only</p>
<p>And ArduinoJson version 6 is still in beta. The Arduino Library Manager installs the ArduinoJson version 6 by default. Open the Arduino Library Manager and make sure that ArduinoJson version 5 is installed.</p> <p>And ArduinoJson version 6 is still in beta. The Arduino Library Manager installs the ArduinoJson version 6 by default. Open the Arduino Library Manager and make sure that ArduinoJson version 5 is installed.</p>
@ -936,6 +998,9 @@ To install the PageBuilder library into your Arduino IDE, you can use the <em>Li
<li id="fn:1"> <li id="fn:1">
<p>Since AutoConnect v0.9.7, PageBuilder v1.3.2 later is required.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p> <p>Since AutoConnect v0.9.7, PageBuilder v1.3.2 later is required.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li> </li>
<li id="fn:2">
<p>Using the AutoConnect API natively allows you to sketch custom Web pages without JSON.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
</li>
</ol> </ol>
</div> </div>

@ -260,6 +260,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -531,13 +542,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -264,6 +264,17 @@
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link">
Examples
</a>
</li>
@ -625,13 +636,61 @@
<li class="md-nav__item"> <li class="md-nav__item md-nav__item--nested">
<a href="examples.html" title="Examples" class="md-nav__link">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item">
<a href="menuize.html" title="Constucting menu" class="md-nav__link">
Constucting menu
</a> </a>
</li> </li>
</ul>
</nav>
</li>

@ -0,0 +1,875 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface">
<link rel="canonical" href="https://Hieromon.github.io/AutoConnect/menuize.html">
<meta name="author" content="Hieromon Ikasamo">
<meta name="lang:clipboard.copy" content="Copy to clipboard">
<meta name="lang:clipboard.copied" content="Copied to clipboard">
<meta name="lang:search.language" content="en">
<meta name="lang:search.pipeline.stopwords" content="True">
<meta name="lang:search.pipeline.trimmer" content="True">
<meta name="lang:search.result.none" content="No matching documents">
<meta name="lang:search.result.one" content="1 matching document">
<meta name="lang:search.result.other" content="# matching documents">
<meta name="lang:search.tokenizer" content="[\s\-]+">
<link rel="shortcut icon" href="assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.0.4, mkdocs-material-3.3.0">
<title>Constucting menu - AutoConnect for ESP8266/ESP32</title>
<link rel="stylesheet" href="assets/stylesheets/application.572ca0f0.css">
<link rel="stylesheet" href="assets/stylesheets/application-palette.22915126.css">
<meta name="theme-color" content="#3f51b5">
<script src="assets/javascripts/modernizr.962652e9.js"></script>
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="assets/fonts/material-icons.css">
<link rel="stylesheet" href="css/paragraph.css">
<link rel="stylesheet" href="css/extra.css">
<script async src="https://www.googletagmanager.com/gtag/js?id=None"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","None")</script>
</head>
<body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448"
viewBox="0 0 416 448" id="__github">
<path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19-18.125
8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19 18.125-8.5
18.125 8.5 10.75 19 3.125 20.5zM320 304q0 10-3.125 20.5t-10.75
19-18.125 8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19
18.125-8.5 18.125 8.5 10.75 19 3.125 20.5zM360
304q0-30-17.25-51t-46.75-21q-10.25 0-48.75 5.25-17.75 2.75-39.25
2.75t-39.25-2.75q-38-5.25-48.75-5.25-29.5 0-46.75 21t-17.25 51q0 22 8
38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0
37.25-1.75t35-7.375 30.5-15 20.25-25.75 8-38.375zM416 260q0 51.75-15.25
82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5-41.75
1.125q-19.5 0-35.5-0.75t-36.875-3.125-38.125-7.5-34.25-12.875-30.25-20.25-21.5-28.75q-15.5-30.75-15.5-82.75
0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25
30.875q36.75-8.75 77.25-8.75 37 0 70 8 26.25-20.5
46.75-30.25t47.25-9.75q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34
99.5z" />
</svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
<a href="#what-menus-can-be-made-using-autoconnect" tabindex="1" class="md-skip">
Skip to content
</a>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo">
<img src="images/arduino-logo.svg" width="24" height="24">
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
<span class="md-header-nav__topic">
AutoConnect for ESP8266/ESP32
</span>
<span class="md-header-nav__topic">
Constucting menu
</span>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
<label class="md-icon md-search__icon" for="__search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
&#xE5CD;
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result">
<div class="md-search-result__meta">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#__github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
Hieromon/AutoConnect
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<nav class="md-tabs md-tabs--active" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="index.html" title="Overview" class="md-tabs__link">
Overview
</a>
</li>
<li class="md-tabs__item">
<a href="acintro.html" title="Custom Web pages" class="md-tabs__link">
Custom Web pages
</a>
</li>
<li class="md-tabs__item">
<a href="api.html" title="Library APIs" class="md-tabs__link">
Library APIs
</a>
</li>
<li class="md-tabs__item">
<a href="howtoembed.html" title="Examples" class="md-tabs__link md-tabs__link--active">
Examples
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo">
<img src="images/arduino-logo.svg" width="48" height="48">
</a>
AutoConnect for ESP8266/ESP32
</label>
<div class="md-nav__source">
<a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#__github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
Hieromon/AutoConnect
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="index.html" title="Overview" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="gettingstarted.html" title="Getting started" class="md-nav__link">
Getting started
</a>
</li>
<li class="md-nav__item">
<a href="menu.html" title="AutoConnect menu" class="md-nav__link">
AutoConnect menu
</a>
</li>
<li class="md-nav__item">
<a href="basicusage.html" title="Basic usage" class="md-nav__link">
Basic usage
</a>
</li>
<li class="md-nav__item">
<a href="advancedusage.html" title="Advanced usage" class="md-nav__link">
Advanced usage
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6">
<label class="md-nav__link" for="nav-6">
Custom Web pages
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-6">
Custom Web pages
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">
Custom Web pages with AutoConnect
</a>
</li>
<li class="md-nav__item">
<a href="acelements.html" title="AutoConnectElements" class="md-nav__link">
AutoConnectElements
</a>
</li>
<li class="md-nav__item">
<a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">
Custom Web pages with JSON
</a>
</li>
<li class="md-nav__item">
<a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">
Handling the custom Web pages
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
<label class="md-nav__link" for="nav-7">
Library APIs
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-7">
Library APIs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="api.html" title="AutoConnect API" class="md-nav__link">
AutoConnect API
</a>
</li>
<li class="md-nav__item">
<a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">
AutoConnectAux API
</a>
</li>
<li class="md-nav__item">
<a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">
AutoConnectConfig API
</a>
</li>
<li class="md-nav__item">
<a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">
AutoConnectElements API
</a>
</li>
<li class="md-nav__item">
<a href="apiextra.html" title="Something extra" class="md-nav__link">
Something extra
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked>
<label class="md-nav__link" for="nav-8">
Examples
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-8">
Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="howtoembed.html" title="How to embed" class="md-nav__link">
How to embed
</a>
</li>
<li class="md-nav__item">
<a href="datatips.md" title="Tips for data retrieval" class="md-nav__link">
Tips for data retrieval
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Constucting menu
</label>
<a href="menuize.html" title="Constucting menu" class="md-nav__link md-nav__link--active">
Constucting menu
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#what-menus-can-be-made-using-autoconnect" title="What menus can be made using AutoConnect" class="md-nav__link">
What menus can be made using AutoConnect
</a>
</li>
<li class="md-nav__item">
<a href="#basic-mechanism-of-menu-generation" title="Basic mechanism of menu generation" class="md-nav__link">
Basic mechanism of menu generation
</a>
</li>
<li class="md-nav__item">
<a href="#place-the-item-for-the-legacy-sketches-on-the-menu" title="Place the item for the legacy sketches on the menu" class="md-nav__link">
Place the item for the legacy sketches on the menu
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="faq.html" title="FAQ" class="md-nav__link">
FAQ
</a>
</li>
<li class="md-nav__item">
<a href="changelog.html" title="Change log" class="md-nav__link">
Change log
</a>
</li>
<li class="md-nav__item">
<a href="license.html" title="License" class="md-nav__link">
License
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#what-menus-can-be-made-using-autoconnect" title="What menus can be made using AutoConnect" class="md-nav__link">
What menus can be made using AutoConnect
</a>
</li>
<li class="md-nav__item">
<a href="#basic-mechanism-of-menu-generation" title="Basic mechanism of menu generation" class="md-nav__link">
Basic mechanism of menu generation
</a>
</li>
<li class="md-nav__item">
<a href="#place-the-item-for-the-legacy-sketches-on-the-menu" title="Place the item for the legacy sketches on the menu" class="md-nav__link">
Place the item for the legacy sketches on the menu
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<h1>Constucting menu</h1>
<h2 id="what-menus-can-be-made-using-autoconnect">What menus can be made using AutoConnect<a class="headerlink" href="#what-menus-can-be-made-using-autoconnect" title="Permanent link">&para;</a></h2>
<p>AutoConnect generates a menu dynamically depending on the instantiated <a href="acintro.html#how-it-works">AutoConnectAux</a> at the sketch executing time. Usually, it is a collection of <a href="acelements.html">AutoConnectElement</a>. In addition to this, you can generate a menu from only AutoConnectAux, without AutoConnectElements. That is, you can easily make the built-in menu with legacy sketches of yours.</p>
<h2 id="basic-mechanism-of-menu-generation">Basic mechanism of menu generation<a class="headerlink" href="#basic-mechanism-of-menu-generation" title="Permanent link">&para;</a></h2>
<p>The sketch can display the <a href="menu.html">AutoConnect menu</a> by following three patterns depending on AutoConnect-API usage.</p>
<dl>
<dt><i class="fa fa-desktop"></i> Basic menu</dt>
<dd>It is the most basic menu only for WiFi connection. Sketch can automatically display this menu with only the basic call sequence of the AutoConnect API which invokes <a href="api.html#begin">AutoConnect::begin</a> and <a href="api.html#handleclient">AutoConnect::handleClient</a>.</dd>
<dt><i class="fa fa-desktop"></i> Extra menu with custom Web pages which is consisted by <a href="acelements.html">AutoConnectElements</a></dt>
<dd>It is an extended menu that appears when the sketch consists of the custom Web pages with <a href="acintro.html#how-it-works">AutoConnectAux</a> and AutoConnectElements. Refer to <a href="acintro.html#custom-web-pages-in-autoconnect-menu">Custom Web pages section</a>.</dd>
<dt><i class="fa fa-desktop"></i> Extra menu which contains legacy pages</dt>
<dd>It is for the legacy sketches using the <strong>on</strong> handler of ESP8266WebServer/WebServer(for ESP32) class natively and looks the same as the extra menu as above.</dd>
</dl>
<p>The mechanism to generate the AutoConnect menu is simple. It will insert the item generated from the <a href="apiaux.html#autoconnectaux"><strong>title</strong></a> member variable of the AutoConnectAux object to AutoConnect's built-in HTML menu list which is implemented as the HTML <code>&lt;li&gt;</code> tag. Therefore, the legacy sketches can invoke the web pages from the AutoConnect menu with just declaration the title and URI to AutoConnectAux.</p>
<h2 id="place-the-item-for-the-legacy-sketches-on-the-menu">Place the item for the legacy sketches on the menu<a class="headerlink" href="#place-the-item-for-the-legacy-sketches-on-the-menu" title="Permanent link">&para;</a></h2>
<p>To implement this with your sketch, use only the <a href="apiaux.html#autoconnectaux">AutoConnectAux</a> constructed with the title and URI of that page. <a href="acelements.html">AutoConnectElements</a> is not required.</p>
<p>The AutoConnect library package contains an example sketch for ESP8266WebServer known as FSBrowser. Its example is a sample implementation that supports AutoConnect without changing the structure of the original FSBrowser and has the menu item for <strong>Edit</strong> and <strong>List</strong>.</p>
<div style="display:block;margin-left:auto;margin-right:auto;width:284px;height:491px;border:1px solid lightgrey;"><img data-gifffer="./images/aux_fsbrowser.gif" data-gifffer-width="280" data-gifffer-height="490" /></div>
<p>The changes I made to adapt the FSBrowser to the AutoConnect menu are slight as follows.</p>
<ol>
<li>Add AutoConnect declaration.</li>
<li>Add the AutoConnectAux named "<strong>Edit</strong>" and "<strong>List</strong>" as each page.</li>
<li>Replace the instance of ESP8266WebServer to AutoConnect.</li>
<li>Change menu title to FSBrowser using <a href="apiconfig.html#title">AutoConnectConfig::title</a>.</li>
<li>Join the legacy pages declared at step #2 to AutoConnect using <a href="api.html#join">AutoConnect::join</a>.</li>
</ol>
<div style="overflow:auto"><img style="width:auto;max-width:none;height:840px" src="./images/fsbrowser_ba.svg" /></div>
<script>
window.onload = function() {
Gifffer();
};
</script>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="howtoembed.html" title="How to embed" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
How to embed
</span>
</div>
</a>
<a href="faq.html" title="FAQ" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
FAQ
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright &copy; 2018-2019 Hieromon Ikasamo
</div>
powered by
<a href="https://www.mkdocs.org">MkDocs</a>
and
<a href="https://squidfunk.github.io/mkdocs-material/">
Material for MkDocs</a>
</div>
<div class="md-footer-social">
<link rel="stylesheet" href="assets/fonts/font-awesome.css">
<a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>
<a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a>
</div>
</div>
</div>
</footer>
</div>
<script src="assets/javascripts/application.a353778b.js"></script>
<script>app.initialize({version:"1.0.4",url:{base:"."}})</script>
<script src="js/gifffer.min.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -2,92 +2,102 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/index.html</loc> <loc>https://Hieromon.github.io/AutoConnect/index.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/gettingstarted.html</loc> <loc>https://Hieromon.github.io/AutoConnect/gettingstarted.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/menu.html</loc> <loc>https://Hieromon.github.io/AutoConnect/menu.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/basicusage.html</loc> <loc>https://Hieromon.github.io/AutoConnect/basicusage.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/advancedusage.html</loc> <loc>https://Hieromon.github.io/AutoConnect/advancedusage.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/acintro.html</loc> <loc>https://Hieromon.github.io/AutoConnect/acintro.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/acelements.html</loc> <loc>https://Hieromon.github.io/AutoConnect/acelements.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/acjson.html</loc> <loc>https://Hieromon.github.io/AutoConnect/acjson.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/achandling.html</loc> <loc>https://Hieromon.github.io/AutoConnect/achandling.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/api.html</loc> <loc>https://Hieromon.github.io/AutoConnect/api.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/apiaux.html</loc> <loc>https://Hieromon.github.io/AutoConnect/apiaux.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/apiconfig.html</loc> <loc>https://Hieromon.github.io/AutoConnect/apiconfig.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/apielements.html</loc> <loc>https://Hieromon.github.io/AutoConnect/apielements.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/apiextra.html</loc> <loc>https://Hieromon.github.io/AutoConnect/apiextra.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/examples.html</loc> <loc>https://Hieromon.github.io/AutoConnect/howtoembed.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc></loc>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://Hieromon.github.io/AutoConnect/menuize.html</loc>
<lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/faq.html</loc> <loc>https://Hieromon.github.io/AutoConnect/faq.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/changelog.html</loc> <loc>https://Hieromon.github.io/AutoConnect/changelog.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://Hieromon.github.io/AutoConnect/license.html</loc> <loc>https://Hieromon.github.io/AutoConnect/license.html</loc>
<lastmod>2019-02-12</lastmod> <lastmod>2019-02-14</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
</urlset> </urlset>

Binary file not shown.

@ -25,7 +25,10 @@ nav:
- 'AutoConnectConfig API': apiconfig.md - 'AutoConnectConfig API': apiconfig.md
- 'AutoConnectElements API': apielements.md - 'AutoConnectElements API': apielements.md
- 'Something extra': apiextra.md - 'Something extra': apiextra.md
- 'Examples' : examples.md - 'Examples' :
- 'How to embed': howtoembed.md
- 'Tips for data retrieval': datatips.md
- 'Constucting menu': menuize.md
- 'FAQ' : faq.md - 'FAQ' : faq.md
- 'Change log' : changelog.md - 'Change log' : changelog.md
- 'License' : license.md - 'License' : license.md

@ -159,7 +159,7 @@ void loop() {
If your sketch is handling your own web page, you can call that page from the [AutoConnect menu](menu.md). Unlike the custom Web pages by [AutoConnectAux](apiaux.md#autoconnectaux), this allows AutoConnect menu to legacy web pages registered by *ESP8266WebServer::on*/*WebServer::on* function. If your sketch is handling your own web page, you can call that page from the [AutoConnect menu](menu.md). Unlike the custom Web pages by [AutoConnectAux](apiaux.md#autoconnectaux), this allows AutoConnect menu to legacy web pages registered by *ESP8266WebServer::on*/*WebServer::on* function.
To implement this with your sketch, use only the [AutoConnectAux](apiaux.md#autoconnectaux) constructed with the URI of that page. [AutoConnectElements](acelements.md) is not required. The basic procedure for this as follows. The FSBrowser menu as the below has **Edit** and **List** item, which are implemented according to this basic procedure. To implement this with your sketch, use only the [AutoConnectAux](apiaux.md#autoconnectaux) constructed with the URI of that page. [AutoConnectElements](acelements.md) is not required. The basic procedure for this as follows.
1. Declare AutoConnectAux for each legacy page. It includes the URI of the page and item string which will display in the AutoConnect menu. 1. Declare AutoConnectAux for each legacy page. It includes the URI of the page and item string which will display in the AutoConnect menu.
2. Sketch legacy page handlers. 2. Sketch legacy page handlers.
@ -168,37 +168,7 @@ To implement this with your sketch, use only the [AutoConnectAux](apiaux.md#auto
5. [Begin](api.md#begin) the portal. 5. [Begin](api.md#begin) the portal.
6. Performs [AutoConnect::handleClient](api.md#handleClient) in the **loop** function. 6. Performs [AutoConnect::handleClient](api.md#handleClient) in the **loop** function.
```cpp hl_lines="4 5 22" For details see the [Constructing menu](menuize.md) section of Examples page.
ESP8266WebServer Server;
AutoConnect Portal(Server);
// Declare for menu item for legacy pages
AutoConnectAux FSBedit("/edit", "Edit");
AutoConnectAux FSBlist("/list?dir=\"/\"", "List");
// /edit page handler
Void handleEdit() {
...
}
// /list page handler
void handleList() {
...
}
void setup() {
// Register legacy page handler to WebServer
Server.on("/edit", handleEdit);
Server.on("/list", handleList);
// Insert the menu items for legacy pages
Portal.join({ FSBedit, FSBlist });
// Start portal
portal.begin();
}
void loop() {
Portal.handleClient();
}
```
### <i class="fa fa-caret-right"></i> Change menu title ### <i class="fa fa-caret-right"></i> Change menu title

@ -1,4 +1,4 @@
## How to embed the AutoConnect ## Embed the AutoConnect to the sketch
Here holds two case examples. Both examples perform the same function. Only how to incorporate the **AutoConnect** into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the [PageBuilder](https://github.com/Hieromon/PageBuilder) library for HTML assemblies. Here holds two case examples. Both examples perform the same function. Only how to incorporate the **AutoConnect** into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the [PageBuilder](https://github.com/Hieromon/PageBuilder) library for HTML assemblies.

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 87 KiB

@ -25,17 +25,19 @@ Easy implementing the Web interface constituting the WLAN for ESP8266/ESP32 WiFi
<span class="lead">AutoConnect can be placed easily in your sketch. It's "**begin**" and "**handleClient**" only.</span> <span class="lead">AutoConnect can be placed easily in your sketch. It's "**begin**" and "**handleClient**" only.</span>
### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Lives with the your sketches ### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Lives with your sketches
<span class="lead">The sketches which provide the web page using ESP8266WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object, or itself can assign it.<br>This efficacy can also be applied to ESP32. The corresponding class for ESP32 will be the WebServer.</span> <span class="lead">The sketches which provide the web page using ESP8266WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object, or itself can assign it. This effect also applies to ESP32. The corresponding class for ESP32 will be the WebServer.</span>
### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to add custom web screen<sup><sub>ENHANCED w/v0.9.7</sub></sup> ### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to add the [custom Web screens](acintro.md) <sup><sub>ENHANCED w/v0.9.7</sub></sup>
<span class="lead">You can easily add your own web screen that can consist of representative HTML elements as the styled TEXT, INPUT, BUTTON, CHECKBOX, RADIO, SELECT, SUBMIT into the menu. It can be invoked from the AutoConnect menu and parameters can be passed. Custom screens can be written easily with JSON and can be loaded from PROGMEM, SPIFFS or SD.</span> <span class="lead">You can easily add your owned web screens that can consist of representative HTML elements and invoke them from the menu. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD.</span>
<div style="display:block;height:425px;">
<img style="float:left;width:380px;" src="./images/aux_json.png"> <img style="float:left;width:380px;" src="./images/aux_json.png">
<img style="float:left;margin-top:200px;margin-left:10px;margin-right:10px;width:32px;" src="./images/arrow_right.png"> <img style="float:left;margin-top:200px;margin-left:10px;margin-right:10px;width:32px;" src="./images/arrow_right.png">
<img style="float:left;width:240px" src="./images/AutoConnectAux.gif"> <img style="float:left;width:240px" src="./images/AutoConnectAux.gif">
</div>
## Installation ## Installation
@ -80,18 +82,19 @@ Install third-party platform using the *Boards Manager* of Arduino IDE. Package
Also, to apply AutoConnect to ESP32, the [arduino-esp32 core](https://github.com/espressif/arduino-esp32) provided by Espressif is needed. The [latest release](https://github.com/espressif/arduino-esp32/releases/latest) is recommended. Also, to apply AutoConnect to ESP32, the [arduino-esp32 core](https://github.com/espressif/arduino-esp32) provided by Espressif is needed. The [latest release](https://github.com/espressif/arduino-esp32/releases/latest) is recommended.
Install third-party platform using the *Boards Manager* of Arduino IDE. You can add multiple URLs into *Additional Board Manager URLs* field, separating them with commas. Package URL is https://dl.espressif.com/dl/package_esp32_index.json for ESP32. Install third-party platform using the *Boards Manager* of Arduino IDE. You can add multiple URLs into *Additional Board Manager URLs* field, separating them with commas. Package URL is https://dl.espressif.com/dl/package_esp32_index.json for ESP32.
<i class="fa fa-download"></i> <strong>Additional necessary library</strong> <i class="fa fa-download"></i> <strong>Additional library (Required)</strong>
The [PageBuilder](https://github.com/Hieromon/PageBuilder) library to build HTML for ESP8266WebServer is needed. The [PageBuilder](https://github.com/Hieromon/PageBuilder) library to build HTML for ESP8266WebServer is needed.
To install the PageBuilder library into your Arduino IDE, you can use the *Library Manager*. Select the board of ESP8266 series in the Arduino IDE, open the library manager and search keyword '**PageBuilder**' with the topic '**Communication**', then you can see the *PageBuilder*. The latest version is required 1.3.2 later.[^1] To install the PageBuilder library into your Arduino IDE, you can use the *Library Manager*. Select the board of ESP8266 series in the Arduino IDE, open the library manager and search keyword '**PageBuilder**' with the topic '**Communication**', then you can see the *PageBuilder*. The latest version is required 1.3.2 later.[^1]
[^1]:Since AutoConnect v0.9.7, PageBuilder v1.3.2 later is required.
<img src="./images/lm.png" width="640"/> <img src="./images/lm.png" width="640"/>
[^1]:Since AutoConnect v0.9.7, PageBuilder v1.3.2 later is required.
<i class="fa fa-download"></i> <strong>Another library (optional)</strong> <i class="fa fa-download"></i> <strong>Additional library (Optional)</strong>
The [ArduinoJson](https://github.com/bblanchon/ArduinoJson) library is necessary to be able to process the [**custom Web Pages**](acintro.md) with JSON description. Since AutoConnect v0.9.7, you can insert user owned screens that can consist of representative HTML elements as the styled TEXT, INPUT, BUTTON, CHECKBOX, SELECT, SUBMIT to the AutoConnect menu. These HTML elements can be added from the user sketch using the AutoConnect API, and you can also easily import the custom Web page declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. [ArduinoJson version 5](https://arduinojson.org/v5/doc/) is required to use this feature. By adding the [ArduinoJson](https://github.com/bblanchon/ArduinoJson) library, AutoConnect will be able to handle the [**custom Web pages**](acintro.md) described with JSON. With AutoConnect v0.9.7 you can insert user-owned screens that can consist of representative HTML elements as styled TEXT, INPUT, BUTTON, CHECKBOX, SELECT, SUBMIT and invoke them from the AutoConnect menu. These HTML elements can be added by sketches using the AutoConnect API. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. [ArduinoJson version 5](https://arduinojson.org/v5/doc/) is required to use this feature.[^2]
[^2]:Using the AutoConnect API natively allows you to sketch custom Web pages without JSON.
!!! info "AutoConnect supports ArduinoJson version 5 only" !!! info "AutoConnect supports ArduinoJson version 5 only"
And ArduinoJson version 6 is still in beta. The Arduino Library Manager installs the ArduinoJson version 6 by default. Open the Arduino Library Manager and make sure that ArduinoJson version 5 is installed. And ArduinoJson version 6 is still in beta. The Arduino Library Manager installs the ArduinoJson version 6 by default. Open the Arduino Library Manager and make sure that ArduinoJson version 5 is installed.

@ -0,0 +1,42 @@
## What menus can be made using AutoConnect
AutoConnect generates a menu dynamically depending on the instantiated [AutoConnectAux](acintro.md#how-it-works) at the sketch executing time. Usually, it is a collection of [AutoConnectElement](acelements.md). In addition to this, you can generate a menu from only AutoConnectAux, without AutoConnectElements. That is, you can easily make the built-in menu with legacy sketches of yours.
## Basic mechanism of menu generation
The sketch can display the [AutoConnect menu](menu.md) by following three patterns depending on AutoConnect-API usage.
<i class="fa fa-desktop"></i> Basic menu
: It is the most basic menu only for WiFi connection. Sketch can automatically display this menu with only the basic call sequence of the AutoConnect API which invokes [AutoConnect::begin](api.md#begin) and [AutoConnect::handleClient](api.md#handleclient).
<i class="fa fa-desktop"></i> Extra menu with custom Web pages which is consisted by [AutoConnectElements](acelements.md)
: It is an extended menu that appears when the sketch consists of the custom Web pages with [AutoConnectAux](acintro.md#how-it-works) and AutoConnectElements. Refer to [Custom Web pages section](acintro.md#custom-web-pages-in-autoconnect-menu).
<i class="fa fa-desktop"></i> Extra menu which contains legacy pages
: It is for the legacy sketches using the **on** handler of ESP8266WebServer/WebServer(for ESP32) class natively and looks the same as the extra menu as above.
The mechanism to generate the AutoConnect menu is simple. It will insert the item generated from the [**title**](apiaux.md#autoconnectaux) member variable of the AutoConnectAux object to AutoConnect's built-in HTML menu list which is implemented as the HTML `<li>` tag. Therefore, the legacy sketches can invoke the web pages from the AutoConnect menu with just declaration the title and URI to AutoConnectAux.
## Place the item for the legacy sketches on the menu
To implement this with your sketch, use only the [AutoConnectAux](apiaux.md#autoconnectaux) constructed with the title and URI of that page. [AutoConnectElements](acelements.md) is not required.
The AutoConnect library package contains an example sketch for ESP8266WebServer known as FSBrowser. Its example is a sample implementation that supports AutoConnect without changing the structure of the original FSBrowser and has the menu item for **Edit** and **List**.
<div style="display:block;margin-left:auto;margin-right:auto;width:284px;height:491px;border:1px solid lightgrey;"><img data-gifffer="./images/aux_fsbrowser.gif" data-gifffer-width="280" data-gifffer-height="490" /></div>
The changes I made to adapt the FSBrowser to the AutoConnect menu are slight as follows.
1. Add AutoConnect declaration.
2. Add the AutoConnectAux named "**Edit**" and "**List**" as each page.
3. Replace the instance of ESP8266WebServer to AutoConnect.
4. Change menu title to FSBrowser using [AutoConnectConfig::title](apiconfig.md#title).
5. Join the legacy pages declared at step #2 to AutoConnect using [AutoConnect::join](api.md#join).
<div style="overflow:auto"><img style="width:auto;max-width:none;height:840px" src="./images/fsbrowser_ba.svg" /></div>
<script>
window.onload = function() {
Gifffer();
};
</script>
Loading…
Cancel
Save