Initial commit

pull/8/head
Hieromon Ikasamo 7 years ago
parent 1fa1db6246
commit 6ff4d37b41
  1. 2
      .gitignore
  2. 69
      README.md
  3. 435
      docs/404.html
  4. 1340
      docs/api/index.html
  5. BIN
      docs/assets/images/favicon.png
  6. 20
      docs/assets/images/icons/bitbucket.4ebea66e.svg
  7. 18
      docs/assets/images/icons/github.a4034fb1.svg
  8. 38
      docs/assets/images/icons/gitlab.348cdb3a.svg
  9. 1
      docs/assets/javascripts/application.8eb9be28.js
  10. 1
      docs/assets/javascripts/lunr/lunr.da.js
  11. 1
      docs/assets/javascripts/lunr/lunr.de.js
  12. 1
      docs/assets/javascripts/lunr/lunr.du.js
  13. 1
      docs/assets/javascripts/lunr/lunr.es.js
  14. 1
      docs/assets/javascripts/lunr/lunr.fi.js
  15. 1
      docs/assets/javascripts/lunr/lunr.fr.js
  16. 1
      docs/assets/javascripts/lunr/lunr.hu.js
  17. 1
      docs/assets/javascripts/lunr/lunr.it.js
  18. 1
      docs/assets/javascripts/lunr/lunr.jp.js
  19. 1
      docs/assets/javascripts/lunr/lunr.multi.js
  20. 1
      docs/assets/javascripts/lunr/lunr.no.js
  21. 1
      docs/assets/javascripts/lunr/lunr.pt.js
  22. 1
      docs/assets/javascripts/lunr/lunr.ro.js
  23. 1
      docs/assets/javascripts/lunr/lunr.ru.js
  24. 1
      docs/assets/javascripts/lunr/lunr.stemmer.support.js
  25. 1
      docs/assets/javascripts/lunr/lunr.sv.js
  26. 1
      docs/assets/javascripts/lunr/lunr.tr.js
  27. 1
      docs/assets/javascripts/lunr/tinyseg.js
  28. 1
      docs/assets/javascripts/modernizr.1aa3b519.js
  29. 2
      docs/assets/stylesheets/application-palette.6079476c.css
  30. 2
      docs/assets/stylesheets/application.78aab2dc.css
  31. 636
      docs/examples/index.html
  32. 936
      docs/faq/index.html
  33. 663
      docs/gettingstarted/index.html
  34. 921
      docs/images/BeforeAfter.svg
  35. 765
      docs/index.html
  36. 480
      docs/license/index.html
  37. 654
      docs/menu/index.html
  38. 544
      docs/search/search_index.json
  39. 68
      docs/sitemap.xml
  40. 1205
      docs/usage/index.html
  41. 6
      mkdocs.yml
  42. 0
      mkdocs/api.md
  43. 38
      mkdocs/css/paragraph.css
  44. 6
      mkdocs/examples.md
  45. 2
      mkdocs/faq.md
  46. 8
      mkdocs/gettingstarted.md
  47. 615
      mkdocs/images/BeforeAfter.svg
  48. BIN
      mkdocs/images/PageBuilder.png
  49. BIN
      mkdocs/images/_ac.png
  50. BIN
      mkdocs/images/ac2.gif
  51. 93
      mkdocs/images/arduino-logo.svg
  52. BIN
      mkdocs/images/arrow_right.png
  53. 76
      mkdocs/images/arrow_right.svg
  54. BIN
      mkdocs/images/config_ssid.png
  55. BIN
      mkdocs/images/cp.gif
  56. BIN
      mkdocs/images/espshaker.gif
  57. BIN
      mkdocs/images/established.png
  58. BIN
      mkdocs/images/gitrepo.png
  59. 695
      mkdocs/images/handleClient.svg
  60. 697
      mkdocs/images/handlePortal.svg
  61. BIN
      mkdocs/images/hello_world.png
  62. BIN
      mkdocs/images/ins_lib.png
  63. BIN
      mkdocs/images/lm.png
  64. 504
      mkdocs/images/logic_sequence.svg
  65. BIN
      mkdocs/images/login.png
  66. BIN
      mkdocs/images/login_ani.gif
  67. BIN
      mkdocs/images/menu.png
  68. BIN
      mkdocs/images/menu_home.png
  69. BIN
      mkdocs/images/menu_login.png
  70. 667
      mkdocs/images/menu_login.svg
  71. BIN
      mkdocs/images/newap.png
  72. BIN
      mkdocs/images/open.png
  73. BIN
      mkdocs/images/ov.gif
  74. BIN
      mkdocs/images/ov.png
  75. 439
      mkdocs/images/ov.svg
  76. BIN
      mkdocs/images/reset.png
  77. BIN
      mkdocs/images/resetting.png
  78. BIN
      mkdocs/images/serial.png
  79. BIN
      mkdocs/images/stat.png
  80. 8
      mkdocs/index.md
  81. 1
      mkdocs/js/gifffer.min.js
  82. 0
      mkdocs/license.md
  83. 10
      mkdocs/menu.md
  84. 6
      mkdocs/usage.md

2
.gitignore vendored

@ -0,0 +1,2 @@
# Files generated by build
/site

@ -0,0 +1,69 @@
# AutoConnect <small>for ESP8266</small>
An Arduino library for ESP8266 WLAN configuration at run time with web interface. [![Build Status](https://travis-ci.org/Hieromon/AutoConnect.svg?branch=master)](https://travis-ci.org/Hieromon/AutoConnect)
## Overview
To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with *ESP8266WebServer* class.
Easily implementing the Web interface constituting the WLAN for ESP8266 WiFi connection. With this library to make a sketch easily which connects from ESP8266 to the access point at runtime by the web interface without hard-coded SSID and password.
<img style="display:inline-block;width:460px;margin-right:30px;" src="docs/images/ov.png" /><img style="display:inline-block;width:182px;height:322px;border:solid 1px lightgrey;" src="docs/images/ov.gif" />
### No need pre-coded SSID &amp; password
It is no needed hard-coding in advance the SSID and Password into the sketch to connect between ESP8266 and WLAN. You can input SSID &amp; Password from a smartphone via the web interface at runtime.
### Simple usage
AutoConnect control screen will be displayed automatically for establishing new connections. It aids by the <a href="https://en.wikipedia.org/wiki/Captive_portal">captive portal</a> when vested the connection cannot be detected.<br>By using the **AutoConnect menu**, to manage the connections convenient.
### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Store the established connection
<span class="lead">The connection authentication data as credentials are saved automatically in EEPROM of ESP8266 and You can select the past SSID from the [AutoConnect menu](menu.md).</span>
### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to embed in
<span class="lead">AutoConnect can be embedded easily into your sketch, just "**begin**" and "**handleClient**".</span>
### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Lives with the 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.</span>
## Supported hardware
Apply the [Arduino core](https://github.com/esp8266/Arduino) of the ESP8266 Community.
- Generic ESP8266 modules
- Adafruit HUZZAH ESP8266 (ESP-12)
- ESP-WROOM-02
- Heltec WiFi Kit 8
- NodeMCU 0.9 (ESP-12) / NodeMCU 1.0 (ESP-12E)
- Olimex MOD-WIFI-ESP8266
- SparkFun Thing
- SweetPea ESP-210
## Simple usage
### The AutoConnect menu
### How embed the AutoConnect to the sketches you have
Most simple approach to applying AutoConnect for the existing sketches, follow the below steps.
<img src="docs/images/BeforeAfter.svg">
## More usages and Documentation
The documentation is available on https://Hieromon.github.io/AutoConnect, here are some shortcuts:
- Installation.
- Getting started.
- Usage the Library.
- API reference.
- FAQ.
## License
License under the [MIT license](LICENSE).

@ -0,0 +1,435 @@
<!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 WLAN configuration at run time with web interface">
<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="/AutoConnect/assets/images/favicon.png">
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.0">
<title>AutoConnect for ESP8266</title>
<link rel="stylesheet" href="/AutoConnect/assets/stylesheets/application.78aab2dc.css">
<link rel="stylesheet" href="/AutoConnect/assets/stylesheets/application-palette.6079476c.css">
<script src="/AutoConnect/assets/javascripts/modernizr.1aa3b519.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="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="/AutoConnect/css/paragraph.css">
</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">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<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" class="md-header-nav__button md-logo">
<img src="/AutoConnect/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
</span>
<span class="md-header-nav__topic">
</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" data-md-component="tabs">
<div class="md-tabs__inner md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="/AutoConnect/index.html" title="Overview" class="md-tabs__link md-tabs__link--active">
Overview
</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">
<span class="md-nav__button md-logo">
<img src="/AutoConnect/images/arduino-logo.svg" width="48" height="48">
</span>
AutoConnect for ESP8266
</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="/AutoConnect/index.html" title="Overview" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/gettingstarted/index.html" title="Getting started" class="md-nav__link">
Getting started
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/menu/index.html" title="AutoConnect menu" class="md-nav__link">
AutoConnect menu
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/usage/index.html" title="Usage the library" class="md-nav__link">
Usage the library
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/api/index.html" title="Library APIs" class="md-nav__link">
Library APIs
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/examples/index.html" title="Examples" class="md-nav__link">
Examples
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/faq/index.html" title="FAQ" class="md-nav__link">
FAQ
</a>
</li>
<li class="md-nav__item">
<a href="/AutoConnect/license/index.html" title="License" class="md-nav__link">
License
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<h1>404 - Not found</h1>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<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 Hieromon Ikasamo
</div>
powered by
<a href="http://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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.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="/AutoConnect/assets/javascripts/application.8eb9be28.js"></script>
<script>app.initialize({version:"0.17.3",url:{base:"/AutoConnect"}})</script>
<script src="/AutoConnect/js/gifffer.min.js"></script>
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","None","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");if(Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})}),document.forms.search){var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" width="352" height="448"
viewBox="0 0 352 448" id="bitbucket">
<path fill="currentColor" d="M203.75 214.75q2 15.75-12.625 25.25t-27.875
1.5q-9.75-4.25-13.375-14.5t-0.125-20.5 13-14.5q9-4.5 18.125-3t16 8.875
6.875 16.875zM231.5 209.5q-3.5-26.75-28.25-41t-49.25-3.25q-15.75
7-25.125 22.125t-8.625 32.375q1 22.75 19.375 38.75t41.375 14q22.75-2
38-21t12.5-42zM291.25
74q-5-6.75-14-11.125t-14.5-5.5-17.75-3.125q-72.75-11.75-141.5 0.5-10.75
1.75-16.5 3t-13.75 5.5-12.5 10.75q7.5 7 19 11.375t18.375 5.5 21.875
2.875q57 7.25 112 0.25 15.75-2 22.375-3t18.125-5.375 18.75-11.625zM305.5
332.75q-2 6.5-3.875 19.125t-3.5 21-7.125 17.5-14.5 14.125q-21.5
12-47.375 17.875t-50.5 5.5-50.375-4.625q-11.5-2-20.375-4.5t-19.125-6.75-18.25-10.875-13-15.375q-6.25-24-14.25-73l1.5-4
4.5-2.25q55.75 37 126.625 37t126.875-37q5.25 1.5 6 5.75t-1.25 11.25-2
9.25zM350.75 92.5q-6.5 41.75-27.75 163.75-1.25 7.5-6.75 14t-10.875
10-13.625 7.75q-63 31.5-152.5
22-62-6.75-98.5-34.75-3.75-3-6.375-6.625t-4.25-8.75-2.25-8.5-1.5-9.875-1.375-8.75q-2.25-12.5-6.625-37.5t-7-40.375-5.875-36.875-5.5-39.5q0.75-6.5
4.375-12.125t7.875-9.375 11.25-7.5 11.5-5.625 12-4.625q31.25-11.5
78.25-16 94.75-9.25 169 12.5 38.75 11.5 53.75 30.5 4 5 4.125
12.75t-1.375 13.5z" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1,18 @@
<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>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500"
viewBox="0 0 500 500" id="gitlab">
<g transform="translate(156.197863, 1.160267)">
<path fill="currentColor"
d="M93.667,473.347L93.667,473.347l90.684-279.097H2.983L93.667,
473.347L93.667,473.347z" />
</g>
<g transform="translate(28.531199, 1.160800)" opacity="0.7">
<path fill="currentColor"
d="M221.333,473.345L130.649,194.25H3.557L221.333,473.345L221.333,
473.345z" />
</g>
<g transform="translate(0.088533, 0.255867)" opacity="0.5">
<path fill="currentColor"
d="M32,195.155L32,195.155L4.441,279.97c-2.513,7.735,0.24,16.21,6.821,
20.99l238.514,173.29 L32,195.155L32,195.155z" />
</g>
<g transform="translate(29.421866, 280.255593)">
<path fill="currentColor"
d="M2.667-84.844h127.092L75.14-252.942c-2.811-8.649-15.047-8.649-17.856,
0L2.667-84.844 L2.667-84.844z" />
</g>
<g transform="translate(247.197860, 1.160800)" opacity="0.7">
<path fill="currentColor"
d="M2.667,473.345L93.351,194.25h127.092L2.667,473.345L2.667,
473.345z" />
</g>
<g transform="translate(246.307061, 0.255867)" opacity="0.5">
<path fill="currentColor"
d="M221.334,195.155L221.334,195.155l27.559,84.815c2.514,7.735-0.24,
16.21-6.821,20.99 L3.557,474.25L221.334,195.155L221.334,195.155z" />
</g>
<g transform="translate(336.973725, 280.255593)">
<path fill="currentColor"
d="M130.667-84.844H3.575l54.618-168.098c2.811-8.649,15.047-8.649,
17.856,0L130.667-84.844 L130.667-84.844z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,i,n;e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=(r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){var e,n,t,s=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],o=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],u=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],c=new i;function l(){var e,r=c.limit-c.cursor;c.cursor>=n&&(e=c.limit_backward,c.limit_backward=n,c.ket=c.cursor,c.find_among_b(o,4)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e)}this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var r,i=c.cursor;return function(){var r,i=c.cursor+3;if(n=c.limit,0<=i&&i<=c.limit){for(e=i;;){if(r=c.cursor,c.in_grouping(d,97,248)){c.cursor=r;break}if(c.cursor=r,r>=c.limit)return;c.cursor++}for(;!c.out_grouping(d,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(n=c.cursor)<e&&(n=e)}}(),c.limit_backward=i,c.cursor=c.limit,function(){var e,r;if(c.cursor>=n&&(r=c.limit_backward,c.limit_backward=n,c.ket=c.cursor,e=c.find_among_b(s,32),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:c.in_grouping_b(u,97,229)&&c.slice_del()}}(),c.cursor=c.limit,l(),c.cursor=c.limit,function(){var e,r,i,t=c.limit-c.cursor;if(c.ket=c.cursor,c.eq_s_b(2,"st")&&(c.bra=c.cursor,c.eq_s_b(2,"ig")&&c.slice_del()),c.cursor=c.limit-t,c.cursor>=n&&(r=c.limit_backward,c.limit_backward=n,c.ket=c.cursor,e=c.find_among_b(a,5),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del(),i=c.limit-c.cursor,l(),c.cursor=c.limit-i;break;case 2:c.slice_from("løs")}}(),c.cursor=c.limit,c.cursor>=n&&(r=c.limit_backward,c.limit_backward=n,c.ket=c.cursor,c.out_grouping_b(d,97,248)?(c.bra=c.cursor,t=c.slice_to(t),c.limit_backward=r,c.eq_v_b(t)&&c.slice_del()):c.limit_backward=r),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.jp=function(){this.pipeline.reset(),this.pipeline.add(e.jp.stopWordFilter,e.jp.stemmer),r?this.tokenizer=e.jp.tokenizer:(e.tokenizer&&(e.tokenizer=e.jp.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.jp.tokenizer))};var t=new e.TinySegmenter;e.jp.tokenizer=function(n){if(!arguments.length||null==n||null==n)return[];if(Array.isArray(n))return n.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(var i=n.toString().toLowerCase().replace(/^\s+/,""),o=i.length-1;o>=0;o--)if(/\S/.test(i.charAt(o))){i=i.substring(0,o+1);break}return t.segment(i).filter(function(e){return!!e}).map(function(t){return r?new e.Token(t):t})},e.jp.stemmer=function(e){return e},e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.jp.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",e.jp.stopWordFilter=function(t){if(-1===e.jp.stopWordFilter.stopWords.indexOf(r?t.toString():t))return t},e.jp.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}});

@ -0,0 +1 @@
!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var i=Array.prototype.slice.call(arguments),t=i.join("-"),r="",n=[],s=[],p=0;p<i.length;++p)"en"==i[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[i[p]].wordCharacters,n.unshift(e[i[p]].stopWordFilter),n.push(e[i[p]].stemmer),s.push(e[i[p]].stemmer));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+t),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}});

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,n,i;e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=(r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){var e,i,t=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],o=[new r("dt",-1,-1),new r("vt",-1,-1)],s=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],a=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],m=[119,125,149,1],l=new n;this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){var r,n,u,d,c=l.cursor;return function(){var r,n=l.cursor+3;if(i=l.limit,0<=n||n<=l.limit){for(e=n;;){if(r=l.cursor,l.in_grouping(a,97,248)){l.cursor=r;break}if(r>=l.limit)return;l.cursor=r+1}for(;!l.out_grouping(a,97,248);){if(l.cursor>=l.limit)return;l.cursor++}(i=l.cursor)<e&&(i=e)}}(),l.limit_backward=c,l.cursor=l.limit,function(){var e,r,n;if(l.cursor>=i&&(r=l.limit_backward,l.limit_backward=i,l.ket=l.cursor,e=l.find_among_b(t,29),l.limit_backward=r,e))switch(l.bra=l.cursor,e){case 1:l.slice_del();break;case 2:n=l.limit-l.cursor,l.in_grouping_b(m,98,122)?l.slice_del():(l.cursor=l.limit-n,l.eq_s_b(1,"k")&&l.out_grouping_b(a,97,248)&&l.slice_del());break;case 3:l.slice_from("er")}}(),l.cursor=l.limit,n=l.limit-l.cursor,l.cursor>=i&&(r=l.limit_backward,l.limit_backward=i,l.ket=l.cursor,l.find_among_b(o,2)?(l.bra=l.cursor,l.limit_backward=r,l.cursor=l.limit-n,l.cursor>l.limit_backward&&(l.cursor--,l.bra=l.cursor,l.slice_del())):l.limit_backward=r),l.cursor=l.limit,l.cursor>=i&&(d=l.limit_backward,l.limit_backward=i,l.ket=l.cursor,(u=l.find_among_b(s,11))?(l.bra=l.cursor,l.limit_backward=d,1==u&&l.slice_del()):l.limit_backward=d),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&t[(e-=i)>>3]&1<<(7&e))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&t[(e-=i)>>3]&1<<(7&e))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(!(t[(e-=i)>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(!(t[(e-=i)>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){if(o>=(_=t[s]).s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=(m=t[a]).s_size-1-l;_>=0;_--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-m.s[_])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var m;if(o>=(m=t[s]).s_size){if(this.cursor=n-m.s_size,!m.method)return m.result;var b=m.method();if(this.cursor=n-m.s_size,b)return m.result}if((s=m.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}});

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,n,t;e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=(r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){var e,t,i=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],s=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],o=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],u=[119,127,149],m=new n;this.setCurrent=function(e){m.setCurrent(e)},this.getCurrent=function(){return m.getCurrent()},this.stem=function(){var r,n=m.cursor;return function(){var r,n=m.cursor+3;if(t=m.limit,0<=n||n<=m.limit){for(e=n;;){if(r=m.cursor,m.in_grouping(o,97,246)){m.cursor=r;break}if(m.cursor=r,m.cursor>=m.limit)return;m.cursor++}for(;!m.out_grouping(o,97,246);){if(m.cursor>=m.limit)return;m.cursor++}(t=m.cursor)<e&&(t=e)}}(),m.limit_backward=n,m.cursor=m.limit,function(){var e,r=m.limit_backward;if(m.cursor>=t&&(m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(i,37),m.limit_backward=r,e))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.in_grouping_b(u,98,121)&&m.slice_del()}}(),m.cursor=m.limit,r=m.limit_backward,m.cursor>=t&&(m.limit_backward=t,m.cursor=m.limit,m.find_among_b(s,7)&&(m.cursor=m.limit,m.ket=m.cursor,m.cursor>m.limit_backward&&(m.bra=--m.cursor,m.slice_del())),m.limit_backward=r),m.cursor=m.limit,function(){var e,r;if(m.cursor>=t){if(r=m.limit_backward,m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(a,5))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.slice_from("lös");break;case 3:m.slice_from("full")}m.limit_backward=r}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,636 @@
<!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 WLAN configuration at run time with web interface">
<link rel="canonical" href="https://Hieromon.github.io/AutoConnect/examples/index.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-0.17.3, mkdocs-material-2.7.0">
<title>Examples - AutoConnect for ESP8266</title>
<link rel="stylesheet" href="../assets/stylesheets/application.78aab2dc.css">
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css">
<script src="../assets/javascripts/modernizr.1aa3b519.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="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../css/paragraph.css">
</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">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<a href="#how-to-embed-the-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" 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
</span>
<span class="md-header-nav__topic">
Examples
</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" 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 md-tabs__link--active">
Overview
</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">
<span class="md-nav__button md-logo">
<img src="../images/arduino-logo.svg" width="48" height="48">
</span>
AutoConnect for ESP8266
</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/index.html" title="Getting started" class="md-nav__link">
Getting started
</a>
</li>
<li class="md-nav__item">
<a href="../menu/index.html" title="AutoConnect menu" class="md-nav__link">
AutoConnect menu
</a>
</li>
<li class="md-nav__item">
<a href="../usage/index.html" title="Usage the library" class="md-nav__link">
Usage the library
</a>
</li>
<li class="md-nav__item">
<a href="../api/index.html" title="Library APIs" class="md-nav__link">
Library APIs
</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">
Examples
</label>
<a href="index.html" title="Examples" class="md-nav__link md-nav__link--active">
Examples
</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="#how-to-embed-the-autoconnect" title="How to embed the AutoConnect" class="md-nav__link">
How to embed the AutoConnect
</a>
</li>
<li class="md-nav__item">
<a href="#what-does-this-example-do" title="What does this example do?" class="md-nav__link">
What does this example do?
</a>
</li>
<li class="md-nav__item">
<a href="#embed-autoconnect" title="Embed AutoConnect" class="md-nav__link">
Embed AutoConnect
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pattern-a" title=" Pattern A." class="md-nav__link">
Pattern A.
</a>
</li>
<li class="md-nav__item">
<a href="#pattern-b" title=" Pattern B." class="md-nav__link">
Pattern B.
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../faq/index.html" title="FAQ" class="md-nav__link">
FAQ
</a>
</li>
<li class="md-nav__item">
<a href="../license/index.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="#how-to-embed-the-autoconnect" title="How to embed the AutoConnect" class="md-nav__link">
How to embed the AutoConnect
</a>
</li>
<li class="md-nav__item">
<a href="#what-does-this-example-do" title="What does this example do?" class="md-nav__link">
What does this example do?
</a>
</li>
<li class="md-nav__item">
<a href="#embed-autoconnect" title="Embed AutoConnect" class="md-nav__link">
Embed AutoConnect
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pattern-a" title=" Pattern A." class="md-nav__link">
Pattern A.
</a>
</li>
<li class="md-nav__item">
<a href="#pattern-b" title=" Pattern B." class="md-nav__link">
Pattern B.
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<h1>Examples</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>
<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>
<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>Access to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED blinks according to the value of the button that was clicked. This example is a typical sketch of manipulating ESP8266's GPIO via WLN.</p>
<p><img data-gifffer="../images/ac2.gif" /></p>
<p>Embed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots.</p>
<h2 id="embed-autoconnect">Embed AutoConnect<a class="headerlink" href="#embed-autoconnect" title="Permanent link">&para;</a></h2>
<h3 id="pattern-a"><i class="fa fa-code" aria-hidden="true"></i> Pattern A.<a class="headerlink" href="#pattern-a" title="Permanent link">&para;</a></h3>
<p>Bind to ESP8266WebServer, performs handleClient with handleRequest.</p>
<p><img src="../images/handleClient.svg" /></p>
<div class="admonition hint">
<p class="admonition-title">In what situations should the handleRequest be used.</p>
<p>It is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible.</p>
</div>
<h3 id="pattern-b"><i class="fa fa-code" aria-hidden="true"></i> Pattern B.<a class="headerlink" href="#pattern-b" title="Permanent link">&para;</a></h3>
<p>Declare only AutoConnect, performs handleClient.</p>
<p><img src="../images/handlePortal.svg" /></p>
<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="../api/index.html" title="Library APIs" 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>
Library APIs
</span>
</div>
</a>
<a href="../faq/index.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 Hieromon Ikasamo
</div>
powered by
<a href="http://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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.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.8eb9be28.js"></script>
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script>
<script src="../js/gifffer.min.js"></script>
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","None","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");if(Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})}),document.forms.search){var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}</script>
</body>
</html>

@ -0,0 +1,936 @@
<!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 WLAN configuration at run time with web interface">
<link rel="canonical" href="https://Hieromon.github.io/AutoConnect/faq/index.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-0.17.3, mkdocs-material-2.7.0">
<title>FAQ - AutoConnect for ESP8266</title>
<link rel="stylesheet" href="../assets/stylesheets/application.78aab2dc.css">
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css">
<script src="../assets/javascripts/modernizr.1aa3b519.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="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../css/paragraph.css">
</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">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<a href="#after-connected-autoconnect-menu-performs-but-no-happens" 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" 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
</span>
<span class="md-header-nav__topic">
FAQ
</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" 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 md-tabs__link--active">
Overview
</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">
<span class="md-nav__button md-logo">
<img src="../images/arduino-logo.svg" width="48" height="48">
</span>
AutoConnect for ESP8266
</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/index.html" title="Getting started" class="md-nav__link">
Getting started
</a>
</li>
<li class="md-nav__item">
<a href="../menu/index.html" title="AutoConnect menu" class="md-nav__link">
AutoConnect menu
</a>
</li>
<li class="md-nav__item">
<a href="../usage/index.html" title="Usage the library" class="md-nav__link">
Usage the library
</a>
</li>
<li class="md-nav__item">
<a href="../api/index.html" title="Library APIs" class="md-nav__link">
Library APIs
</a>
</li>
<li class="md-nav__item">
<a href="../examples/index.html" title="Examples" class="md-nav__link">
Examples
</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">
FAQ
</label>
<a href="index.html" title="FAQ" class="md-nav__link md-nav__link--active">
FAQ
</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="#after-connected-autoconnect-menu-performs-but-no-happens" title=" After connected, AutoConnect menu performs but no happens." class="md-nav__link">
After connected, AutoConnect menu performs but no happens.
</a>
</li>
<li class="md-nav__item">
<a href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" title=" An esp8266ap as SoftAP was connected but Captive portal does not start." class="md-nav__link">
An esp8266ap as SoftAP was connected but Captive portal does not start.
</a>
</li>
<li class="md-nav__item">
<a href="#does-not-appear-esp8266ap-in-smartphone" title=" Does not appear esp8266ap in smartphone." class="md-nav__link">
Does not appear esp8266ap in smartphone.
</a>
</li>
<li class="md-nav__item">
<a href="#does-not-response-from-95ac" title=" Does not response from _ac." class="md-nav__link">
Does not response from _ac.
</a>
</li>
<li class="md-nav__item">
<a href="#how-change-esp8266ap-for-ssid-name-in-captive-portal" title=" How change esp8266ap for SSID name in Captive portal?" class="md-nav__link">
How change esp8266ap for SSID name in Captive portal?
</a>
</li>
<li class="md-nav__item">
<a href="#hang-up-after-reset" title=" Hang up after Reset?" class="md-nav__link">
Hang up after Reset?
</a>
</li>
<li class="md-nav__item">
<a href="#how-erase-the-credentials-saved-in-eeprom" title=" How erase the credentials saved in EEPROM?" class="md-nav__link">
How erase the credentials saved in EEPROM?
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#constructor" title="Constructor" class="md-nav__link">
Constructor
</a>
</li>
<li class="md-nav__item">
<a href="#public-member-functions" title="Public member functions" class="md-nav__link">
Public member functions
</a>
</li>
<li class="md-nav__item">
<a href="#data-structures" title="Data structures" class="md-nav__link">
Data structures
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#how-locate-the-link-button-to-the-autoconnect-menu" title=" How locate the link button to the AutoConnect menu?" class="md-nav__link">
How locate the link button to the AutoConnect menu?
</a>
</li>
<li class="md-nav__item">
<a href="#how-much-memory-consumption-is-autoconnect" title=" How much memory consumption is AutoConnect?" class="md-nav__link">
How much memory consumption is AutoConnect?
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#sketch-size" title="Sketch size" class="md-nav__link">
Sketch size
</a>
</li>
<li class="md-nav__item">
<a href="#heap-size" title="Heap size" class="md-nav__link">
Heap size
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#i-cannot-complete-to-wi-fi-login-from-smartphone" title=" I cannot complete to Wi-Fi login from smartphone." class="md-nav__link">
I cannot complete to Wi-Fi login from smartphone.
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../license/index.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="#after-connected-autoconnect-menu-performs-but-no-happens" title=" After connected, AutoConnect menu performs but no happens." class="md-nav__link">
After connected, AutoConnect menu performs but no happens.
</a>
</li>
<li class="md-nav__item">
<a href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" title=" An esp8266ap as SoftAP was connected but Captive portal does not start." class="md-nav__link">
An esp8266ap as SoftAP was connected but Captive portal does not start.
</a>
</li>
<li class="md-nav__item">
<a href="#does-not-appear-esp8266ap-in-smartphone" title=" Does not appear esp8266ap in smartphone." class="md-nav__link">
Does not appear esp8266ap in smartphone.
</a>
</li>
<li class="md-nav__item">
<a href="#does-not-response-from-95ac" title=" Does not response from _ac." class="md-nav__link">
Does not response from _ac.
</a>
</li>
<li class="md-nav__item">
<a href="#how-change-esp8266ap-for-ssid-name-in-captive-portal" title=" How change esp8266ap for SSID name in Captive portal?" class="md-nav__link">
How change esp8266ap for SSID name in Captive portal?
</a>
</li>
<li class="md-nav__item">
<a href="#hang-up-after-reset" title=" Hang up after Reset?" class="md-nav__link">
Hang up after Reset?
</a>
</li>
<li class="md-nav__item">
<a href="#how-erase-the-credentials-saved-in-eeprom" title=" How erase the credentials saved in EEPROM?" class="md-nav__link">
How erase the credentials saved in EEPROM?
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#constructor" title="Constructor" class="md-nav__link">
Constructor
</a>
</li>
<li class="md-nav__item">
<a href="#public-member-functions" title="Public member functions" class="md-nav__link">
Public member functions
</a>
</li>
<li class="md-nav__item">
<a href="#data-structures" title="Data structures" class="md-nav__link">
Data structures
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#how-locate-the-link-button-to-the-autoconnect-menu" title=" How locate the link button to the AutoConnect menu?" class="md-nav__link">
How locate the link button to the AutoConnect menu?
</a>
</li>
<li class="md-nav__item">
<a href="#how-much-memory-consumption-is-autoconnect" title=" How much memory consumption is AutoConnect?" class="md-nav__link">
How much memory consumption is AutoConnect?
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#sketch-size" title="Sketch size" class="md-nav__link">
Sketch size
</a>
</li>
<li class="md-nav__item">
<a href="#heap-size" title="Heap size" class="md-nav__link">
Heap size
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#i-cannot-complete-to-wi-fi-login-from-smartphone" title=" I cannot complete to Wi-Fi login from smartphone." class="md-nav__link">
I cannot complete to Wi-Fi login from smartphone.
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<h1>FAQ</h1>
<h2 id="after-connected-autoconnect-menu-performs-but-no-happens"><i class="fa fa-question-circle"></i> After connected, AutoConnect menu performs but no happens.<a class="headerlink" href="#after-connected-autoconnect-menu-performs-but-no-happens" title="Permanent link">&para;</a></h2>
<p>If you can access the <strong>AutoConnect root path</strong> as http://ESP8266IPADDRESS/_ac from browser, probably the sketch uses <em>ESP8266WebServer::handleClient()</em> without <em>AutoConnect::handleRequest()</em>.<br />
For AutoConnect menus to work properly, call <em>AutoConnect::handleRequest()</em> after <em>ESP8266WebServer::handleClient()</em> invoked, or use <em>AutoConnect::handleClient()</em>. <em>AutoConnect::handleClient()</em> is equivalent <em>ESP8266WebServer::handleClient</em> combinated <em>AutoConnect::handleRequest()</em>.</p>
<h2 id="an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start"><i class="fa fa-question-circle"></i> An esp8266ap as SoftAP was connected but Captive portal does not start.<a class="headerlink" href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" title="Permanent link">&para;</a></h2>
<p>Captive portal detection could not be trapped. It is necessary to disconnect and reset ESP8266 to clear memorized connection data in ESP8266. Also, It may be displayed on the smartphone if the connection information of esp8266ap is wrong. In that case, delete the connection information of esp8266ap memorized by the smartphone once.</p>
<h2 id="does-not-appear-esp8266ap-in-smartphone"><i class="fa fa-question-circle"></i> Does not appear esp8266ap in smartphone.<a class="headerlink" href="#does-not-appear-esp8266ap-in-smartphone" title="Permanent link">&para;</a></h2>
<p>Maybe it is successfully connected at the <strong>first WiFi.begin</strong>. ESP8266 remembers the SSID successfully connected and will use at the next. It means SoftAP will only start up when the first <em>WiFi.begin()</em> fails.</p>
<p>The saved SSID would be cleared by <em>WiFi.disconnect()</em> with WIFI_STA mode. If you do not want automatic reconnection, you can erase the memorized SSID with the following simple sketch.</p>
<div class="codehilite"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;ESP8266WiFi.h&gt;</span><span class="cp"></span>
<span class="kr">void</span> <span class="nb">setup</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">delay</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
<span class="nf">Serial</span><span class="p">.</span><span class="nf">begin</span><span class="p">(</span><span class="mi">115200</span><span class="p">);</span>
<span class="nf">WiFi</span><span class="p">.</span><span class="n">mode</span><span class="p">(</span><span class="n">WIFI_STA</span><span class="p">);</span>
<span class="nf">delay</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
<span class="nf">WiFi</span><span class="p">.</span><span class="nf">begin</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="nf">WiFi</span><span class="p">.</span><span class="n">waitForConnectResult</span><span class="p">()</span> <span class="o">==</span> <span class="n">WL_CONNECTED</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">WiFi</span><span class="p">.</span><span class="nf">disconnect</span><span class="p">();</span>
<span class="k">while</span> <span class="p">(</span><span class="nf">WiFi</span><span class="p">.</span><span class="n">status</span><span class="p">()</span> <span class="o">==</span> <span class="n">WL_CONNECTED</span><span class="p">)</span>
<span class="nf">delay</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
<span class="p">}</span>
<span class="nf">Serial</span><span class="p">.</span><span class="nf">println</span><span class="p">(</span><span class="s">&quot;WiFi disconnected.&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="kr">void</span> <span class="nb">loop</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">delay</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
<details class="hint"><summary>You can interactively check the WiFi state of ESP8266.</summary><p>Please try <a href="https://github.com/Hieromon/ESPShaker"><strong>ESPShaker</strong></a>. It is ESP8266 interactive serial command processor.</p><p><img src="../images/espshaker.gif" /></p></details><h2 id="does-not-response-from-95ac"><i class="fa fa-question-circle"></i> Does not response from _ac.<a class="headerlink" href="#does-not-response-from-95ac" title="Permanent link">&para;</a></h2>
<p>Probably <strong>WiFi.begin</strong> failed with the specified SSID. Activating the <a href="../usage/index.html#debug-print">debug printing</a> will help you to track down the cause.</p>
<h2 id="how-change-esp8266ap-for-ssid-name-in-captive-portal"><i class="fa fa-question-circle"></i> How change esp8266ap for SSID name in Captive portal?<a class="headerlink" href="#how-change-esp8266ap-for-ssid-name-in-captive-portal" title="Permanent link">&para;</a></h2>
<p>An <strong>esp8266</strong> is default SSID name for SoftAP of captive portal and password is <strong>12345678</strong>. You can change both by using <a href="../api/index.html#string-apid">AutoConnectConfig</a>.</p>
<h2 id="hang-up-after-reset"><i class="fa fa-question-circle"></i> Hang up after Reset?<a class="headerlink" href="#hang-up-after-reset" title="Permanent link">&para;</a></h2>
<p>If ESP8266 hang up after reset by AutoConnect menu, perhaps manual reset is not yet. Especially if it is not manual reset yet after uploading the sketch, the boot mode will stay 'Uart Download'. There is some discussion about this on the Github's ESP8266 core: <a href="https://github.com/esp8266/Arduino/issues/1017">https://github.com/esp8266/Arduino/issues/1017</a></p>
<p>If you received the following message, the boot mode is still sketch uploaded. It needs to the manual reset once.</p>
<div class="codehilite"><pre><span></span>ets Jan 8 2013,rst cause:2, boot mode:(1,6) or (1,7)
ets Jan 8 2013,rst cause:4, boot mode:(1,6) or (1,7)
wdt reset
</pre></div>
<p>The correct boot mode for starting the sketch is <strong>(3, x)</strong>.</p>
<h2 id="how-erase-the-credentials-saved-in-eeprom"><i class="fa fa-question-circle"></i> How erase the credentials saved in EEPROM?<a class="headerlink" href="#how-erase-the-credentials-saved-in-eeprom" title="Permanent link">&para;</a></h2>
<p>Make some sketches for erasing the EEPROM area, or some erasing utility is needed. You can prepare the sketch to erase the saved credential with <em>AutoConnectCredential</em>. The <em>AutoConnectCrendential</em> class provides the access method to the saved credential in EEPROM and library source file is including it.</p>
<p>A class description of AutoConnectCredentail is follows.</p>
<h3 id="constructor">Constructor<a class="headerlink" href="#constructor" title="Permanent link">&para;</a></h3>
<div class="codehilite"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;AutoConnectCredential.h&gt;</span><span class="cp"></span>
<span class="n">AutoConnectCredential</span><span class="p">();</span>
</pre></div>
<h3 id="public-member-functions">Public member functions<a class="headerlink" href="#public-member-functions" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>uint8_t <strong>entries()</strong><br />
Returns number of entries as contained credentials.</p>
</li>
<li>
<p>int8_t <strong>load(const char* <em>ssid</em>, struct station_config* <em>config</em>)</strong><br />
Load a credential entry specified <em>ssid</em> to <em>config</em>. Returns -1 as unsuccessfully loaded.</p>
</li>
<li>
<p>bool <strong>load(int8_t <em>entry</em>, struct station_config* <em>config</em>)</strong><br />
Load a credential entry to <em>config</em>. The <em>entry</em> parameter specify to index of the entry.</p>
</li>
<li>
<p>bool <strong>save(const struct station_config* <em>config</em>)</strong><br />
Save a credential entry stored in <em>config</em> to EEPROM. Returns the true as succeeded.</p>
</li>
<li>
<p>bool <strong>del(const char* <em>ssid</em>)</strong><br />
Delete a credential entry specified <em>ssid</em>. Returns the true as successfully deleted.</p>
</li>
</ul>
<h3 id="data-structures">Data structures<a class="headerlink" href="#data-structures" title="Permanent link">&para;</a></h3>
<ul>
<li>station_config<br />
A structure is included in the ESP8266 SDK. You can use it in the sketch like as follows.</li>
</ul>
<div class="codehilite"><pre><span></span><span class="k">extern</span> <span class="s">&quot;C&quot;</span> <span class="p">{</span>
<span class="cp">#include</span> <span class="cpf">&lt;user_interface.h&gt;</span><span class="cp"></span>
<span class="p">}</span>
</pre></div>
<div class="codehilite"><pre><span></span><span class="k">struct</span> <span class="n">station_config</span> <span class="p">{</span>
<span class="n">uint8</span> <span class="n">ssid</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
<span class="n">uint8</span> <span class="n">password</span><span class="p">[</span><span class="mi">64</span><span class="p">];</span>
<span class="n">uint8</span> <span class="n">bssid_set</span><span class="p">;</span>
<span class="n">uint8</span> <span class="n">bssid</span><span class="p">[</span><span class="mi">6</span><span class="p">];</span>
<span class="p">};</span>
</pre></div>
<ul>
<li>EEPROM data structure<br />
A data structure of the credential saving area in EEPROM as the below. <sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></li>
</ul>
<table>
<thead>
<tr>
<th>Byte offset</th>
<th>Length</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>8</td>
<td>AC_CREDT</td>
</tr>
<tr>
<td>8</td>
<td>1</td>
<td>Number of contained entries (uint8_t)</td>
</tr>
<tr>
<td>9</td>
<td>2</td>
<td>Container size, excluding size of AC_CREDT and size of the number of entries(width for uint16_t type).</td>
</tr>
<tr>
<td>11</td>
<td>variable</td>
<td>SSID terminated by 0x00. Max length is 32 bytes.</td>
</tr>
<tr>
<td>variable</td>
<td>variable</td>
<td>Password plain text terminated by 0x00. Max length is 64 bytes.</td>
</tr>
<tr>
<td>variable</td>
<td>6</td>
<td>BSSID</td>
</tr>
<tr>
<td>variable</td>
<td></td>
<td>Contained the next entries. (Continuation SSID+Password+BSSID)</td>
</tr>
<tr>
<td>variable</td>
<td>1</td>
<td>0x00. End of container.</td>
</tr>
</tbody>
</table>
<div class="admonition hint">
<p class="admonition-title">Hint</p>
<p>With the <a href="https://github.com/Hieromon/ESPShaker"><strong>ESPShaker</strong></a>, you can access EEPROM interactively from the serial monitor, and of course you can erase saved credentials.</p>
</div>
<h2 id="how-locate-the-link-button-to-the-autoconnect-menu"><i class="fa fa-question-circle"></i> How locate the link button to the AutoConnect menu?<a class="headerlink" href="#how-locate-the-link-button-to-the-autoconnect-menu" title="Permanent link">&para;</a></h2>
<p>Link button to AutoConnect menu can be embedded into Sketch's web page. The root path of the menu is <strong>/_ac</strong> by default and embed the following <code class="codehilite"><span class="nt">&lt;a&gt;&lt;/a&gt;</span></code> tag in the generating HTML.</p>
<div class="codehilite"><pre><span></span><span class="p">&lt;</span><span class="nt">a</span> <span class="na">style</span><span class="o">=</span><span class="s">&quot;background-color:SteelBlue; display:inline-block; padding:7px 13px; text-decoration:none;&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;/_ac&quot;</span><span class="p">&gt;</span>MENU<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</pre></div>
<h2 id="how-much-memory-consumption-is-autoconnect"><i class="fa fa-question-circle"></i> How much memory consumption is AutoConnect?<a class="headerlink" href="#how-much-memory-consumption-is-autoconnect" title="Permanent link">&para;</a></h2>
<h3 id="sketch-size">Sketch size<a class="headerlink" href="#sketch-size" title="Permanent link">&para;</a></h3>
<p>It increases about 57K bytes compared to the case without AutoConnect. A sketch size of the most simple example introduced at the Getting started is about 330K bytes. (270K byte without AutoConnect)</p>
<h3 id="heap-size">Heap size<a class="headerlink" href="#heap-size" title="Permanent link">&para;</a></h3>
<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>
<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>
<div class="footnote">
<hr />
<ol>
<li id="fn:1">
<p>There may be 0xff as an invalid data in the credential saving area. The 0xff area would be reused.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
</ol>
</div>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../examples/index.html" title="Examples" 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>
Examples
</span>
</div>
</a>
<a href="../license/index.html" title="License" 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>
License
</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 Hieromon Ikasamo
</div>
powered by
<a href="http://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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.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.8eb9be28.js"></script>
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script>
<script src="../js/gifffer.min.js"></script>
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","None","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");if(Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})}),document.forms.search){var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}</script>
</body>
</html>

@ -0,0 +1,663 @@
<!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 WLAN configuration at run time with web interface">
<link rel="canonical" href="https://Hieromon.github.io/AutoConnect/gettingstarted/index.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-0.17.3, mkdocs-material-2.7.0">
<title>Getting started - AutoConnect for ESP8266</title>
<link rel="stylesheet" href="../assets/stylesheets/application.78aab2dc.css">
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css">
<script src="../assets/javascripts/modernizr.1aa3b519.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="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../css/paragraph.css">
</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">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<a href="#lets-do-the-most-simple-sketch" 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" 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
</span>
<span class="md-header-nav__topic">
Getting started
</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" 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 md-tabs__link--active">
Overview
</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">
<span class="md-nav__button md-logo">
<img src="../images/arduino-logo.svg" width="48" height="48">
</span>
AutoConnect for ESP8266
</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 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">
Getting started
</label>
<a href="index.html" title="Getting started" class="md-nav__link md-nav__link--active">
Getting started
</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="#lets-do-the-most-simple-sketch" title="Let's do the most simple sketch" class="md-nav__link">
Let's do the most simple sketch
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#run-at-first" title=" Run at first" class="md-nav__link">
Run at first
</a>
</li>
<li class="md-nav__item">
<a href="#join-to-the-new-access-point" title=" Join to the new access point" class="md-nav__link">
Join to the new access point
</a>
</li>
<li class="md-nav__item">
<a href="#connection-establishment" title=" Connection establishment" class="md-nav__link">
Connection establishment
</a>
</li>
<li class="md-nav__item">
<a href="#run-for-usually" title=" Run for usually" class="md-nav__link">
Run for usually
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../menu/index.html" title="AutoConnect menu" class="md-nav__link">
AutoConnect menu
</a>
</li>
<li class="md-nav__item">
<a href="../usage/index.html" title="Usage the library" class="md-nav__link">
Usage the library
</a>
</li>
<li class="md-nav__item">
<a href="../api/index.html" title="Library APIs" class="md-nav__link">
Library APIs
</a>
</li>
<li class="md-nav__item">
<a href="../examples/index.html" title="Examples" class="md-nav__link">
Examples
</a>
</li>
<li class="md-nav__item">
<a href="../faq/index.html" title="FAQ" class="md-nav__link">
FAQ
</a>
</li>
<li class="md-nav__item">
<a href="../license/index.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="#lets-do-the-most-simple-sketch" title="Let's do the most simple sketch" class="md-nav__link">
Let's do the most simple sketch
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#run-at-first" title=" Run at first" class="md-nav__link">
Run at first
</a>
</li>
<li class="md-nav__item">
<a href="#join-to-the-new-access-point" title=" Join to the new access point" class="md-nav__link">
Join to the new access point
</a>
</li>
<li class="md-nav__item">
<a href="#connection-establishment" title=" Connection establishment" class="md-nav__link">
Connection establishment
</a>
</li>
<li class="md-nav__item">
<a href="#run-for-usually" title=" Run for usually" class="md-nav__link">
Run for usually
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<h1>Getting started</h1>
<h2 id="lets-do-the-most-simple-sketch">Let's do the most simple sketch<a class="headerlink" href="#lets-do-the-most-simple-sketch" title="Permanent link">&para;</a></h2>
<p>Open the Arduino IDE, write the following sketch and upload it. The feature of this sketch is that the SSID and Password are not coded.</p>
<div class="codehilite"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;ESP8266WiFi.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf">&lt;ESP8266WebServer.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf">&lt;AutoConnect.h&gt;</span><span class="cp"></span>
<span class="n">ESP8266WebServer</span> <span class="nf">Server</span><span class="p">;</span>
<span class="n">AutoConnect</span> <span class="nf">Portal</span><span class="p">(</span><span class="nf">Server</span><span class="p">);</span>
<span class="kr">void</span> <span class="nf">rootPage</span><span class="p">()</span> <span class="p">{</span>
<span class="kr">char</span> <span class="n">content</span><span class="p">[]</span> <span class="o">=</span> <span class="s">&quot;Hello, world&quot;</span><span class="p">;</span>
<span class="nf">Server</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="s">&quot;text/plain&quot;</span><span class="p">,</span> <span class="n">content</span><span class="p">);</span>
<span class="p">}</span>
<span class="kr">void</span> <span class="nb">setup</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">delay</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
<span class="nf">Serial</span><span class="p">.</span><span class="nf">begin</span><span class="p">(</span><span class="mi">115200</span><span class="p">);</span>
<span class="nf">Serial</span><span class="p">.</span><span class="nf">println</span><span class="p">();</span>
<span class="nf">Server</span><span class="p">.</span><span class="n">on</span><span class="p">(</span><span class="s">&quot;/&quot;</span><span class="p">,</span> <span class="n">rootPage</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">Portal</span><span class="p">.</span><span class="nf">begin</span><span class="p">())</span> <span class="p">{</span>
<span class="nf">Serial</span><span class="p">.</span><span class="nf">println</span><span class="p">(</span><span class="s">&quot;WiFi connected: &quot;</span> <span class="o">+</span> <span class="nf">WiFi</span><span class="p">.</span><span class="nf">localIP</span><span class="p">().</span><span class="n">toString</span><span class="p">());</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kr">void</span> <span class="nb">loop</span><span class="p">()</span> <span class="p">{</span>
<span class="n">Portal</span><span class="p">.</span><span class="n">handleClient</span><span class="p">();</span>
<span class="p">}</span>
</pre></div>
<h3 id="run-at-first"><i class="fa fa-play-circle"></i> Run at first<a class="headerlink" href="#run-at-first" title="Permanent link">&para;</a></h3>
<p>After about 30 seconds, if the ESP8266 cannot connect to nearby Wi-Fi spot, you pull out your smartphone and open <em>Wi-Fi settings</em> from the <em>Settings</em> Apps. You can see the <strong>esp8266ap</strong> in the list of <em>"CHOOSE A NETWORK..."</em>. Then tap the esp8266ap and enter password <strong>12345678</strong>, a something screen pops up automatically as shown below.</p>
<p><span style="display:inline-block;width:282px;height:501px;border:1px solid lightgrey;"><img data-gifffer="../images/login_ani.gif" data-gifffer-width="280" style="width:280px;" /></span><img src="../images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="../images/stat.png" style="border:1px solid lightgrey;width:280px;" /></span></p>
<p>This is the AutoConnect statistics screen. This screen displays the current status of the established connection, WiFi mode, IP address, free memory size, and etc. Also, the <strong>hamburger icon</strong> is the control menu of AutoConnect seems at the upper right. By tap the hamburger icon, the control menu appears as the below.</p>
<h3 id="join-to-the-new-access-point"><i class="fa fa-cog"></i> Join to the new access point<a class="headerlink" href="#join-to-the-new-access-point" title="Permanent link">&para;</a></h3>
<p>Here, tap <em>"Configure new AP"</em> to connect the new access point then the SSID configuration screen would be shown. Enter the <strong>SSID</strong> and <strong>Passphrase</strong> and tap <strong>apply</strong> to start connecting the access point.</p>
<p><img src="../images/menu_login.png" style="border:1px solid lightgrey;width:280px;" /><img src="../images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="../images/config_ssid.png" style="border:1px solid lightgrey;width:280px;" /></p>
<h3 id="connection-establishment"><i class="fa fa-rss"></i> Connection establishment<a class="headerlink" href="#connection-establishment" title="Permanent link">&para;</a></h3>
<p>After connection established, the current status screen will appear. It is already connected to WLAN with WiFi mode as WIFI_AP_STA and the IP connection status is displayed there including the SSID. Then at this screen, you have two options for the next step.</p>
<p>For one, continues execution of the sketch while keeping this connection. You can access ESP8266 via browser through the established IP address after cancel to "<strong>Log in</strong>" by upper right on the screen.<br />
Or, "<strong>RESET</strong>" can be selected. The ESP8266 resets and reboots. After that, immediately before the connection will be restored automatically with WIFI_STA mode.</p>
<p><img src="../images/established.png" style="border:1px solid lightgrey;width:280px;" /><img src="./images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="../images/reset.png" style="border:1px solid lightgrey;width:280px;" /></p>
<h3 id="run-for-usually"><i class="fa fa-play-circle"></i> Run for usually<a class="headerlink" href="#run-for-usually" title="Permanent link">&para;</a></h3>
<p>The IP address of ESP8266 would be displayed on the serial monitor after connection recovered. Please access its address from the browser. The "Hello, world" page will respond. It's the page that was handled by in the sketch with "<strong>on</strong>" function of <em>ESP8266WebServer</em>.</p>
<p><img src="../images/serial.png" style="vertical-align:top;" /><img src="../images/arrow_right.svg" style="vertical-align:top;padding-top:60px;width:48px;margin-left:45px;margin-right:30px;" /><img src="../images/hello_world.png" style="border:1px solid lightgrey;width:280px;" /></p>
<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="../index.html" title="Overview" 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>
Overview
</span>
</div>
</a>
<a href="../menu/index.html" title="AutoConnect 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">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
AutoConnect menu
</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 Hieromon Ikasamo
</div>
powered by
<a href="http://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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.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.8eb9be28.js"></script>
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script>
<script src="../js/gifffer.min.js"></script>
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","None","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");if(Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})}),document.forms.search){var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 31 KiB

@ -0,0 +1,765 @@
<!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 WLAN configuration at run time with web interface">
<link rel="canonical" href="https://Hieromon.github.io/AutoConnect/index.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-0.17.3, mkdocs-material-2.7.0">
<title>AutoConnect for ESP8266</title>
<link rel="stylesheet" href="./assets/stylesheets/application.78aab2dc.css">
<link rel="stylesheet" href="./assets/stylesheets/application-palette.6079476c.css">
<script src="./assets/javascripts/modernizr.1aa3b519.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="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="./css/paragraph.css">
</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">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<a href="#autoconnect-for-esp8266" 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" 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
</span>
<span class="md-header-nav__topic">
Overview
</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" 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 md-tabs__link--active">
Overview
</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">
<span class="md-nav__button md-logo">
<img src="./images/arduino-logo.svg" width="48" height="48">
</span>
AutoConnect for ESP8266
</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 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">
Overview
</label>
<a href="index.html" title="Overview" class="md-nav__link md-nav__link--active">
Overview
</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="#overview" title="Overview" class="md-nav__link">
Overview
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#no-need-pre-coded-ssid-password" title=" No need pre-coded SSID &amp; password" class="md-nav__link">
No need pre-coded SSID &amp; password
</a>
</li>
<li class="md-nav__item">
<a href="#simple-usage" title=" Simple usage" class="md-nav__link">
Simple usage
</a>
</li>
<li class="md-nav__item">
<a href="#store-the-established-connection" title=" Store the established connection" class="md-nav__link">
Store the established connection
</a>
</li>
<li class="md-nav__item">
<a href="#easy-to-embed-in" title=" Easy to embed in" class="md-nav__link">
Easy to embed in
</a>
</li>
<li class="md-nav__item">
<a href="#lives-with-the-your-sketches" title=" Lives with the your sketches" class="md-nav__link">
Lives with the your sketches
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#installation" title="Installation" class="md-nav__link">
Installation
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#requirements" title="Requirements" class="md-nav__link">
Requirements
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#supported-hardware" title="Supported hardware" class="md-nav__link">
Supported hardware
</a>
</li>
<li class="md-nav__item">
<a href="#required-libraries" title="Required libraries" class="md-nav__link">
Required libraries
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#install-the-autoconnect" title="Install the AutoConnect" class="md-nav__link">
Install the AutoConnect
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="gettingstarted/index.html" title="Getting started" class="md-nav__link">
Getting started
</a>
</li>
<li class="md-nav__item">
<a href="menu/index.html" title="AutoConnect menu" class="md-nav__link">
AutoConnect menu
</a>
</li>
<li class="md-nav__item">
<a href="usage/index.html" title="Usage the library" class="md-nav__link">
Usage the library
</a>
</li>
<li class="md-nav__item">
<a href="api/index.html" title="Library APIs" class="md-nav__link">
Library APIs
</a>
</li>
<li class="md-nav__item">
<a href="examples/index.html" title="Examples" class="md-nav__link">
Examples
</a>
</li>
<li class="md-nav__item">
<a href="faq/index.html" title="FAQ" class="md-nav__link">
FAQ
</a>
</li>
<li class="md-nav__item">
<a href="license/index.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="#overview" title="Overview" class="md-nav__link">
Overview
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#no-need-pre-coded-ssid-password" title=" No need pre-coded SSID &amp; password" class="md-nav__link">
No need pre-coded SSID &amp; password
</a>
</li>
<li class="md-nav__item">
<a href="#simple-usage" title=" Simple usage" class="md-nav__link">
Simple usage
</a>
</li>
<li class="md-nav__item">
<a href="#store-the-established-connection" title=" Store the established connection" class="md-nav__link">
Store the established connection
</a>
</li>
<li class="md-nav__item">
<a href="#easy-to-embed-in" title=" Easy to embed in" class="md-nav__link">
Easy to embed in
</a>
</li>
<li class="md-nav__item">
<a href="#lives-with-the-your-sketches" title=" Lives with the your sketches" class="md-nav__link">
Lives with the your sketches
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#installation" title="Installation" class="md-nav__link">
Installation
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#requirements" title="Requirements" class="md-nav__link">
Requirements
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#supported-hardware" title="Supported hardware" class="md-nav__link">
Supported hardware
</a>
</li>
<li class="md-nav__item">
<a href="#required-libraries" title="Required libraries" class="md-nav__link">
Required libraries
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#install-the-autoconnect" title="Install the AutoConnect" class="md-nav__link">
Install the AutoConnect
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<h1 id="autoconnect-for-esp8266">AutoConnect <small>for ESP8266</small><a class="headerlink" href="#autoconnect-for-esp8266" title="Permanent link">&para;</a></h1>
<p>An Arduino library for ESP8266 WLAN configuration at run time with web interface.</p>
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">&para;</a></h2>
<p>To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with <em>ESP8266WebServer</em> class.
Easily implementing the Web interface constituting the WLAN for ESP8266 WiFi connection. With this library to make a sketch easily which connects from ESP8266 to the access point at runtime by the web interface without hard-coded SSID and password.</p>
<p><img style="display:inline-block;width:460px;margin-right:30px;" src="./images/ov.png" /><span style="display:inline-block;width:182px;height:322px;border:solid 1px lightgrey;"><img data-gifffer="./images/ov.gif" data-gifffer-width="180" style="width:180px;" /></span></p>
<h3 id="no-need-pre-coded-ssid-password"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> No need pre-coded SSID &amp; password<a class="headerlink" href="#no-need-pre-coded-ssid-password" title="Permanent link">&para;</a></h3>
<p><span class="lead">It is no needed hard-coding in advance the SSID and Password into the sketch to connect between ESP8266 and WLAN. You can input SSID &amp; Password from a smartphone via the web interface at runtime.</span></p>
<h3 id="simple-usage"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Simple usage<a class="headerlink" href="#simple-usage" title="Permanent link">&para;</a></h3>
<p><span class="lead">AutoConnect control screen will be displayed automatically for establishing new connections. It aids by the <a href="https://en.wikipedia.org/wiki/Captive_portal">captive portal</a> when vested the connection cannot be detected.<br>By using the <a href="menu/index.html">AutoConnect menu</a>, to manage the connections convenient.</span></p>
<h3 id="store-the-established-connection"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Store the established connection<a class="headerlink" href="#store-the-established-connection" title="Permanent link">&para;</a></h3>
<p><span class="lead">The connection authentication data as credentials are saved automatically in EEPROM of ESP8266 and You can select the past SSID from the <a href="menu/index.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>
<p><span class="lead">AutoConnect can be embedded easily into your sketch, just "<strong>begin</strong>" and "<strong>handleClient</strong>".</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>
<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.</span></p>
<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>
<h4 id="supported-hardware">Supported hardware<a class="headerlink" href="#supported-hardware" title="Permanent link">&para;</a></h4>
<ul class="task-list">
<li class="task-list-item"><input type="checkbox" disabled checked/> Generic ESP8266 modules (applying the ESP8266 Community's Arduino core)</li>
<li class="task-list-item"><input type="checkbox" disabled checked/> Adafruit HUZZAH ESP8266 (ESP-12)</li>
<li class="task-list-item"><input type="checkbox" disabled checked/> ESP-WROOM-02</li>
<li class="task-list-item"><input type="checkbox" disabled checked/> Heltec WiFi Kit 8</li>
<li class="task-list-item"><input type="checkbox" disabled checked/> NodeMCU 0.9 (ESP-12) / NodeMCU 1.0 (ESP-12E)</li>
<li class="task-list-item"><input type="checkbox" disabled checked/> Olimex MOD-WIFI-ESP8266</li>
<li class="task-list-item"><input type="checkbox" disabled checked/> SparkFun Thing</li>
<li class="task-list-item"><input type="checkbox" disabled checked/> SweetPea ESP-210</li>
</ul>
<div class="admonition info">
<p class="admonition-title">About flash size on the module</p>
<p>The AutoConnect sketch size is relatively large. Large flash capacity is necessary. 512Kbyte (4Mbits) flash inclusion module such as ESP-01 is not recommended.</p>
</div>
<h4 id="required-libraries">Required libraries<a class="headerlink" href="#required-libraries" title="Permanent link">&para;</a></h4>
<p>AutoConnect requires the following environment and libraries.</p>
<p><i class="fa fa-download"></i> <strong>Arduino IDE</strong></p>
<p>The current upstream at the 1.8 level or later is needed. Please install from the <a href="https://www.arduino.cc/en/Main/Software">official Arduino IDE download page</a>. This step is not required if you already have a modern version.</p>
<p><i class="fa fa-download"></i> <strong>ESP8266 Arduino core</strong></p>
<p>AutoConnect targets sketches made on the assumption of <a href="https://github.com/esp8266/Arduino">ESP8266 Community's Arduino core</a>. The <a href="https://github.com/esp8266/Arduino/releases/latest">latest release</a> is recommended.<br />
Install third-party platform using the <em>Boards Manager</em> of Arduino IDE. Package URL is <a href="http://arduino.esp8266.com/stable/package_esp8266com_index.json">http://arduino.esp8266.com/stable/package_esp8266com_index.json</a></p>
<p><i class="fa fa-download"></i> <strong>Additional necessary library</strong></p>
<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>' in the topic '<strong>Communication</strong>', then you can see the <em>PageBuilder</em>. The latest version or 1.0.0 later is required.</p>
<p><img src="./images/lm.png" width="640"/></p>
<h3 id="install-the-autoconnect">Install the AutoConnect<a class="headerlink" href="#install-the-autoconnect" title="Permanent link">&para;</a></h3>
<p>Clone or download from the <a href="https://github.com/Hieromon/AutoConnect">AutoConnect GitHub repository</a>.</p>
<p><img src="./images/gitrepo.png" width="640"/></p>
<p>When you select Download, you can import it to Arduino IDE immediately. After downloaded, the AutoConnect-master.zip file will be saved in your download folder. Then in the Arduino IDE, navigate to <em>"Sketch &gt; Include Library"</em>. At the top of the drop down list, select the option to <em>"Add .ZIP Library..."</em>. Details for <a href="https://www.arduino.cc/en/Guide/Libraries#toc4">Arduino official page</a>.</p>
<p><img src="./images/ins_lib.png" /></p>
<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="gettingstarted/index.html" title="Getting started" 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>
Getting started
</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 Hieromon Ikasamo
</div>
powered by
<a href="http://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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.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.8eb9be28.js"></script>
<script>app.initialize({version:"0.17.3",url:{base:"."}})</script>
<script src="./js/gifffer.min.js"></script>
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","None","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");if(Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})}),document.forms.search){var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}</script>
</body>
</html>

@ -0,0 +1,480 @@
<!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 WLAN configuration at run time with web interface">
<link rel="canonical" href="https://Hieromon.github.io/AutoConnect/license/index.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-0.17.3, mkdocs-material-2.7.0">
<title>License - AutoConnect for ESP8266</title>
<link rel="stylesheet" href="../assets/stylesheets/application.78aab2dc.css">
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css">
<script src="../assets/javascripts/modernizr.1aa3b519.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="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../css/paragraph.css">
</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">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<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" 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
</span>
<span class="md-header-nav__topic">
License
</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" 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 md-tabs__link--active">
Overview
</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">
<span class="md-nav__button md-logo">
<img src="../images/arduino-logo.svg" width="48" height="48">
</span>
AutoConnect for ESP8266
</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/index.html" title="Getting started" class="md-nav__link">
Getting started
</a>
</li>
<li class="md-nav__item">
<a href="../menu/index.html" title="AutoConnect menu" class="md-nav__link">
AutoConnect menu
</a>
</li>
<li class="md-nav__item">
<a href="../usage/index.html" title="Usage the library" class="md-nav__link">
Usage the library
</a>
</li>
<li class="md-nav__item">
<a href="../api/index.html" title="Library APIs" class="md-nav__link">
Library APIs
</a>
</li>
<li class="md-nav__item">
<a href="../examples/index.html" title="Examples" class="md-nav__link">
Examples
</a>
</li>
<li class="md-nav__item">
<a href="../faq/index.html" title="FAQ" class="md-nav__link">
FAQ
</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">
<a href="index.html" title="License" class="md-nav__link md-nav__link--active">
License
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<h1>License</h1>
<p><strong>MIT License</strong></p>
<p>Copyright &copy; 2018 Hieromon Ikasamo</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.</p>
<p><strong>Acknowledgments</strong></p>
<p>The <strong>Luxbar</strong> is licensed under the MIT License.<br />
<a href="https://github.com/balzss/luxbar">https://github.com/balzss/luxbar</a></p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../faq/index.html" title="FAQ" 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>
FAQ
</span>
</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 Hieromon Ikasamo
</div>
powered by
<a href="http://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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.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.8eb9be28.js"></script>
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script>
<script src="../js/gifffer.min.js"></script>
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","None","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");if(Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})}),document.forms.search){var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}</script>
</body>
</html>

@ -0,0 +1,654 @@
<!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 WLAN configuration at run time with web interface">
<link rel="canonical" href="https://Hieromon.github.io/AutoConnect/menu/index.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-0.17.3, mkdocs-material-2.7.0">
<title>AutoConnect menu - AutoConnect for ESP8266</title>
<link rel="stylesheet" href="../assets/stylesheets/application.78aab2dc.css">
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css">
<script src="../assets/javascripts/modernizr.1aa3b519.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="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../css/paragraph.css">
</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">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<a href="#where-the-from" 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" 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
</span>
<span class="md-header-nav__topic">
AutoConnect 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" 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 md-tabs__link--active">
Overview
</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">
<span class="md-nav__button md-logo">
<img src="../images/arduino-logo.svg" width="48" height="48">
</span>
AutoConnect for ESP8266
</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/index.html" title="Getting started" class="md-nav__link">
Getting started
</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">
AutoConnect menu
</label>
<a href="index.html" title="AutoConnect menu" class="md-nav__link md-nav__link--active">
AutoConnect 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="#where-the-from" title=" Where the from" class="md-nav__link">
Where the from
</a>
</li>
<li class="md-nav__item">
<a href="#right-on-top" title=" Right on top" class="md-nav__link">
Right on top
</a>
</li>
<li class="md-nav__item">
<a href="#configure-new-ap" title=" Configure new AP" class="md-nav__link">
Configure new AP
</a>
</li>
<li class="md-nav__item">
<a href="#open-ssids" title=" Open SSIDs" class="md-nav__link">
Open SSIDs
</a>
</li>
<li class="md-nav__item">
<a href="#disconnect" title=" Disconnect" class="md-nav__link">
Disconnect
</a>
</li>
<li class="md-nav__item">
<a href="#reset" title=" Reset..." class="md-nav__link">
Reset...
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../usage/index.html" title="Usage the library" class="md-nav__link">
Usage the library
</a>
</li>
<li class="md-nav__item">
<a href="../api/index.html" title="Library APIs" class="md-nav__link">
Library APIs
</a>
</li>
<li class="md-nav__item">
<a href="../examples/index.html" title="Examples" class="md-nav__link">
Examples
</a>
</li>
<li class="md-nav__item">
<a href="../faq/index.html" title="FAQ" class="md-nav__link">
FAQ
</a>
</li>
<li class="md-nav__item">
<a href="../license/index.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="#where-the-from" title=" Where the from" class="md-nav__link">
Where the from
</a>
</li>
<li class="md-nav__item">
<a href="#right-on-top" title=" Right on top" class="md-nav__link">
Right on top
</a>
</li>
<li class="md-nav__item">
<a href="#configure-new-ap" title=" Configure new AP" class="md-nav__link">
Configure new AP
</a>
</li>
<li class="md-nav__item">
<a href="#open-ssids" title=" Open SSIDs" class="md-nav__link">
Open SSIDs
</a>
</li>
<li class="md-nav__item">
<a href="#disconnect" title=" Disconnect" class="md-nav__link">
Disconnect
</a>
</li>
<li class="md-nav__item">
<a href="#reset" title=" Reset..." class="md-nav__link">
Reset...
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<h1>AutoConnect menu</h1>
<div class="admonition info">
<p class="admonition-title">Luxbar</p>
<p>The AutoConnect menu is developed using the <a href="https://github.com/balzss/luxbar">LuxBar</a> which is licensed under the MIT License. See the <a href="../license/index.html">License</a>.</p>
</div>
<h2 id="where-the-from"><i class="fa fa-external-link"></i> Where the from<a class="headerlink" href="#where-the-from" title="Permanent link">&para;</a></h2>
<p>The AutoConnect menu appears when you access the <strong>AutoConnect root path</strong>. It is assigned to "<strong>/_ac</strong>" located on ESP8266 <em>local IP address</em> by default. This location can be changed in the sketch. The following screen will appear at access to <code class="codehilite">http://{localIP}/_ac</code> as the root path. This is the statistics of the current WiFi connection. You can access the menu from the here. (e.g. <code class="codehilite">http://192.168.244.1/_ac</code> for SoftAP mode.)<br />
To invoke the menu tap <i class="fa fa-bars"></i> at right on top.</p>
<p><img src="../images/_ac.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /></p>
<div class="admonition note">
<p class="admonition-title">What's local IP?</p>
<p>A local IP means Local IP at connection established or SoftAP's IP.</p>
</div>
<h2 id="right-on-top"><i class="fa fa-bars"></i> Right on top<a class="headerlink" href="#right-on-top" title="Permanent link">&para;</a></h2>
<p>Currently, AutoConnect supports four menus. Undermost menu returns to home path of its sketch.</p>
<ul>
<li><strong>Configure new AP</strong> : Configure SSID and Password for new access point.</li>
<li><strong>Open SSIDs</strong> : Opens the past SSID which has been established connection from EEPROM.</li>
<li><strong>Disconnect</strong> : Disconnects current connection.</li>
<li><strong>Reset...</strong> : Rest the ESP8266 module.</li>
<li><strong>HOME</strong> : Return to user home page.</li>
</ul>
<p><img src="../images/menu.png" style="width:280px;" /></p>
<h2 id="configure-new-ap"><i class="fa fa-bars"></i> Configure new AP<a class="headerlink" href="#configure-new-ap" title="Permanent link">&para;</a></h2>
<p>Scan all available access point and display it. Strength and security of the detected AP are marked. The <i class="fa fa-lock"></i> is indicated for the SSID that needs a security key. "<strong>Hidden:</strong>" means the number of hidden SSIDs discovered.<br />
Enter SSID and Passphrase and tap "<strong>apply</strong>" to try connection. </p>
<p><img src="../images/newap.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /></p>
<h2 id="open-ssids"><i class="fa fa-bars"></i> Open SSIDs<a class="headerlink" href="#open-ssids" title="Permanent link">&para;</a></h2>
<p>Once it was established connection, its SSID and Password will be stored to the EEPROM of ESP8266 automatically. The <strong>Open SSIDs</strong> menu reads the saved SSID credentials from the EEPROM. The stored credential data are listed by the SSID as shown below. Its label is a clickable button. To tap the SSID button starts connection it.</p>
<p><img src="../images/open.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /></p>
<h2 id="disconnect"><i class="fa fa-bars"></i> Disconnect<a class="headerlink" href="#disconnect" title="Permanent link">&para;</a></h2>
<p>Disconnect ESP8266 from the current connection. After the menu tapped, AutoConnect menu cannot be accessed. Once disconnected, you will need to set the SSID again to connect to the WLAN.</p>
<p>It can also reset the ESP8266 automatically after being disconnected from the <a href="../api/index.html#autoreset">API</a> used in the sketch.</p>
<h2 id="reset"><i class="fa fa-bars"></i> Reset...<a class="headerlink" href="#reset" title="Permanent link">&para;</a></h2>
<p>Reset the ESP8266, it will be rebooted. After rebooting complete, the ESP8266 begins establishing the previous connection by WIFI_STA mode and the <em>esp8266ap</em> as SoftAP disappears from the WLAN.</p>
<p><img src="../images/resetting.png" style="width:280px;" /></p>
<div class="admonition warning">
<p class="admonition-title">Not every module will be rebooted normally</p>
<p>The Reset menu is using the <strong>ESP.reset()</strong> function. This is an almost hardware reset. In order to resume the sketch normally, the <a href="https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes">state of GPIO0</a> is important. Since this depends on the circuit implementation for each module, not every module will be rebooted normally. See also <a href="../faq/index.html#hang-up-after-reset">FAQ</a>.</p>
</div>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../gettingstarted/index.html" title="Getting started" 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>
Getting started
</span>
</div>
</a>
<a href="../usage/index.html" title="Usage the library" 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>
Usage the library
</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 Hieromon Ikasamo
</div>
powered by
<a href="http://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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.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.8eb9be28.js"></script>
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script>
<script src="../js/gifffer.min.js"></script>
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","None","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");if(Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})}),document.forms.search){var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}</script>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://Hieromon.github.io/AutoConnect//index.html</loc>
<lastmod>2018-03-13</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://Hieromon.github.io/AutoConnect//gettingstarted/index.html</loc>
<lastmod>2018-03-13</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://Hieromon.github.io/AutoConnect//menu/index.html</loc>
<lastmod>2018-03-13</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://Hieromon.github.io/AutoConnect//usage/index.html</loc>
<lastmod>2018-03-13</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://Hieromon.github.io/AutoConnect//api/index.html</loc>
<lastmod>2018-03-13</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://Hieromon.github.io/AutoConnect//examples/index.html</loc>
<lastmod>2018-03-13</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://Hieromon.github.io/AutoConnect//faq/index.html</loc>
<lastmod>2018-03-13</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://Hieromon.github.io/AutoConnect//license/index.html</loc>
<lastmod>2018-03-13</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

File diff suppressed because it is too large Load Diff

@ -5,7 +5,7 @@ site_author: 'Hieromon Ikasamo'
site_url: 'https://Hieromon.github.io/AutoConnect/' site_url: 'https://Hieromon.github.io/AutoConnect/'
# Docs # Docs
docs_dir: 'docs' docs_dir: 'mkdocs'
# Pages # Pages
pages: pages:
@ -21,11 +21,13 @@ pages:
# Repository # Repository
repo_name: 'Hieromon/AutoConnect' repo_name: 'Hieromon/AutoConnect'
repo_url: 'https://github.com/Hieromon/AutoConnect' repo_url: 'https://github.com/Hieromon/AutoConnect'
edit_uri: ""
# Copyright # Copyright
copyright: 'Copyright &copy; 2018 Hieromon Ikasamo' copyright: 'Copyright &copy; 2018 Hieromon Ikasamo'
# Configuration # Configuration
use_directory_urls: false
theme: theme:
name: 'material' name: 'material'
feature: feature:
@ -53,7 +55,7 @@ extra:
# Google Analytics # Google Analytics
google_analytics: google_analytics:
- 'UA-XXXXXXXX-X' - !!python/object/apply:os.getenv ["GOOGLE_ANALYTICS_KEY"]
- 'auto' - 'auto'
# Extensions # Extensions

@ -0,0 +1,38 @@
.lead {
color: gray;
font-size: 15px;
}
.md-typeset h2 {
border-bottom: solid 1px #d3d3d3;
padding-bottom: 5px;
}
.md-typeset pre {
font-size: 12px;
}
.md-typeset .codehilitetable {
margin-left:-20px;
margin-right: -20px;
border-radius: 0;
}
.md-typeset .codehilitetable .linenodiv {
background-color: #364549 !important;
}
.md-typeset .codehilitetable .linenodiv pre {
background-color: #364549 !important;
color: #aaa;
margin: 0;
}
.apidef {
display: inline-block;
width: 100px;
}
.apidl {
margin-left: 20px;
}

@ -8,7 +8,7 @@ Uses the web interface to light the LED connected to the **[NodeMCU](https://git
Access to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED blinks according to the value of the button that was clicked. This example is a typical sketch of manipulating ESP8266's GPIO via WLN. Access to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED blinks according to the value of the button that was clicked. This example is a typical sketch of manipulating ESP8266's GPIO via WLN.
<img data-gifffer="/images/ac2.gif" /> <img data-gifffer="../images/ac2.gif" />
Embed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots. Embed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots.
@ -18,7 +18,7 @@ Embed AutoConnect library into this sketch. There are few places to be changed.
Bind to ESP8266WebServer, performs handleClient with handleRequest. Bind to ESP8266WebServer, performs handleClient with handleRequest.
<img src="/images/handleClient.svg" /> <img src="../images/handleClient.svg" />
!!! hint "In what situations should the handleRequest be used." !!! hint "In what situations should the handleRequest be used."
It is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible. It is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible.
@ -27,7 +27,7 @@ Bind to ESP8266WebServer, performs handleClient with handleRequest.
Declare only AutoConnect, performs handleClient. Declare only AutoConnect, performs handleClient.
<img src="/images/handlePortal.svg" /> <img src="../images/handlePortal.svg" />
<script> <script>
window.onload = function() { window.onload = function() {

@ -38,7 +38,7 @@ void loop() {
??? hint "You can interactively check the WiFi state of ESP8266." ??? hint "You can interactively check the WiFi state of ESP8266."
Please try [**ESPShaker**](https://github.com/Hieromon/ESPShaker). It is ESP8266 interactive serial command processor. Please try [**ESPShaker**](https://github.com/Hieromon/ESPShaker). It is ESP8266 interactive serial command processor.
<img src="/images/espshaker.gif" /> <img src="../images/espshaker.gif" />
## <i class="fa fa-question-circle"></i> Does not response from \_ac. ## <i class="fa fa-question-circle"></i> Does not response from \_ac.

@ -35,7 +35,7 @@ void loop() {
After about 30 seconds, if the ESP8266 cannot connect to nearby Wi-Fi spot, you pull out your smartphone and open *Wi-Fi settings* from the *Settings* Apps. You can see the **esp8266ap** in the list of *"CHOOSE A NETWORK..."*. Then tap the esp8266ap and enter password **12345678**, a something screen pops up automatically as shown below. After about 30 seconds, if the ESP8266 cannot connect to nearby Wi-Fi spot, you pull out your smartphone and open *Wi-Fi settings* from the *Settings* Apps. You can see the **esp8266ap** in the list of *"CHOOSE A NETWORK..."*. Then tap the esp8266ap and enter password **12345678**, a something screen pops up automatically as shown below.
<span style="display:inline-block;width:282px;height:501px;border:1px solid lightgrey;"><img data-gifffer="/images/login_ani.gif" data-gifffer-width="280" style="width:280px;" /></span><img src="/images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="/images/stat.png" style="border:1px solid lightgrey;width:280px;" /></span> <span style="display:inline-block;width:282px;height:501px;border:1px solid lightgrey;"><img data-gifffer="../images/login_ani.gif" data-gifffer-width="280" style="width:280px;" /></span><img src="../images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="../images/stat.png" style="border:1px solid lightgrey;width:280px;" /></span>
This is the AutoConnect statistics screen. This screen displays the current status of the established connection, WiFi mode, IP address, free memory size, and etc. Also, the **hamburger icon** is the control menu of AutoConnect seems at the upper right. By tap the hamburger icon, the control menu appears as the below. This is the AutoConnect statistics screen. This screen displays the current status of the established connection, WiFi mode, IP address, free memory size, and etc. Also, the **hamburger icon** is the control menu of AutoConnect seems at the upper right. By tap the hamburger icon, the control menu appears as the below.
@ -43,7 +43,7 @@ This is the AutoConnect statistics screen. This screen displays the current stat
Here, tap *"Configure new AP"* to connect the new access point then the SSID configuration screen would be shown. Enter the **SSID** and **Passphrase** and tap **apply** to start connecting the access point. Here, tap *"Configure new AP"* to connect the new access point then the SSID configuration screen would be shown. Enter the **SSID** and **Passphrase** and tap **apply** to start connecting the access point.
<img src="/images/menu_login.png" style="border:1px solid lightgrey;width:280px;" /><img src="/images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="/images/config_ssid.png" style="border:1px solid lightgrey;width:280px;" /> <img src="../images/menu_login.png" style="border:1px solid lightgrey;width:280px;" /><img src="../images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="../images/config_ssid.png" style="border:1px solid lightgrey;width:280px;" />
### <i class="fa fa-rss"></i> Connection establishment ### <i class="fa fa-rss"></i> Connection establishment
@ -52,13 +52,13 @@ After connection established, the current status screen will appear. It is alrea
For one, continues execution of the sketch while keeping this connection. You can access ESP8266 via browser through the established IP address after cancel to "**Log in**" by upper right on the screen. For one, continues execution of the sketch while keeping this connection. You can access ESP8266 via browser through the established IP address after cancel to "**Log in**" by upper right on the screen.
Or, "**RESET**" can be selected. The ESP8266 resets and reboots. After that, immediately before the connection will be restored automatically with WIFI\_STA mode. Or, "**RESET**" can be selected. The ESP8266 resets and reboots. After that, immediately before the connection will be restored automatically with WIFI\_STA mode.
<img src="/images/established.png" style="border:1px solid lightgrey;width:280px;" /><img src="/images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="/images/reset.png" style="border:1px solid lightgrey;width:280px;" /> <img src="../images/established.png" style="border:1px solid lightgrey;width:280px;" /><img src="./images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="../images/reset.png" style="border:1px solid lightgrey;width:280px;" />
### <i class="fa fa-play-circle"></i> Run for usually ### <i class="fa fa-play-circle"></i> Run for usually
The IP address of ESP8266 would be displayed on the serial monitor after connection recovered. Please access its address from the browser. The "Hello, world" page will respond. It's the page that was handled by in the sketch with "**on**" function of *ESP8266WebServer*. The IP address of ESP8266 would be displayed on the serial monitor after connection recovered. Please access its address from the browser. The "Hello, world" page will respond. It's the page that was handled by in the sketch with "**on**" function of *ESP8266WebServer*.
<img src="/images/serial.png" style="vertical-align:top;" /><img src="/images/arrow_right.svg" style="vertical-align:top;padding-top:60px;width:48px;margin-left:45px;margin-right:30px;" /><img src="/images/hello_world.png" style="border:1px solid lightgrey;width:280px;" /> <img src="../images/serial.png" style="vertical-align:top;" /><img src="../images/arrow_right.svg" style="vertical-align:top;padding-top:60px;width:48px;margin-left:45px;margin-right:30px;" /><img src="../images/hello_world.png" style="border:1px solid lightgrey;width:280px;" />
<script> <script>
window.onload = function() { window.onload = function() {

@ -0,0 +1,615 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg8"
version="1.1"
viewBox="0 0 278.12582 198.967"
height="198.967mm"
width="278.12582mm">
<defs
id="defs2">
<marker
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path6600"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible">
<path
id="path6582"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="Tail"
style="overflow:visible">
<g
id="g6627"
transform="scale(-1.2)"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1">
<path
id="path6615"
d="M -3.8048674,-3.9585227 0.54352094,0"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
<path
id="path6617"
d="M -1.2866832,-3.9585227 3.0617053,0"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
<path
id="path6619"
d="M 1.3053582,-3.9585227 5.6537466,0"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
<path
id="path6621"
d="M -3.8048674,4.1775838 0.54352094,0.21974226"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
<path
id="path6623"
d="M -1.2866832,4.1775838 3.0617053,0.21974226"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
<path
id="path6625"
d="M 1.3053582,4.1775838 5.6537466,0.21974226"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
</g>
</marker>
<linearGradient
id="linearGradient6499"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6497" />
</linearGradient>
<marker
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend-9"
style="overflow:visible">
<path
id="path6600-6"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
</marker>
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(189.96632,-40.023319)"
id="layer1">
<path
id="path2172"
style="fill:none;stroke:#000000;stroke-width:0.0264583px"
d="M -184.95309,50.036549 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29166,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29166,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29166,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29166,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29166,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29166,-183.953771 V 233.99032 M -94.994761,50.036549 V 233.99032 M -89.703095,50.036549 V 233.99032 M -84.411427,50.036549 V 233.99032 m 5.29167,-183.953771 V 233.99032 m 5.29166,-183.953771 V 233.99032 m 5.29167,-183.953771 V 233.99032 M -184.95309,50.036549 h 120.162153 m -120.162153,5.291667 h 120.162153 m -120.162153,5.291666 h 120.162153 m -120.162153,5.291667 h 120.162153 m -120.162153,5.291666 h 120.162153 m -120.162153,5.291666 h 120.162153 m -120.162153,5.291667 h 120.162153 m -120.162153,5.291666 h 120.162153 m -120.162153,5.291667 h 120.162153 m -120.162153,5.291666 h 120.162153 m -120.162153,5.291673 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29167 h 120.162153 m -120.162153,5.29166 h 120.162153 m -120.162153,5.29167 h 120.162153" />
<path
id="path2172-5"
style="fill:none;stroke:#000000;stroke-width:0.0264583px"
d="M -37.002571,50.036548 V 233.99032 M -31.710922,50.036548 V 233.99032 m 5.29163,-183.953772 V 233.99032 M -21.127639,50.036548 V 233.99032 m 5.29167,-183.953772 V 233.99032 m 5.29166,-183.953772 V 233.99032 M -5.2526417,50.036548 V 233.99032 M 0.03901526,50.036548 V 233.99032 M 5.3306817,50.036548 V 233.99032 M 10.622349,50.036548 V 233.99032 M 15.914009,50.036548 V 233.99032 M 21.205679,50.036548 V 233.99032 M 26.497349,50.036548 V 233.99032 M 31.789009,50.036548 V 233.99032 M 37.08068,50.036548 V 233.99032 M 42.37235,50.036548 V 233.99032 M 47.66401,50.036548 V 233.99032 M 52.95568,50.036548 V 233.99032 M 58.247344,50.036548 V 233.99032 M 63.539013,50.036548 V 233.99032 M 68.830683,50.036548 V 233.99032 M 74.122348,50.036548 V 233.99032 M 79.414019,50.036548 V 233.99032 M -37.002571,50.036548 H 83.15951 M -37.002571,55.328215 H 83.15951 M -37.002571,60.619881 H 83.15951 M -37.002571,65.911548 H 83.15951 M -37.002571,71.203214 H 83.15951 M -37.002571,76.494881 H 83.15951 M -37.002571,81.786548 H 83.15951 M -37.002571,87.078215 H 83.15951 M -37.002571,92.369881 H 83.15951 M -37.002571,97.661546 H 83.15951 M -37.002571,102.95322 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29167 H 83.15951 m -120.162081,5.29166 H 83.15951 m -120.162081,5.29167 H 83.15951" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="-179.95392"
y="58.437435"
id="text817"><tspan
y="58.437435"
x="-179.95392"
id="tspan1920"><tspan
id="tspan1982"
style="fill:#669900">#include </tspan>&lt;<tspan
id="tspan1984"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
y="63.729103"
x="-179.95392"
id="tspan1922"><tspan
id="tspan1986"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;fill:#669900">#include</tspan> &lt;<tspan
id="tspan1988"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
y="69.020767"
x="-179.95392"
id="tspan1924"></tspan><tspan
y="74.312431"
x="-179.95392"
id="tspan1926"></tspan><tspan
y="79.604103"
x="-179.95392"
id="tspan1928"><tspan
id="tspan2058"
style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
y="84.895767"
x="-179.95392"
id="tspan1930"></tspan><tspan
y="90.187431"
x="-179.95392"
id="tspan1932"></tspan><tspan
y="95.479103"
x="-179.95392"
id="tspan1934"><tspan
id="tspan1992"
style="fill:#3366cc">void</tspan> rootPage() {</tspan><tspan
y="100.77077"
x="-179.95392"
id="tspan1936"> <tspan
id="tspan1994"
style="fill:#3366cc">char</tspan> content[] = <tspan
id="tspan1996"
style="fill:#003399">&quot;Hello, world&quot;</tspan>;</tspan><tspan
y="106.06243"
x="-179.95392"
id="tspan1938"> Server.<tspan
id="tspan1998"
style="fill:#ff6600">send</tspan>(200, <tspan
id="tspan2000"
style="fill:#003399">&quot;text/plain&quot;</tspan>, content);</tspan><tspan
y="111.3541"
x="-179.95392"
id="tspan1940">}</tspan><tspan
y="116.64577"
x="-179.95392"
id="tspan1942"></tspan><tspan
y="121.93743"
x="-179.95392"
id="tspan1944"><tspan
id="tspan2002"
style="fill:#3366cc">void</tspan> <tspan
id="tspan2004"
style="fill:#808080">setup</tspan>() {</tspan><tspan
y="127.2291"
x="-179.95392"
id="tspan1946"> <tspan
id="tspan2010"
style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
y="132.52077"
x="-179.95392"
id="tspan1948"> <tspan
id="tspan2012"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan2014"
style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
y="137.81242"
x="-179.95392"
id="tspan1950"> <tspan
id="tspan2018"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan2016"
style="fill:#ff6600">println</tspan>();</tspan><tspan
y="143.1041"
x="-179.95392"
id="tspan1952"></tspan><tspan
y="148.39577"
x="-179.95392"
id="tspan1954"> <tspan
id="tspan2020"
style="fill:#ff6600">WiFi</tspan>.<tspan
id="tspan2022"
style="fill:#ff6600">begin</tspan>(<tspan
id="tspan2024"
style="fill:#003399">&quot;ssid&quot;</tspan>, <tspan
id="tspan2026"
style="fill:#003399">&quot;pass&quot;</tspan>);</tspan><tspan
y="153.68742"
x="-179.95392"
id="tspan1956"> <tspan
id="tspan2028"
style="fill:#808080">while</tspan> (<tspan
id="tspan2030"
style="fill:#ff6600">WiFi</tspan>.<tspan
id="tspan2032"
style="fill:#ff6600">status</tspan>() != WL_CONNECTED) {</tspan><tspan
y="158.9791"
x="-179.95392"
id="tspan1958"> <tspan
id="tspan2034"
style="fill:#ff6600">delay</tspan>(100);</tspan><tspan
y="164.27077"
x="-179.95392"
id="tspan1960"> }</tspan><tspan
y="169.56242"
x="-179.95392"
id="tspan1962"></tspan><tspan
y="174.8541"
x="-179.95392"
id="tspan1964"> Server.<tspan
id="tspan2036"
style="fill:#ff6600">on</tspan>(<tspan
id="tspan2038"
style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
y="180.14577"
x="-179.95392"
id="tspan1966"> Server.<tspan
id="tspan2040"
style="fill:#ff6600">begin</tspan>();</tspan><tspan
y="185.43742"
x="-179.95392"
id="tspan1968"> <tspan
id="tspan2042"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan2044"
style="fill:#ff6600">println</tspan>(<tspan
id="tspan2046"
style="fill:#003399">&quot;WiFi connected: &quot;</tspan> +</tspan><tspan
y="190.7291"
x="-179.95392"
id="tspan1970"> <tspan
id="tspan2048"
style="fill:#ff6600">WiFi</tspan>.<tspan
id="tspan2050"
style="fill:#ff6600">localIP</tspan>().toString());</tspan><tspan
y="196.02077"
x="-179.95392"
id="tspan1972">}</tspan><tspan
y="201.31242"
x="-179.95392"
id="tspan1974"></tspan><tspan
y="206.6041"
x="-179.95392"
id="tspan1976"><tspan
id="tspan2054"
style="fill:#3366cc"></tspan></tspan><tspan
id="tspan2154"
y="211.89577"
x="-179.95392"><tspan
id="tspan2156"
style="fill:#3366cc"></tspan></tspan><tspan
id="tspan2159"
y="217.18742"
x="-179.95392"><tspan
id="tspan2161"
style="fill:#3366cc">void</tspan> <tspan
id="tspan2056"
style="fill:#808080">loop</tspan>() {</tspan><tspan
y="222.4791"
x="-179.95392"
id="tspan1978"> Server.<tspan
id="tspan2052"
style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
y="227.77075"
x="-179.95392"
id="tspan1980">}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="-31.92449"
y="58.966602"
id="text817-4"><tspan
y="58.966602"
x="-31.92449"
id="tspan2088"><tspan
id="tspan2191"
style="fill:#669900">#include </tspan>&lt;<tspan
id="tspan2199"
style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
y="64.25827"
x="-31.92449"
id="tspan2090"><tspan
id="tspan2193"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan2205"
style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
y="69.549934"
x="-31.92449"
id="tspan2092"><tspan
id="tspan2195"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan2207"
style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">AutoConnect.h</tspan>&gt;</tspan><tspan
y="74.841599"
x="-31.92449"
id="tspan2094"></tspan><tspan
y="80.13327"
x="-31.92449"
id="tspan2096"><tspan
id="tspan2209"
style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
y="85.424934"
x="-31.92449"
id="tspan2098"><tspan
id="tspan2211"
style="fill:#ff6600">AutoConnect</tspan> Portal(Server);</tspan><tspan
y="90.716599"
x="-31.92449"
id="tspan2100"></tspan><tspan
y="96.00827"
x="-31.92449"
id="tspan2102"><tspan
id="tspan2213"
style="fill:#808080">void</tspan> rootPage() {</tspan><tspan
y="101.29993"
x="-31.92449"
id="tspan2104"> <tspan
id="tspan2215"
style="fill:#3366cc">char</tspan> content[] = <tspan
id="tspan2219"
style="fill:#003399">&quot;Hello, world&quot;</tspan>;</tspan><tspan
y="106.5916"
x="-31.92449"
id="tspan2106"> Server.<tspan
id="tspan2217"
style="fill:#ff6600">send</tspan>(200, <tspan
id="tspan2221"
style="fill:#003399">&quot;text/plain&quot;</tspan>, content);</tspan><tspan
y="111.88326"
x="-31.92449"
id="tspan2108">}</tspan><tspan
y="117.17493"
x="-31.92449"
id="tspan2110"></tspan><tspan
y="122.4666"
x="-31.92449"
id="tspan2112"><tspan
id="tspan2223"
style="fill:#3366cc">void</tspan> <tspan
id="tspan2227"
style="fill:#808080">setup</tspan>() {</tspan><tspan
y="127.75826"
x="-31.92449"
id="tspan2114"> <tspan
id="tspan2229"
style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
y="133.04993"
x="-31.92449"
id="tspan2116"> <tspan
id="tspan2231"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan2233"
style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
y="138.3416"
x="-31.92449"
id="tspan2118"> <tspan
id="tspan2235"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan2237"
style="fill:#ff6600">println</tspan>();</tspan><tspan
y="143.63327"
x="-31.92449"
id="tspan2120"></tspan><tspan
y="148.92493"
x="-31.92449"
id="tspan2122"></tspan><tspan
y="154.2166"
x="-31.92449"
id="tspan2124"></tspan><tspan
y="159.50827"
x="-31.92449"
id="tspan2126"></tspan><tspan
y="164.79993"
x="-31.92449"
id="tspan2128"></tspan><tspan
y="170.0916"
x="-31.92449"
id="tspan2130"></tspan><tspan
y="175.38327"
x="-31.92449"
id="tspan2132"> Server.<tspan
id="tspan2239"
style="fill:#ff6600">on</tspan>(<tspan
id="tspan2241"
style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
y="180.67493"
x="-31.92449"
id="tspan2134"> <tspan
id="tspan2257"
style="fill:#3366cc">boolean</tspan> r = Portal.<tspan
id="tspan2243"
style="fill:#ff6600">begin</tspan>();</tspan><tspan
y="185.9666"
x="-31.92449"
id="tspan2136"> <tspan
id="tspan2245"
style="fill:#808080">if</tspan> (r) {</tspan><tspan
y="191.25826"
x="-31.92449"
id="tspan2138"> <tspan
id="tspan2247"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan2249"
style="fill:#ff6600">println</tspan>(<tspan
id="tspan2251"
style="fill:#003399">&quot;WiFi connected: &quot;</tspan> +</tspan><tspan
y="196.54993"
x="-31.92449"
id="tspan2140"> <tspan
id="tspan2253"
style="fill:#ff6600">WiFi</tspan>.<tspan
id="tspan2255"
style="fill:#ff6600">localIP</tspan>().toString());</tspan><tspan
y="201.8416"
x="-31.92449"
id="tspan2142"> }</tspan><tspan
y="207.13326"
x="-31.92449"
id="tspan2144">}</tspan><tspan
y="212.42493"
x="-31.92449"
id="tspan2146"></tspan><tspan
y="217.7166"
x="-31.92449"
id="tspan2148"><tspan
id="tspan2259"
style="fill:#3366cc">void</tspan> <tspan
id="tspan2261"
style="fill:#808080">loop</tspan>() {</tspan><tspan
y="223.00826"
x="-31.92449"
id="tspan2150"> Portal.<tspan
id="tspan2263"
style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
y="228.29993"
x="-31.92449"
id="tspan2152">}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="-136.61319"
y="47.824837"
id="text8720"><tspan
id="tspan8718"
x="-136.61319"
y="47.824837"
style="font-size:6.3499999px;stroke-width:0.26458332">Before</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#cc0000;fill-opacity:0.5884476;stroke:none;stroke-width:0.26458332"
x="-65.795631"
y="69.901192"
id="text4947"><tspan
id="tspan4945"
x="-65.795631"
y="69.901192"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#cc0000;fill-opacity:0.5884476;stroke-width:0.26458332">Insert</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#cc0000;fill-opacity:0.5884476;stroke:none;stroke-width:0.26458332"
x="-65.795631"
y="85.708183"
id="text4947-7"><tspan
id="tspan4945-8"
x="-65.795631"
y="85.708183"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#cc0000;fill-opacity:0.5884476;stroke-width:0.26458332">Insert</tspan></text>
<path
style="display:inline;opacity:1;fill:#cc0000;fill-opacity:0.5884476;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
id="path8601"
d="m -36.00955,83.447853 -5.300459,3.260004 V 80.18785 Z" />
<path
style="display:inline;opacity:1;fill:#cc0000;fill-opacity:0.5884476;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
id="path8601-8"
d="m -36.00955,67.640873 -5.300459,3.260004 V 64.38087 Z" />
<path
style="display:inline;fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0;stroke-opacity:0.58823529"
d="M -33.718647,70.588461 H 30.67994"
id="path8701" />
<path
style="display:inline;fill:none;stroke:#ff0000;stroke-width:1.15039361;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.30078721, 2.30078721;stroke-dashoffset:0;stroke-opacity:0.58823529"
d="M -34.077897,86.89278 H 51.1476"
id="path8701-6" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#cc0000;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332"
x="-63.445457"
y="157.57935"
id="text4947-7-7"><tspan
id="tspan4945-8-3"
x="-63.445457"
y="157.57935"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#cc0000;fill-opacity:0.58823529;stroke-width:0.26458332">Remove</tspan></text>
<path
style="display:inline;opacity:1;fill:#cc0000;fill-opacity:0.58823529;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
id="path8601-2"
d="m -65.309973,154.97999 -5.300459,3.26001 v -6.52001 z" />
<path
style="display:inline;fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0;stroke-opacity:0.58823529"
d="m -177.86664,141.31207 v 27.45676 h 104.210893 v -27.20715 z"
id="path8699" />
<path
style="display:inline;fill:none;stroke:#cc0000;stroke-width:1.13;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823529"
d="M -84.132747,179.15988 H -133.17417"
id="path8682" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#cc0000;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332"
x="-76.145477"
y="180.94493"
id="text4947-7-7-1"><tspan
id="tspan4945-8-3-2"
x="-76.145477"
y="180.94493"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#cc0000;fill-opacity:0.58823529;stroke-width:0.26458332">Replace</tspan></text>
<path
style="display:inline;opacity:1;fill:#cc0000;fill-opacity:0.58823529;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
id="path8601-2-1"
d="m -78.899053,179.17113 -5.300459,3.26001 v -6.52001 z" />
<path
style="display:inline;opacity:1;fill:#cc0000;fill-opacity:0.58823529;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
id="path8601-2-1-2"
d="m -30.70137,179.17113 -5.300459,3.26001 v -6.52001 z" />
<path
style="display:inline;fill:none;stroke:#cc0000;stroke-width:1.13;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823529"
d="m -35.948027,179.25868 h -8.68119"
id="path8682-3" />
<path
style="display:inline;fill:none;stroke:#ff0000;stroke-width:1.14999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.3, 2.3;stroke-dashoffset:0;stroke-opacity:0.58823529"
d="m -174.93936,181.53228 h 37.67539"
id="path8701-6-3" />
<path
style="display:inline;fill:none;stroke:#ff0000;stroke-width:1.14999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.3, 2.3;stroke-dashoffset:0;stroke-opacity:0.58823529"
d="M -27.052337,181.53228 H 41.94874"
id="path8701-6-3-0" />
<path
style="display:inline;fill:none;stroke:#cc0000;stroke-width:1.13;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823529"
d="M -84.091357,221.39293 H -118.39171"
id="path8682-0" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#cc0000;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332"
x="-76.104088"
y="223.17807"
id="text4947-7-7-1-1"><tspan
id="tspan4945-8-3-2-6"
x="-76.104088"
y="223.17807"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#cc0000;fill-opacity:0.58823529;stroke-width:0.26458332">Replace</tspan></text>
<path
style="display:inline;opacity:1;fill:#cc0000;fill-opacity:0.58823529;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
id="path8601-2-1-1"
d="m -78.857653,221.40418 -5.300459,3.26001 v -6.52001 z" />
<path
style="display:inline;opacity:1;fill:#cc0000;fill-opacity:0.58823529;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
id="path8601-2-1-2-6"
d="m -30.659979,221.40418 -5.300459,3.26001 v -6.52001 z" />
<path
style="display:inline;fill:none;stroke:#cc0000;stroke-width:1.13000011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823529"
d="m -35.906636,221.49173 h -8.681191"
id="path8682-3-5" />
<path
style="display:inline;fill:none;stroke:#ff0000;stroke-width:1.14999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.3, 2.3;stroke-dashoffset:0;stroke-opacity:0.58823529"
d="m -174.89797,224.5564 h 15.35838"
id="path8701-6-3-3" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="12.34372"
y="47.84034"
id="text8720-4"><tspan
id="tspan8718-5"
x="12.34372"
y="47.84034"
style="font-size:6.3499999px;stroke-width:0.26458332">After</tspan></text>
<path
style="display:inline;opacity:1;fill:none;stroke:#ff0000;stroke-width:1.14999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.3, 2.3;stroke-dashoffset:0;stroke-opacity:0.58823529"
d="m -27.010942,224.5564 h 15.680831"
id="path8701-6-3-0-1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg:svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
id="svg8"
version="1.1"
viewBox="0 0 190.78812 90.019508"
height="90.019508mm"
width="190.78812mm">
<svg:defs
id="defs2" />
<svg:metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</svg:metadata>
<svg:g
transform="translate(-10.346796,-89.855804)"
id="layer1">
<svg:g
transform="matrix(0.26458333,0,0,0.26458333,10.755441,89.855804)"
id="g4"
style="fill:none;stroke:#ffffff;stroke-width:60;stroke-opacity:1">
<svg:path
style="stroke:#ffffff;stroke-opacity:1"
id="path6"
d="m 174,30 a 145.54455,140 0 0 0 0,280 C 364,320 344,30 544,30 a 145.54455,140 0 0 1 0,280 C 354,320 374,30 174,30" />
</svg:g>
<svg:g
style="font-size:167px;font-family:sans-serif;text-anchor:middle;fill:#00979c;stroke:#ffffff;stroke-width:20;stroke-opacity:1"
transform="matrix(0.26458333,0,0,0.26458333,10.755441,92.501637)"
id="g8"
font-size="167">
<svg:g
style="stroke:#ffffff;stroke-opacity:1"
id="text10">
<svg:path
style="stroke:#ffffff;stroke-opacity:1"
id="path3075"
d="M 528.06885,194.67432 V 161.89404 H 495.5332 v -13.69922 h 32.53565 v -32.53564 h 13.8623 v 32.53564 h 32.53565 v 13.69922 h -32.53565 v 32.78028 z" />
</svg:g>
<svg:text
style="stroke:#ffffff;stroke-opacity:1"
id="text12"
dy="0"
y="218"
x="181">
<ndash />
</svg:text>
</svg:g>
<svg:g
transform="matrix(0.26458333,0,0,0.26458333,10.755441,89.855804)"
id="g14"
font-size="40"
style="font-size:40px;font-family:Arial;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1">
<svg:g
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
id="text16">
<svg:path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
id="path3072"
d="M 681.55078,29.285156 V 15.730469 h -5.15625 v -2.363281 h 13.00781 v 2.363281 h -5.19531 v 13.554687 z m 9.62891,0 V 13.367188 h 3.90625 l 4.02343,12.714843 3.88672,-12.714843 h 3.82813 v 15.917968 h -2.42188 V 15.925781 l -4.10156,13.359375 h -2.40234 l -4.27735,-13.554687 v 13.554687 z" />
</svg:g>
</svg:g>
<svg:g
style="font-size:167px;font-family:sans-serif;text-anchor:middle;fill:#00979c;stroke:#ffffff;stroke-width:20;stroke-opacity:1"
transform="matrix(0.26458333,0,0,0.26458333,-86.027691,89.995434)"
id="g8-1"
font-size="167">
<svg:g
id="text10-7"
style="font-size:197.21893311px;stroke:#ffffff;stroke-width:23.61903381;stroke-opacity:1"
transform="scale(1.5645974,0.63914206)">
<svg:path
id="path3078"
style="font-size:197.21893311px;stroke:#ffffff;stroke-width:23.61903381;stroke-opacity:1"
d="m 321.41756,266.30877 v -17.43 h 53.25297 v 17.43 z" />
</svg:g>
<svg:g
style="stroke:#ffffff;stroke-opacity:1"
id="text12-4" />
</svg:g>
</svg:g>
</svg:svg>

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg8"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="arrow_right.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="581.66557"
inkscape:cy="622.10349"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1440"
inkscape:window-height="810"
inkscape:window-x="1554"
inkscape:window-y="196"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="レイヤー 1"
inkscape:groupmode="layer"
id="layer1">
<g
style="opacity:1;fill:#8b8b8b;fill-opacity:1"
id="g842"
transform="matrix(0.26458333,0,0,0.26458333,22.461236,73.823972)">
<g
id="g830"
style="fill:#8b8b8b;fill-opacity:1">
<path
id="path828"
style="fill:#8b8b8b;fill-opacity:1"
d="M 499.436,225.905 295.858,24.536 C 279.235,8.098 252.43,8.231 235.992,24.864 219.554,41.477 219.698,68.282 236.321,84.72 L 366.677,213.678 H 42.329 C 18.956,213.679 0,232.624 0,255.997 0,279.38 18.956,298.325 42.329,298.325 H 366.676 L 236.321,427.273 c -16.623,16.438 -16.767,43.254 -0.329,59.867 16.438,16.622 43.243,16.766 59.866,0.328 L 499.436,286.1 C 507.48,278.137 512,267.308 512,255.998 c 0,-11.313 -4.521,-22.132 -12.564,-30.093 z"
class="st0"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
<style
id="style826"
type="text/css">
.st0{fill:#4B4B4B;}
</style>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

@ -0,0 +1,695 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg8"
version="1.1"
viewBox="0 0 191.10721 454.36032"
height="454.36032mm"
width="191.10721mm">
<defs
id="defs2" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style="display:inline"
transform="translate(5.0000008,4.9999992)"
id="layer2">
<path
id="path4982"
style="fill:none;stroke:#000000;stroke-width:0.0264583px"
d="M -4.9867716,-4.9999882 V 449.36032 M 0.30489485,-4.9999882 V 449.36032 M 5.5965614,-4.9999882 V 449.36032 M 10.888228,-4.9999882 V 449.36032 M 16.179894,-4.9999882 V 449.36032 M 21.471561,-4.9999882 V 449.36032 M 26.763227,-4.9999882 V 449.36032 M 32.054894,-4.9999882 V 449.36032 M 37.34656,-4.9999882 V 449.36032 M 42.638227,-4.9999882 V 449.36032 M 47.929893,-4.9999882 V 449.36032 M 53.22156,-4.9999882 V 449.36032 M 58.513227,-4.9999882 V 449.36032 M 63.804893,-4.9999882 V 449.36032 M 69.09656,-4.9999882 V 449.36032 M 74.388226,-4.9999882 V 449.36032 M 79.679893,-4.9999882 V 449.36032 M 84.971559,-4.9999882 V 449.36032 M 90.263226,-4.9999882 V 449.36032 M 95.554888,-4.9999882 V 449.36032 M 100.84656,-4.9999882 V 449.36032 M 106.13823,-4.9999882 V 449.36032 M 111.42989,-4.9999882 V 449.36032 M 116.72156,-4.9999882 V 449.36032 M 122.01323,-4.9999882 V 449.36032 M 127.30489,-4.9999882 V 449.36032 M 132.59656,-4.9999882 V 449.36032 M 137.88823,-4.9999882 V 449.36032 M 143.17989,-4.9999882 V 449.36032 M 148.47156,-4.9999882 V 449.36032 M 153.76323,-4.9999882 V 449.36032 M 159.05489,-4.9999882 V 449.36032 M 164.34656,-4.9999882 V 449.36032 M 169.63823,-4.9999882 V 449.36032 M 174.92989,-4.9999882 V 449.36032 M 180.22156,-4.9999882 V 449.36032 M 185.51323,-4.9999882 V 449.36032 M -4.9867716,-4.9999882 H 186.12043 M -4.9867716,0.29167834 H 186.12043 M -4.9867716,5.5833448 H 186.12043 M -4.9867716,10.875012 H 186.12043 M -4.9867716,16.166678 H 186.12043 M -4.9867716,21.458345 H 186.12043 M -4.9867716,26.750011 H 186.12043 M -4.9867716,32.041678 H 186.12043 M -4.9867716,37.333344 H 186.12043 M -4.9867716,42.625011 H 186.12043 M -4.9867716,47.916677 H 186.12043 M -4.9867716,53.208344 H 186.12043 M -4.9867716,58.500011 H 186.12043 M -4.9867716,63.791677 H 186.12043 M -4.9867716,69.083344 H 186.12043 M -4.9867716,74.37501 H 186.12043 M -4.9867716,79.666677 H 186.12043 M -4.9867716,84.958343 H 186.12043 M -4.9867716,90.25001 H 186.12043 M -4.9867716,95.541672 H 186.12043 M -4.9867716,100.83334 H 186.12043 M -4.9867716,106.12501 H 186.12043 M -4.9867716,111.41667 H 186.12043 M -4.9867716,116.70834 H 186.12043 M -4.9867716,122.00001 H 186.12043 M -4.9867716,127.29167 H 186.12043 M -4.9867716,132.58334 H 186.12043 M -4.9867716,137.87501 H 186.12043 M -4.9867716,143.16667 H 186.12043 M -4.9867716,148.45834 H 186.12043 M -4.9867716,153.75001 H 186.12043 M -4.9867716,159.04167 H 186.12043 M -4.9867716,164.33334 H 186.12043 M -4.9867716,169.62501 H 186.12043 M -4.9867716,174.91667 H 186.12043 M -4.9867716,180.20834 H 186.12043 M -4.9867716,185.50001 H 186.12043 M -4.9867716,190.79167 H 186.12043 M -4.9867716,196.08334 H 186.12043 M -4.9867716,201.37501 H 186.12043 M -4.9867716,206.66667 H 186.12043 M -4.9867716,211.95834 H 186.12043 M -4.9867716,217.25001 H 186.12043 M -4.9867716,222.54167 H 186.12043 M -4.9867716,227.83334 H 186.12043 M -4.9867716,233.125 H 186.12043 M -4.9867716,238.41667 H 186.12043 M -4.9867716,243.70834 H 186.12043 M -4.9867716,249 H 186.12043 M -4.9867716,254.29167 H 186.12043 M -4.9867716,259.58334 H 186.12043 M -4.9867716,264.875 H 186.12043 M -4.9867716,270.16667 H 186.12043 M -4.9867716,275.45834 H 186.12043 M -4.9867716,280.75 H 186.12043 M -4.9867716,286.04167 H 186.12043 M -4.9867716,291.33334 H 186.12043 M -4.9867716,296.625 H 186.12043 M -4.9867716,301.91667 H 186.12043 M -4.9867716,307.20834 H 186.12043 M -4.9867716,312.5 H 186.12043 M -4.9867716,317.79167 H 186.12043 M -4.9867716,323.08334 H 186.12043 M -4.9867716,328.375 H 186.12043 M -4.9867716,333.66667 H 186.12043 M -4.9867716,338.95834 H 186.12043 M -4.9867716,344.25 H 186.12043 M -4.9867716,349.54167 H 186.12043 M -4.9867716,354.83334 H 186.12043 M -4.9867716,360.125 H 186.12043 M -4.9867716,365.41667 H 186.12043 M -4.9867716,370.70834 H 186.12043 M -4.9867716,376 H 186.12043 M -4.9867716,381.29167 H 186.12043 M -4.9867716,386.58333 H 186.12043 M -4.9867716,391.875 H 186.12043 M -4.9867716,397.16667 H 186.12043 M -4.9867716,402.45833 H 186.12043 M -4.9867716,407.75 H 186.12043 M -4.9867716,413.04167 H 186.12043 M -4.9867716,418.33333 H 186.12043 M -4.9867716,423.625 H 186.12043 M -4.9867716,428.91667 H 186.12043 M -4.9867716,434.20833 H 186.12043 M -4.9867716,439.5 H 186.12043 M -4.9867716,444.79167 H 186.12043" />
</g>
<g
style="display:inline"
transform="translate(46.95536,63.837051)"
id="layer1">
<text
id="text4506"
y="-56.407742"
x="-41.95536"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-56.407742"
x="-41.95536"
id="tspan4504"><tspan
id="tspan4776"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan4780"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
id="tspan4508"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-51.557049"
x="-41.95536"><tspan
id="tspan4778"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan4782"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
id="tspan4510"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-46.706352"
x="-41.95536"><tspan
id="tspan4786"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan4784"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">AutoConnect.h</tspan>&gt;</tspan><tspan
id="tspan4512"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-41.855659"
x="-41.95536" /><tspan
id="tspan4514"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-37.004963"
x="-41.95536"><tspan
id="tspan4788"
style="fill:#ff6600">ESP8266WebServer</tspan> server;</tspan><tspan
id="tspan4516"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-32.15427"
x="-41.95536"><tspan
id="tspan4790"
style="fill:#ff6600">AutoConnect</tspan> portal(server);</tspan><tspan
id="tspan4518"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-27.303574"
x="-41.95536" /><tspan
id="tspan4520"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-22.452879"
x="-41.95536"><tspan
id="tspan4792"
style="fill:#3366cc">void</tspan> handleRoot() {</tspan><tspan
id="tspan4522"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-17.602184"
x="-41.95536"> <tspan
id="tspan4794"
style="fill:#3366cc">String</tspan> page = PSTR(</tspan><tspan
id="tspan4524"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="-12.751491"
x="-41.95536">&quot;&lt;html&gt;&quot;</tspan><tspan
id="tspan4526"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="-7.9007959"
x="-41.95536">&quot;&lt;/head&gt;&quot;</tspan><tspan
id="tspan4528"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="-3.0501018"
x="-41.95536"> &quot;&lt;meta name=\&quot;viewport\&quot; content=\&quot;width=device-width, initial-scale=1\&quot;&gt;&quot;</tspan><tspan
id="tspan4530"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="1.8005929"
x="-41.95536"> &quot;&lt;style type=\&quot;text/css\&quot;&gt;&quot;</tspan><tspan
id="tspan4532"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="6.6512876"
x="-41.95536"> &quot;body {&quot;</tspan><tspan
id="tspan4534"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="11.501982"
x="-41.95536"> &quot;-webkit-appearance:none;&quot;</tspan><tspan
id="tspan4536"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="16.352676"
x="-41.95536"> &quot;-moz-appearance:none;&quot;</tspan><tspan
id="tspan4538"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="21.203371"
x="-41.95536"> &quot;font-family:'Arial',sans-serif;&quot;</tspan><tspan
id="tspan4540"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="26.054066"
x="-41.95536"> &quot;text-align:center;&quot;</tspan><tspan
id="tspan4542"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="30.90476"
x="-41.95536"> &quot;}&quot;</tspan><tspan
id="tspan4544"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="35.755455"
x="-41.95536"> &quot;.menu {&quot;</tspan><tspan
id="tspan4546"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="40.606148"
x="-41.95536"> &quot;text-align:right;&quot;</tspan><tspan
id="tspan4548"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="45.456844"
x="-41.95536"> &quot;}&quot;</tspan><tspan
id="tspan4550"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="50.307537"
x="-41.95536"> &quot;.button {&quot;</tspan><tspan
id="tspan4552"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="55.158234"
x="-41.95536"> &quot;display:inline-block;&quot;</tspan><tspan
id="tspan4554"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="60.008926"
x="-41.95536"> &quot;border-radius:7px;&quot;</tspan><tspan
id="tspan4556"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="64.859619"
x="-41.95536"> &quot;background:#73ad21;&quot;</tspan><tspan
id="tspan4558"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="69.71032"
x="-41.95536"> &quot;margin:0 10px 0 10px;&quot;</tspan><tspan
id="tspan4560"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="74.561012"
x="-41.95536"> &quot;padding:10px 20px 10px 20px;&quot;</tspan><tspan
id="tspan4562"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="79.411705"
x="-41.95536"> &quot;text-decoration:none;&quot;</tspan><tspan
id="tspan4564"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="84.262398"
x="-41.95536"> &quot;color:#000000;&quot;</tspan><tspan
id="tspan4566"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="89.113098"
x="-41.95536"> &quot;}&quot;</tspan><tspan
id="tspan4568"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="93.963791"
x="-41.95536"> &quot;&lt;/style&gt;&quot;</tspan><tspan
id="tspan4570"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="98.814484"
x="-41.95536">&quot;&lt;/head&gt;&quot;</tspan><tspan
id="tspan4572"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="103.66518"
x="-41.95536">&quot;&lt;body&gt;&quot;</tspan><tspan
id="tspan4574"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="108.51587"
x="-41.95536"> &quot;&lt;p class=\&quot;menu\&quot;&gt;&quot; <tspan
id="tspan4798"
style="fill:#000000">AUTOCONNECT_LINK(BAR_32)</tspan> &quot;&lt;/p&gt;&quot;</tspan><tspan
id="tspan4576"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="113.36657"
x="-41.95536"> &quot;BUILT-IN LED&lt;br&gt;&quot;</tspan><tspan
id="tspan4578"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="118.21726"
x="-41.95536"><tspan
id="tspan4796"
style="fill:#003399"> &quot;GPIO(&quot;</tspan>);</tspan><tspan
id="tspan4580"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="123.06796"
x="-41.95536"> page += <tspan
id="tspan4800"
style="fill:#3366cc">String</tspan>(BUILTIN_LED);</tspan><tspan
id="tspan4582"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="127.91865"
x="-41.95536"> page += <tspan
id="tspan4802"
style="fill:#3366cc">String</tspan>(F(<tspan
id="tspan4804"
style="fill:#003399">&quot;) : &lt;span style=\&quot;font-weight:bold;color:&quot;</tspan>));</tspan><tspan
id="tspan4584"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="132.76935"
x="-41.95536"> page += <tspan
id="tspan4806"
style="fill:#ff6600">digitalRead</tspan>(BUILTIN_LED) ? <tspan
id="tspan4808"
style="fill:#3366cc">String</tspan>(<tspan
id="tspan4812"
style="fill:#003399">&quot;Tomato\&quot;&gt;HIGH&quot;</tspan>) : <tspan
id="tspan4814"
style="fill:#3366cc">String</tspan>(<tspan
id="tspan4816"
style="fill:#003399">&quot;SlateBlue\&quot;&gt;LOW&quot;</tspan>);</tspan><tspan
id="tspan4586"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="137.62004"
x="-41.95536"> page += <tspan
id="tspan4818"
style="fill:#ff6600">String</tspan>(F(<tspan
id="tspan4820"
style="fill:#003399">&quot;&lt;/span&gt;&quot;</tspan>));</tspan><tspan
id="tspan4588"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="142.47073"
x="-41.95536"> page += <tspan
id="tspan4822"
style="fill:#ff6600">String</tspan>(F(<tspan
id="tspan4826"
style="fill:#003399">&quot;&lt;p&gt;&lt;a class=\&quot;button\&quot; href=\&quot;/io?v=low\&quot;&gt;low&lt;/a&gt;</tspan></tspan><tspan
id="tspan4968"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="147.32143"
x="-41.95536"><tspan
id="tspan4970"
style="fill:#003399"> &lt;a class=\&quot;button\&quot; href=\&quot;/io?v=high\&quot;&gt;high&lt;/a&gt;&lt;/p&gt;&quot;</tspan>));</tspan><tspan
id="tspan4590"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="152.17212"
x="-41.95536"> page += <tspan
id="tspan4824"
style="fill:#ff6600">String</tspan>(F(<tspan
id="tspan4828"
style="fill:#003399">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</tspan>));</tspan><tspan
id="tspan4592"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="157.02281"
x="-41.95536"> server().<tspan
id="tspan4832"
style="fill:#ff6600">send</tspan>(200, <tspan
id="tspan4834"
style="fill:#003399">&quot;text/html&quot;</tspan>, page);</tspan><tspan
id="tspan4594"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="161.87352"
x="-41.95536">}</tspan><tspan
id="tspan4596"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="166.72421"
x="-41.95536" /><tspan
id="tspan4598"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="171.57491"
x="-41.95536"><tspan
id="tspan4836"
style="fill:#3366cc">void</tspan> handleGPIO() {</tspan><tspan
id="tspan4600"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="176.4256"
x="-41.95536"> <tspan
id="tspan4838"
style="fill:#808080">if</tspan> (server.<tspan
id="tspan4842"
style="fill:#ff6600">arg</tspan>(<tspan
id="tspan4844"
style="fill:#003399">&quot;v&quot;</tspan>) == <tspan
id="tspan4846"
style="fill:#003399">&quot;low&quot;</tspan>)</tspan><tspan
id="tspan4602"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="181.27629"
x="-41.95536"> <tspan
id="tspan4850"
style="fill:#ff6600">digitalWrite</tspan>(BUILTIN_LED, <tspan
id="tspan4852"
style="fill:#ff6600">LOW</tspan>);</tspan><tspan
id="tspan4604"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="186.12698"
x="-41.95536"> <tspan
id="tspan4860"
style="fill:#808080">else</tspan> <tspan
id="tspan4862"
style="fill:#808080">if</tspan> (server.<tspan
id="tspan4858"
style="fill:#ff6600">arg</tspan>(<tspan
id="tspan4856"
style="fill:#003399">&quot;v&quot;</tspan>) == <tspan
id="tspan4854"
style="fill:#003399">&quot;high&quot;</tspan>)</tspan><tspan
id="tspan4606"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="190.97768"
x="-41.95536"> <tspan
id="tspan4864"
style="fill:#ff6600">digitalWrite</tspan>(BUILTIN_LED, <tspan
id="tspan4866"
style="fill:#ff6600">HIGH</tspan>);</tspan><tspan
id="tspan4608"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="195.82837"
x="-41.95536"> sendRedirect(&quot;/&quot;);</tspan><tspan
id="tspan4610"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="200.67906"
x="-41.95536">}</tspan><tspan
id="tspan4612"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="205.52977"
x="-41.95536" /><tspan
id="tspan4614"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="210.38046"
x="-41.95536"><tspan
id="tspan4868"
style="fill:#3366cc">void</tspan> sendRedirect(<tspan
id="tspan4870"
style="fill:#3366cc">String</tspan> uri) {</tspan><tspan
id="tspan4616"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="215.23116"
x="-41.95536"> server.<tspan
id="tspan4872"
style="fill:#ff6600">sendHeader</tspan>(<tspan
id="tspan4874"
style="fill:#003399">&quot;Location&quot;</tspan>, uri, <tspan
id="tspan4876"
style="fill:#3366cc">true</tspan>);</tspan><tspan
id="tspan4618"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="220.08185"
x="-41.95536"> server.<tspan
id="tspan4880"
style="fill:#ff6600">send</tspan>(302, &quot;text/plain&quot;, <tspan
id="tspan4878"
style="fill:#003399">&quot;&quot;</tspan>);</tspan><tspan
id="tspan4620"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="224.93254"
x="-41.95536"> server.<tspan
id="tspan4884"
style="fill:#ff6600">client</tspan>().<tspan
id="tspan4886"
style="fill:#ff6600">stop</tspan>();</tspan><tspan
id="tspan4622"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="229.78323"
x="-41.95536">}</tspan><tspan
id="tspan4624"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="234.63393"
x="-41.95536" /><tspan
id="tspan4626"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="239.48462"
x="-41.95536"><tspan
id="tspan4890"
style="fill:#3366cc">void</tspan> setup() {</tspan><tspan
id="tspan4628"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="244.33533"
x="-41.95536"> <tspan
id="tspan4888"
style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
id="tspan4630"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="249.18602"
x="-41.95536"> <tspan
id="tspan4892"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan4894"
style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
id="tspan4632"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="254.03671"
x="-41.95536"> <tspan
id="tspan4898"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan4896"
style="fill:#ff6600">println</tspan>();</tspan><tspan
id="tspan4634"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="258.88739"
x="-41.95536"> <tspan
id="tspan4900"
style="fill:#ff6600">pinMode</tspan>(BUILTIN_LED, <tspan
id="tspan4902"
style="fill:#ff6600">OUTPUT</tspan>);</tspan><tspan
id="tspan4636"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="263.7381"
x="-41.95536" /><tspan
id="tspan4638"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="268.58881"
x="-41.95536"> <tspan
id="tspan4904"
style="fill:#808080">// Put the home location of the web site.</tspan></tspan><tspan
id="tspan4640"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="273.43948"
x="-41.95536"> <tspan
id="tspan4906"
style="fill:#808080">// But in usually, setting the home uri is not needed cause default location is &quot;/&quot;.</tspan></tspan><tspan
id="tspan4642"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="278.29019"
x="-41.95536"> <tspan
id="tspan4908"
style="fill:#808080">//portal.home(&quot;/&quot;);</tspan></tspan><tspan
id="tspan4644"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="283.14087"
x="-41.95536" /><tspan
id="tspan4646"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="287.99158"
x="-41.95536"> server.<tspan
id="tspan4910"
style="fill:#ff6600">on</tspan>(<tspan
id="tspan4912"
style="fill:#003399">&quot;/&quot;</tspan>, handleRoot);</tspan><tspan
id="tspan4648"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="292.84225"
x="-41.95536"> server.<tspan
id="tspan4916"
style="fill:#ff6600">on</tspan>(<tspan
id="tspan4914"
style="fill:#003399">&quot;/io&quot;</tspan>, handleGPIO);</tspan><tspan
id="tspan4650"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="297.69296"
x="-41.95536" /><tspan
id="tspan4652"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="302.54364"
x="-41.95536"> // Starts user web site included the AutoConnect portal.</tspan><tspan
id="tspan4654"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="307.39435"
x="-41.95536"> <tspan
id="tspan4934"
style="fill:#808080">if</tspan> (portal.<tspan
id="tspan4918"
style="fill:#ff6600">begin</tspan>()) {</tspan><tspan
id="tspan4656"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="312.24506"
x="-41.95536"> <tspan
id="tspan4920"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan4922"
style="fill:#ff6600">println</tspan>(<tspan
id="tspan4924"
style="fill:#003399">&quot;Started, IP:&quot;</tspan> + <tspan
id="tspan4926"
style="fill:#ff6600">WiFi</tspan>.<tspan
id="tspan4928"
style="fill:#ff6600">localIP</tspan>().<tspan
id="tspan4930"
style="fill:#ff6600">toString</tspan>());</tspan><tspan
id="tspan4658"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="317.09573"
x="-41.95536"> }</tspan><tspan
id="tspan4660"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="321.94644"
x="-41.95536"> <tspan
id="tspan4936"
style="fill:#808080">else</tspan> {</tspan><tspan
id="tspan4662"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="326.79712"
x="-41.95536"> <tspan
id="tspan4938"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan4940"
style="fill:#ff6600">println</tspan>(<tspan
id="tspan4942"
style="fill:#003399">&quot;Connection failed.&quot;</tspan>);</tspan><tspan
id="tspan4664"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="331.64783"
x="-41.95536"> <tspan
id="tspan4944"
style="fill:#808080">while</tspan> (<tspan
id="tspan4946"
style="fill:#3366cc">true</tspan>) { <tspan
id="tspan4948"
style="fill:#ff6600">yield</tspan>(); }</tspan><tspan
id="tspan4666"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="336.4985"
x="-41.95536"> }</tspan><tspan
id="tspan4668"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="341.34921"
x="-41.95536">}</tspan><tspan
id="tspan4670"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="346.19989"
x="-41.95536" /><tspan
id="tspan4672"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="351.0506"
x="-41.95536"><tspan
id="tspan4950"
style="fill:#3366cc">void</tspan> loop() {</tspan><tspan
id="tspan4674"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="355.90131"
x="-41.95536"> server.<tspan
id="tspan4952"
style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
id="tspan4676"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="360.75198"
x="-41.95536"> portal.<tspan
id="tspan4954"
style="fill:#ff6600">handleRequest</tspan>(); // Need to handle AutoConnect menu.</tspan><tspan
id="tspan4678"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="365.60269"
x="-41.95536"> <tspan
id="tspan4966"
style="fill:#808080">if</tspan> (<tspan
id="tspan4956"
style="fill:#ff6600">WiFi</tspan>.<tspan
id="tspan4958"
style="fill:#ff6600">status</tspan>() == <tspan
id="tspan4960"
style="fill:#3366cc">WL_IDLE_STATUS</tspan>) {</tspan><tspan
id="tspan4680"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="370.45337"
x="-41.95536"> ESP.<tspan
id="tspan4962"
style="fill:#ff6600">reset</tspan>();</tspan><tspan
id="tspan4682"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="375.30408"
x="-41.95536"> <tspan
id="tspan4964"
style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
id="tspan4684"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="380.15475"
x="-41.95536"> }</tspan><tspan
id="tspan4686"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="385.00546"
x="-41.95536">}</tspan><tspan
id="tspan4688"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="389.85617"
x="-41.95536" /></text>
</g>
<g
style="display:inline"
id="layer3">
<path
d="m 119.94348,375.62042 -8.69884,-5.02228 8.69884,-5.02227 z"
id="path4984-8-8"
style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.2659663, 2.2659663;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
<text
id="text4702"
y="28.892231"
x="94.665428"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="28.892231"
x="94.665428"
id="tspan4700">1. Declare AutoConnect</tspan><tspan
id="tspan4972"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="35.065842"
x="94.665428"> and bind it to ESP8266WebServer</tspan></text>
<text
id="text4702-1"
y="349.37784"
x="115.7594"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="349.37784"
x="115.7594"
id="tspan4700-2">2. Register request handlers</tspan><tspan
id="tspan4974"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="355.55145"
x="115.7594"> to ESP8266WebServer</tspan></text>
<text
id="text4702-1-3"
y="368.79718"
x="122.43944"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="368.79718"
x="122.43944"
id="tspan4700-2-3">3. Start AutoConnect,</tspan><tspan
id="tspan4976"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="374.97079"
x="122.43944"> no need server.begin()</tspan></text>
<text
id="text4702-1-3-9"
y="417.13007"
x="121.19266"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="417.13007"
x="121.19266"
id="tspan4700-2-3-5">4. Perform handleClient</tspan><tspan
id="tspan4978"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="423.30368"
x="121.19266"> for ESP8266WebServer</tspan></text>
<text
id="text4702-1-3-9-5"
y="429.72409"
x="121.46516"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="429.72409"
x="121.46516"
id="tspan4700-2-3-5-1">5. Perform handleRequest</tspan><tspan
id="tspan4980"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="435.89771"
x="121.46516"> for AutoConnect</tspan></text>
<path
d="m 92.895309,35.166107 -8.698836,-5.022276 8.698836,-5.022275 z"
id="path4984"
style="opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596625, 2.26596625;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
<path
d="m 113.91916,355.65173 -8.69884,-5.02227 8.69884,-5.02228 z"
id="path4984-8"
style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
<path
d="m 119.14169,423.39187 -8.69884,-5.02227 8.69884,-5.02228 z"
id="path4984-8-8-1"
style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
<path
d="m 119.14169,435.9823 -8.69884,-5.02228 8.69884,-5.02227 z"
id="path4984-8-8-6"
style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

@ -0,0 +1,697 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg8"
version="1.1"
viewBox="0 0 191.10721 454.36032"
height="454.36032mm"
width="191.10721mm">
<defs
id="defs2" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style="display:inline"
transform="translate(5.0000008,4.9999992)"
id="layer2">
<path
id="path4982"
style="fill:none;stroke:#000000;stroke-width:0.0264583px"
d="M -4.9867716,-4.9999882 V 449.36032 M 0.30489485,-4.9999882 V 449.36032 M 5.5965614,-4.9999882 V 449.36032 M 10.888228,-4.9999882 V 449.36032 M 16.179894,-4.9999882 V 449.36032 M 21.471561,-4.9999882 V 449.36032 M 26.763227,-4.9999882 V 449.36032 M 32.054894,-4.9999882 V 449.36032 M 37.34656,-4.9999882 V 449.36032 M 42.638227,-4.9999882 V 449.36032 M 47.929893,-4.9999882 V 449.36032 M 53.22156,-4.9999882 V 449.36032 M 58.513227,-4.9999882 V 449.36032 M 63.804893,-4.9999882 V 449.36032 M 69.09656,-4.9999882 V 449.36032 M 74.388226,-4.9999882 V 449.36032 M 79.679893,-4.9999882 V 449.36032 M 84.971559,-4.9999882 V 449.36032 M 90.263226,-4.9999882 V 449.36032 M 95.554888,-4.9999882 V 449.36032 M 100.84656,-4.9999882 V 449.36032 M 106.13823,-4.9999882 V 449.36032 M 111.42989,-4.9999882 V 449.36032 M 116.72156,-4.9999882 V 449.36032 M 122.01323,-4.9999882 V 449.36032 M 127.30489,-4.9999882 V 449.36032 M 132.59656,-4.9999882 V 449.36032 M 137.88823,-4.9999882 V 449.36032 M 143.17989,-4.9999882 V 449.36032 M 148.47156,-4.9999882 V 449.36032 M 153.76323,-4.9999882 V 449.36032 M 159.05489,-4.9999882 V 449.36032 M 164.34656,-4.9999882 V 449.36032 M 169.63823,-4.9999882 V 449.36032 M 174.92989,-4.9999882 V 449.36032 M 180.22156,-4.9999882 V 449.36032 M 185.51323,-4.9999882 V 449.36032 M -4.9867716,-4.9999882 H 186.12043 M -4.9867716,0.29167834 H 186.12043 M -4.9867716,5.5833448 H 186.12043 M -4.9867716,10.875012 H 186.12043 M -4.9867716,16.166678 H 186.12043 M -4.9867716,21.458345 H 186.12043 M -4.9867716,26.750011 H 186.12043 M -4.9867716,32.041678 H 186.12043 M -4.9867716,37.333344 H 186.12043 M -4.9867716,42.625011 H 186.12043 M -4.9867716,47.916677 H 186.12043 M -4.9867716,53.208344 H 186.12043 M -4.9867716,58.500011 H 186.12043 M -4.9867716,63.791677 H 186.12043 M -4.9867716,69.083344 H 186.12043 M -4.9867716,74.37501 H 186.12043 M -4.9867716,79.666677 H 186.12043 M -4.9867716,84.958343 H 186.12043 M -4.9867716,90.25001 H 186.12043 M -4.9867716,95.541672 H 186.12043 M -4.9867716,100.83334 H 186.12043 M -4.9867716,106.12501 H 186.12043 M -4.9867716,111.41667 H 186.12043 M -4.9867716,116.70834 H 186.12043 M -4.9867716,122.00001 H 186.12043 M -4.9867716,127.29167 H 186.12043 M -4.9867716,132.58334 H 186.12043 M -4.9867716,137.87501 H 186.12043 M -4.9867716,143.16667 H 186.12043 M -4.9867716,148.45834 H 186.12043 M -4.9867716,153.75001 H 186.12043 M -4.9867716,159.04167 H 186.12043 M -4.9867716,164.33334 H 186.12043 M -4.9867716,169.62501 H 186.12043 M -4.9867716,174.91667 H 186.12043 M -4.9867716,180.20834 H 186.12043 M -4.9867716,185.50001 H 186.12043 M -4.9867716,190.79167 H 186.12043 M -4.9867716,196.08334 H 186.12043 M -4.9867716,201.37501 H 186.12043 M -4.9867716,206.66667 H 186.12043 M -4.9867716,211.95834 H 186.12043 M -4.9867716,217.25001 H 186.12043 M -4.9867716,222.54167 H 186.12043 M -4.9867716,227.83334 H 186.12043 M -4.9867716,233.125 H 186.12043 M -4.9867716,238.41667 H 186.12043 M -4.9867716,243.70834 H 186.12043 M -4.9867716,249 H 186.12043 M -4.9867716,254.29167 H 186.12043 M -4.9867716,259.58334 H 186.12043 M -4.9867716,264.875 H 186.12043 M -4.9867716,270.16667 H 186.12043 M -4.9867716,275.45834 H 186.12043 M -4.9867716,280.75 H 186.12043 M -4.9867716,286.04167 H 186.12043 M -4.9867716,291.33334 H 186.12043 M -4.9867716,296.625 H 186.12043 M -4.9867716,301.91667 H 186.12043 M -4.9867716,307.20834 H 186.12043 M -4.9867716,312.5 H 186.12043 M -4.9867716,317.79167 H 186.12043 M -4.9867716,323.08334 H 186.12043 M -4.9867716,328.375 H 186.12043 M -4.9867716,333.66667 H 186.12043 M -4.9867716,338.95834 H 186.12043 M -4.9867716,344.25 H 186.12043 M -4.9867716,349.54167 H 186.12043 M -4.9867716,354.83334 H 186.12043 M -4.9867716,360.125 H 186.12043 M -4.9867716,365.41667 H 186.12043 M -4.9867716,370.70834 H 186.12043 M -4.9867716,376 H 186.12043 M -4.9867716,381.29167 H 186.12043 M -4.9867716,386.58333 H 186.12043 M -4.9867716,391.875 H 186.12043 M -4.9867716,397.16667 H 186.12043 M -4.9867716,402.45833 H 186.12043 M -4.9867716,407.75 H 186.12043 M -4.9867716,413.04167 H 186.12043 M -4.9867716,418.33333 H 186.12043 M -4.9867716,423.625 H 186.12043 M -4.9867716,428.91667 H 186.12043 M -4.9867716,434.20833 H 186.12043 M -4.9867716,439.5 H 186.12043 M -4.9867716,444.79167 H 186.12043" />
</g>
<g
style="display:inline"
transform="translate(46.95536,63.837051)"
id="layer1">
<text
id="text4506"
y="-56.407742"
x="-41.95536"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-56.407742"
x="-41.95536"
id="tspan4504"><tspan
id="tspan4776"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan4780"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
id="tspan4508"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-51.557049"
x="-41.95536"><tspan
id="tspan4778"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan4782"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
id="tspan4510"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-46.706352"
x="-41.95536"><tspan
id="tspan4786"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan4784"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">AutoConnect.h</tspan>&gt;</tspan><tspan
id="tspan4512"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-41.855659"
x="-41.95536" /><tspan
id="tspan4516"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-37.004963"
x="-41.95536"><tspan
id="tspan4790"
style="fill:#ff6600">AutoConnect </tspan>portal;</tspan><tspan
id="tspan4518"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-32.15427"
x="-41.95536" /><tspan
id="tspan4520"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-27.303574"
x="-41.95536"><tspan
id="tspan4792"
style="fill:#3366cc">void</tspan> handleRoot() {</tspan><tspan
id="tspan4522"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="-22.452879"
x="-41.95536"> <tspan
id="tspan4794"
style="fill:#3366cc">String</tspan> page = PSTR(</tspan><tspan
id="tspan4524"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="-17.602184"
x="-41.95536">&quot;&lt;html&gt;&quot;</tspan><tspan
id="tspan4526"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="-12.751491"
x="-41.95536">&quot;&lt;/head&gt;&quot;</tspan><tspan
id="tspan4528"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="-7.9007959"
x="-41.95536"> &quot;&lt;meta name=\&quot;viewport\&quot; content=\&quot;width=device-width, initial-scale=1\&quot;&gt;&quot;</tspan><tspan
id="tspan4530"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="-3.0501018"
x="-41.95536"> &quot;&lt;style type=\&quot;text/css\&quot;&gt;&quot;</tspan><tspan
id="tspan4532"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="1.8005929"
x="-41.95536"> &quot;body {&quot;</tspan><tspan
id="tspan4534"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="6.6512876"
x="-41.95536"> &quot;-webkit-appearance:none;&quot;</tspan><tspan
id="tspan4536"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="11.501982"
x="-41.95536"> &quot;-moz-appearance:none;&quot;</tspan><tspan
id="tspan4538"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="16.352676"
x="-41.95536"> &quot;font-family:'Arial',sans-serif;&quot;</tspan><tspan
id="tspan4540"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="21.203371"
x="-41.95536"> &quot;text-align:center;&quot;</tspan><tspan
id="tspan4542"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="26.054066"
x="-41.95536"> &quot;}&quot;</tspan><tspan
id="tspan4544"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="30.90476"
x="-41.95536"> &quot;.menu {&quot;</tspan><tspan
id="tspan4546"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="35.755455"
x="-41.95536"> &quot;text-align:right;&quot;</tspan><tspan
id="tspan4548"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="40.606148"
x="-41.95536"> &quot;}&quot;</tspan><tspan
id="tspan4550"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="45.456844"
x="-41.95536"> &quot;.button {&quot;</tspan><tspan
id="tspan4552"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="50.307537"
x="-41.95536"> &quot;display:inline-block;&quot;</tspan><tspan
id="tspan4554"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="55.158234"
x="-41.95536"> &quot;border-radius:7px;&quot;</tspan><tspan
id="tspan4556"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="60.008926"
x="-41.95536"> &quot;background:#73ad21;&quot;</tspan><tspan
id="tspan4558"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="64.859619"
x="-41.95536"> &quot;margin:0 10px 0 10px;&quot;</tspan><tspan
id="tspan4560"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="69.71032"
x="-41.95536"> &quot;padding:10px 20px 10px 20px;&quot;</tspan><tspan
id="tspan4562"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="74.561012"
x="-41.95536"> &quot;text-decoration:none;&quot;</tspan><tspan
id="tspan4564"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="79.411705"
x="-41.95536"> &quot;color:#000000;&quot;</tspan><tspan
id="tspan4566"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="84.262398"
x="-41.95536"> &quot;}&quot;</tspan><tspan
id="tspan4568"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="89.113098"
x="-41.95536"> &quot;&lt;/style&gt;&quot;</tspan><tspan
id="tspan4570"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="93.963791"
x="-41.95536">&quot;&lt;/head&gt;&quot;</tspan><tspan
id="tspan4572"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="98.814484"
x="-41.95536">&quot;&lt;body&gt;&quot;</tspan><tspan
id="tspan4574"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="103.66518"
x="-41.95536"> &quot;&lt;p class=\&quot;menu\&quot;&gt;&quot; <tspan
id="tspan4798"
style="fill:#000000">AUTOCONNECT_LINK(BAR_32)</tspan> &quot;&lt;/p&gt;&quot;</tspan><tspan
id="tspan4576"
style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
y="108.51587"
x="-41.95536"> &quot;BUILT-IN LED&lt;br&gt;&quot;</tspan><tspan
id="tspan4578"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="113.36657"
x="-41.95536"><tspan
id="tspan4796"
style="fill:#003399"> &quot;GPIO(&quot;</tspan>);</tspan><tspan
id="tspan4580"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="118.21726"
x="-41.95536"> page += <tspan
id="tspan4800"
style="fill:#3366cc">String</tspan>(BUILTIN_LED);</tspan><tspan
id="tspan4582"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="123.06796"
x="-41.95536"> page += <tspan
id="tspan4802"
style="fill:#3366cc">String</tspan>(F(<tspan
id="tspan4804"
style="fill:#003399">&quot;) : &lt;span style=\&quot;font-weight:bold;color:&quot;</tspan>));</tspan><tspan
id="tspan4584"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="127.91865"
x="-41.95536"> page += <tspan
id="tspan4806"
style="fill:#ff6600">digitalRead</tspan>(BUILTIN_LED) ? <tspan
id="tspan4808"
style="fill:#3366cc">String</tspan>(<tspan
id="tspan4812"
style="fill:#003399">&quot;Tomato\&quot;&gt;HIGH&quot;</tspan>) : <tspan
id="tspan4814"
style="fill:#3366cc">String</tspan>(<tspan
id="tspan4816"
style="fill:#003399">&quot;SlateBlue\&quot;&gt;LOW&quot;</tspan>);</tspan><tspan
id="tspan4586"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="132.76935"
x="-41.95536"> page += <tspan
id="tspan4818"
style="fill:#ff6600">String</tspan>(F(<tspan
id="tspan4820"
style="fill:#003399">&quot;&lt;/span&gt;&quot;</tspan>));</tspan><tspan
id="tspan4588"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="137.62004"
x="-41.95536"> page += <tspan
id="tspan4822"
style="fill:#ff6600">String</tspan>(F(<tspan
id="tspan4826"
style="fill:#003399">&quot;&lt;p&gt;&lt;a class=\&quot;button\&quot; href=\&quot;/io?v=low\&quot;&gt;low&lt;/a&gt;</tspan></tspan><tspan
id="tspan4968"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="142.47073"
x="-41.95536"><tspan
id="tspan4970"
style="fill:#003399"> &lt;a class=\&quot;button\&quot; href=\&quot;/io?v=high\&quot;&gt;high&lt;/a&gt;&lt;/p&gt;&quot;</tspan>));</tspan><tspan
id="tspan4590"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="147.32143"
x="-41.95536"> page += <tspan
id="tspan4824"
style="fill:#ff6600">String</tspan>(F(<tspan
id="tspan4828"
style="fill:#003399">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</tspan>));</tspan><tspan
id="tspan4592"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="152.17212"
x="-41.95536"> portal.<tspan
id="tspan5104"
style="fill:#ff6600">host</tspan>().<tspan
id="tspan4832"
style="fill:#ff6600">send</tspan>(200, <tspan
id="tspan4834"
style="fill:#003399">&quot;text/html&quot;</tspan>, page);</tspan><tspan
id="tspan4594"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="157.02281"
x="-41.95536">}</tspan><tspan
id="tspan4596"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="161.87352"
x="-41.95536" /><tspan
id="tspan4598"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="166.72421"
x="-41.95536"><tspan
id="tspan4836"
style="fill:#3366cc">void</tspan> handleGPIO() {</tspan><tspan
id="tspan5040"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="171.57491"
x="-41.95536"> <tspan
id="tspan5088"
style="fill:#ff6600">ESP8266WebServer</tspan>&amp; server = portal.<tspan
id="tspan5084"
style="fill:#ff6600">host</tspan>();</tspan><tspan
id="tspan4600"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="176.4256"
x="-41.95536"> <tspan
id="tspan4838"
style="fill:#808080">if</tspan> (server.<tspan
id="tspan4842"
style="fill:#ff6600">arg</tspan>(<tspan
id="tspan4844"
style="fill:#003399">&quot;v&quot;</tspan>) == <tspan
id="tspan4846"
style="fill:#003399">&quot;low&quot;</tspan>)</tspan><tspan
id="tspan4602"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="181.27629"
x="-41.95536"> <tspan
id="tspan4850"
style="fill:#ff6600">digitalWrite</tspan>(BUILTIN_LED, <tspan
id="tspan4852"
style="fill:#ff6600">LOW</tspan>);</tspan><tspan
id="tspan4604"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="186.12698"
x="-41.95536"> <tspan
id="tspan4860"
style="fill:#808080">else</tspan> <tspan
id="tspan4862"
style="fill:#808080">if</tspan> (server.<tspan
id="tspan4858"
style="fill:#ff6600">arg</tspan>(<tspan
id="tspan4856"
style="fill:#003399">&quot;v&quot;</tspan>) == <tspan
id="tspan4854"
style="fill:#003399">&quot;high&quot;</tspan>)</tspan><tspan
id="tspan4606"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="190.97768"
x="-41.95536"> <tspan
id="tspan4864"
style="fill:#ff6600">digitalWrite</tspan>(BUILTIN_LED, <tspan
id="tspan4866"
style="fill:#ff6600">HIGH</tspan>);</tspan><tspan
id="tspan4608"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="195.82837"
x="-41.95536"> sendRedirect(&quot;/&quot;);</tspan><tspan
id="tspan4610"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="200.67906"
x="-41.95536">}</tspan><tspan
id="tspan4612"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="205.52977"
x="-41.95536" /><tspan
id="tspan4614"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="210.38046"
x="-41.95536"><tspan
id="tspan4868"
style="fill:#3366cc">void</tspan> sendRedirect(<tspan
id="tspan4870"
style="fill:#3366cc">String</tspan> uri) {</tspan><tspan
id="tspan5042"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="215.23116"
x="-41.95536"> <tspan
id="tspan5090"
style="fill:#ff6600">ESP8266WebServer</tspan>&amp; server = portal.<tspan
id="tspan5086"
style="fill:#ff6600">host</tspan>();</tspan><tspan
id="tspan4616"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="220.08185"
x="-41.95536"> server.<tspan
id="tspan4872"
style="fill:#ff6600">sendHeader</tspan>(<tspan
id="tspan4874"
style="fill:#003399">&quot;Location&quot;</tspan>, uri, <tspan
id="tspan4876"
style="fill:#3366cc">true</tspan>);</tspan><tspan
id="tspan4618"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="224.93254"
x="-41.95536"> server.<tspan
id="tspan4880"
style="fill:#ff6600">send</tspan>(302, &quot;text/plain&quot;, <tspan
id="tspan4878"
style="fill:#003399">&quot;&quot;</tspan>);</tspan><tspan
id="tspan4620"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="229.78323"
x="-41.95536"> server.<tspan
id="tspan4884"
style="fill:#ff6600">client</tspan>().<tspan
id="tspan4886"
style="fill:#ff6600">stop</tspan>();</tspan><tspan
id="tspan4622"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="234.63393"
x="-41.95536">}</tspan><tspan
id="tspan4624"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="239.48462"
x="-41.95536" /><tspan
id="tspan4626"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="244.33533"
x="-41.95536"><tspan
id="tspan4890"
style="fill:#3366cc">void</tspan> setup() {</tspan><tspan
id="tspan4628"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="249.18602"
x="-41.95536"> <tspan
id="tspan4888"
style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
id="tspan4630"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="254.03671"
x="-41.95536"> <tspan
id="tspan4892"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan4894"
style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
id="tspan4632"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="258.88739"
x="-41.95536"> <tspan
id="tspan4898"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan4896"
style="fill:#ff6600">println</tspan>();</tspan><tspan
id="tspan4634"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="263.7381"
x="-41.95536"> <tspan
id="tspan4900"
style="fill:#ff6600">pinMode</tspan>(BUILTIN_LED, <tspan
id="tspan4902"
style="fill:#ff6600">OUTPUT</tspan>);</tspan><tspan
id="tspan4636"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="268.58881"
x="-41.95536" /><tspan
id="tspan4638"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="273.43948"
x="-41.95536"> <tspan
id="tspan4904"
style="fill:#808080">// Put the home location of the web site.</tspan></tspan><tspan
id="tspan4640"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="278.29019"
x="-41.95536"> <tspan
id="tspan4906"
style="fill:#808080">// But in usually, setting the home uri is not needed cause default location is &quot;/&quot;.</tspan></tspan><tspan
id="tspan4642"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="283.14087"
x="-41.95536"> <tspan
id="tspan4908"
style="fill:#808080">//portal.home(&quot;/&quot;);</tspan></tspan><tspan
id="tspan4644"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="287.99158"
x="-41.95536" /><tspan
id="tspan4652"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="292.84225"
x="-41.95536"> // Starts user web site included the AutoConnect portal.</tspan><tspan
id="tspan4654"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="297.69296"
x="-41.95536"> <tspan
id="tspan4934"
style="fill:#808080">if</tspan> (portal.<tspan
id="tspan4918"
style="fill:#ff6600">begin</tspan>()) {</tspan><tspan
id="tspan4656"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="302.54364"
x="-41.95536"> <tspan
id="tspan5092"
style="fill:#ff6600">ESP8266WebServer</tspan>&amp; server = portal.<tspan
id="tspan5094"
style="fill:#ff6600">host</tspan>();</tspan><tspan
id="tspan5044"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="307.39435"
x="-41.95536"> server.<tspan
id="tspan5096"
style="fill:#ff6600">on</tspan>(<tspan
id="tspan5100"
style="fill:#003399">&quot;/&quot;</tspan>, handleRoot);</tspan><tspan
id="tspan5052"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="312.24506"
x="-41.95536"> server.<tspan
id="tspan5098"
style="fill:#ff6600">on</tspan>(<tspan
id="tspan5102"
style="fill:#003399">&quot;/io&quot;</tspan>, handleGPIO);</tspan><tspan
id="tspan5060"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="317.09573"
x="-41.95536"> <tspan
id="tspan4920"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan4922"
style="fill:#ff6600">println</tspan>(<tspan
id="tspan4924"
style="fill:#003399">&quot;Started, IP:&quot;</tspan> + <tspan
id="tspan4926"
style="fill:#ff6600">WiFi</tspan>.<tspan
id="tspan4928"
style="fill:#ff6600">localIP</tspan>().<tspan
id="tspan4930"
style="fill:#ff6600">toString</tspan>());</tspan><tspan
id="tspan4658"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="321.94644"
x="-41.95536"> }</tspan><tspan
id="tspan4660"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="326.79712"
x="-41.95536"> <tspan
id="tspan4936"
style="fill:#808080">else</tspan> {</tspan><tspan
id="tspan4662"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="331.64783"
x="-41.95536"> <tspan
id="tspan4938"
style="fill:#ff6600">Serial</tspan>.<tspan
id="tspan4940"
style="fill:#ff6600">println</tspan>(<tspan
id="tspan4942"
style="fill:#003399">&quot;Connection failed.&quot;</tspan>);</tspan><tspan
id="tspan4664"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="336.4985"
x="-41.95536"> <tspan
id="tspan4944"
style="fill:#808080">while</tspan> (<tspan
id="tspan4946"
style="fill:#3366cc">true</tspan>) { <tspan
id="tspan4948"
style="fill:#ff6600">yield</tspan>(); }</tspan><tspan
id="tspan4666"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="341.34921"
x="-41.95536"> }</tspan><tspan
id="tspan4668"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="346.19989"
x="-41.95536">}</tspan><tspan
id="tspan4670"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="351.0506"
x="-41.95536" /><tspan
id="tspan4672"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="355.90131"
x="-41.95536"><tspan
id="tspan4950"
style="fill:#3366cc">void</tspan> loop() {</tspan><tspan
id="tspan4676"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="360.75198"
x="-41.95536"> portal.<tspan
id="tspan4954"
style="fill:#ff6600">handleClient</tspan>(); // Need handleClient only.</tspan><tspan
id="tspan4678"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="365.60269"
x="-41.95536"> <tspan
id="tspan4966"
style="fill:#808080">if</tspan> (<tspan
id="tspan4956"
style="fill:#ff6600">WiFi</tspan>.<tspan
id="tspan4958"
style="fill:#ff6600">status</tspan>() == <tspan
id="tspan4960"
style="fill:#3366cc">WL_IDLE_STATUS</tspan>) {</tspan><tspan
id="tspan4680"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="370.45337"
x="-41.95536"> ESP.<tspan
id="tspan4962"
style="fill:#ff6600">reset</tspan>();</tspan><tspan
id="tspan4682"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="375.30408"
x="-41.95536"> <tspan
id="tspan4964"
style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
id="tspan4684"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="380.15475"
x="-41.95536"> }</tspan><tspan
id="tspan4686"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="385.00546"
x="-41.95536">}</tspan><tspan
id="tspan4688"
style="font-size:3.17499995px;stroke-width:0.26458332"
y="389.85617"
x="-41.95536" /></text>
</g>
<g
style="display:inline"
id="layer3">
<path
d="m 119.94348,365.5661 -8.69884,-5.02228 8.69884,-5.02227 z"
id="path4984-8-8"
style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.2659663, 2.2659663;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
<text
id="text4702"
y="27.289909"
x="115.3639"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
id="tspan4972"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="27.289909"
x="115.3639">1. Declare AutoConnect only</tspan></text>
<text
id="text4702-1"
y="373.71988"
x="115.7594"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="373.71988"
x="115.7594"
id="tspan4700-2">4. Register request handlers</tspan><tspan
id="tspan4974"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="379.89349"
x="115.7594"> to ESP8266WebServer</tspan></text>
<text
id="text4702-1-3"
y="358.74286"
x="122.43944"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="358.74286"
x="122.43944"
id="tspan4700-2-3">3. Start AutoConnect,</tspan><tspan
id="tspan4976"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="364.91647"
x="122.43944"> no need server.begin()</tspan></text>
<text
id="text4702-1-3-9-5"
y="422.84482"
x="127.32045"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="422.84482"
x="127.32045"
id="tspan4700-2-3-5-1">4. Perform handleClient</tspan><tspan
id="tspan4980"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="429.01843"
x="127.32045"> for AutoConnect</tspan></text>
<path
d="m 113.53278,30.932772 -8.69884,-5.022277 8.69884,-5.022275 z"
id="path4984"
style="opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596625, 2.26596625;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
<path
d="m 113.91916,379.99377 -8.69884,-5.02227 8.69884,-5.02228 z"
id="path4984-8"
style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
<path
d="m 124.96248,429.10303 -8.69884,-5.02228 8.69884,-5.02228 z"
id="path4984-8-8-6"
style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
<text
id="text4702-2"
y="235.34866"
x="108.45959"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
id="tspan4972-5"
style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
y="235.34866"
x="108.45959">2. Refer to ESP8266WebServer</tspan></text>
<path
d="m 105.91244,238.99179 -8.698832,-5.02228 8.698842,-5.02227 z"
id="path4984-6"
style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

@ -0,0 +1,504 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg8"
version="1.1"
viewBox="0 0 150.228 144.32257"
height="144.32257mm"
width="150.228mm">
<defs
id="defs2" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-28.675957,-9.6488822)"
style="display:inline"
id="layer2">
<path
id="path897"
style="fill:none;stroke:#000000;stroke-width:0.0264583px"
d="M 0,0 V 296.99999 M 5.2916665,0 V 296.99999 M 10.583333,0 V 296.99999 M 15.875,0 V 296.99999 M 21.166666,0 V 296.99999 M 26.458333,0 V 296.99999 M 31.749999,0 V 296.99999 M 37.041666,0 V 296.99999 M 42.333332,0 V 296.99999 M 47.624999,0 V 296.99999 M 52.916665,0 V 296.99999 M 58.208332,0 V 296.99999 M 63.499999,0 V 296.99999 M 68.791665,0 V 296.99999 M 74.083332,0 V 296.99999 M 79.374998,0 V 296.99999 M 84.666665,0 V 296.99999 M 89.958331,0 V 296.99999 M 95.249998,0 V 296.99999 M 100.54166,0 V 296.99999 M 105.83333,0 V 296.99999 M 111.125,0 V 296.99999 M 116.41666,0 V 296.99999 M 121.70833,0 V 296.99999 M 127,0 V 296.99999 M 132.29166,0 V 296.99999 M 137.58333,0 V 296.99999 M 142.875,0 V 296.99999 M 148.16666,0 V 296.99999 M 153.45833,0 V 296.99999 M 158.75,0 V 296.99999 M 164.04166,0 V 296.99999 M 169.33333,0 V 296.99999 M 174.625,0 V 296.99999 M 179.91666,0 V 296.99999 M 185.20833,0 V 296.99999 M 190.5,0 V 296.99999 M 195.79166,0 V 296.99999 M 201.08333,0 V 296.99999 M 206.375,0 V 296.99999 M 0,0 H 210 M 0,5.2916665 H 210 M 0,10.583333 H 210 M 0,15.875 H 210 M 0,21.166666 H 210 M 0,26.458333 H 210 M 0,31.749999 H 210 M 0,37.041666 H 210 M 0,42.333332 H 210 M 0,47.624999 H 210 M 0,52.916665 H 210 M 0,58.208332 H 210 M 0,63.499999 H 210 M 0,68.791665 H 210 M 0,74.083332 H 210 M 0,79.374998 H 210 M 0,84.666665 H 210 M 0,89.958331 H 210 M 0,95.249998 H 210 M 0,100.54166 H 210 M 0,105.83333 H 210 M 0,111.125 H 210 M 0,116.41666 H 210 M 0,121.70833 H 210 M 0,127 H 210 M 0,132.29166 H 210 M 0,137.58333 H 210 M 0,142.875 H 210 M 0,148.16666 H 210 M 0,153.45833 H 210 M 0,158.75 H 210 M 0,164.04166 H 210 M 0,169.33333 H 210 M 0,174.625 H 210 M 0,179.91666 H 210 M 0,185.20833 H 210 M 0,190.5 H 210 M 0,195.79166 H 210 M 0,201.08333 H 210 M 0,206.375 H 210 M 0,211.66666 H 210 M 0,216.95833 H 210 M 0,222.24999 H 210 M 0,227.54166 H 210 M 0,232.83333 H 210 M 0,238.12499 H 210 M 0,243.41666 H 210 M 0,248.70833 H 210 M 0,253.99999 H 210 M 0,259.29166 H 210 M 0,264.58333 H 210 M 0,269.87499 H 210 M 0,275.16666 H 210 M 0,280.45833 H 210 M 0,285.74999 H 210 M 0,291.04166 H 210 M 0,296.33333 h 210" />
</g>
<g
transform="translate(-28.675957,-9.6488822)"
style="display:inline"
id="layer1">
<text
id="text817"
y="17.329166"
x="33.675957"
style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:3.52777767px;stroke-width:0.26458332"
y="17.329166"
x="33.675957"
id="tspan815"><tspan
id="tspan899"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan909"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
id="tspan819"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="21.738888"
x="33.675957"><tspan
id="tspan905"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan915"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
id="tspan821"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="26.148611"
x="33.675957"><tspan
id="tspan907"
style="fill:#669900">#include</tspan> &lt;<tspan
id="tspan921"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">AutoConnect.h</tspan>&gt;</tspan><tspan
id="tspan823"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="30.558332"
x="33.675957" /><tspan
id="tspan825"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="34.968056"
x="33.675957"><tspan
id="tspan923"
style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
id="tspan827"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="39.377777"
x="33.675957"><tspan
id="tspan927"
style="fill:#ff6600">AutoConnect</tspan> Portal(Server);</tspan><tspan
id="tspan829"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="43.787498"
x="33.675957" /><tspan
id="tspan831"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="48.19722"
x="33.675957"><tspan
id="tspan929"
style="fill:#3366cc">void</tspan> rootPage() {</tspan><tspan
id="tspan833"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="52.606941"
x="33.675957"> <tspan
id="tspan981"
style="fill:#3366cc">char</tspan> content[] = &quot;Hello, world&quot;;</tspan><tspan
id="tspan835"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="57.016666"
x="33.675957"> Server.<tspan
id="tspan955"
style="fill:#ff6600">send</tspan>(200, &quot;text/plain&quot;, content);</tspan><tspan
id="tspan837"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="61.426388"
x="33.675957">}</tspan><tspan
id="tspan839"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="65.836113"
x="33.675957" /><tspan
id="tspan841"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="70.245834"
x="33.675957"><tspan
id="tspan937"
style="fill:#3366cc">void</tspan> <tspan
id="tspan935"
style="fill:#808080">setup</tspan>() {</tspan><tspan
id="tspan843"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="74.655556"
x="33.675957"> <tspan
id="tspan949"
style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
id="tspan849"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="79.065277"
x="33.675957" /><tspan
id="tspan851"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="83.474998"
x="33.675957"> Server.<tspan
id="tspan947"
style="fill:#ff6600">on</tspan>(<tspan
id="tspan963"
style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
id="tspan853"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="87.88472"
x="33.675957"> </tspan><tspan
id="tspan4825"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="92.294441"
x="33.675957"><tspan
id="tspan4827"
style="fill:#3366cc"> boolean</tspan> r = Portal.<tspan
id="tspan961"
style="fill:#ff6600">begin</tspan>();</tspan><tspan
id="tspan971"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="96.704163"
x="33.675957"> </tspan><tspan
id="tspan4830"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="101.11388"
x="33.675957"><tspan
id="tspan4832"
style="fill:#404040"> if</tspan> (!r) {</tspan><tspan
id="tspan855"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="105.52361"
x="33.675957"> <tspan
id="tspan945"
style="fill:#ff6600">delay</tspan>(1000);<tspan
id="tspan969"
style="fill:#003399"></tspan></tspan><tspan
id="tspan5494"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="109.93333"
x="33.675957"><tspan
id="tspan5496"
style="fill:#003399"> </tspan>ESP.reset();</tspan><tspan
id="tspan857"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="114.34306"
x="33.675957"> }</tspan><tspan
id="tspan859"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="118.75278"
x="33.675957">}</tspan><tspan
id="tspan861"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="123.1625"
x="33.675957" /><tspan
id="tspan863"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="127.57222"
x="33.675957"><tspan
id="tspan939"
style="fill:#3366cc">void</tspan> loop() {</tspan><tspan
id="tspan865"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="131.98193"
x="33.675957"> Server.<tspan
id="tspan941"
style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
id="tspan867"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="136.39166"
x="33.675957">}</tspan><tspan
id="tspan869"
style="font-size:3.52777767px;stroke-width:0.26458332"
y="140.80139"
x="33.675957" /></text>
</g>
<g
transform="translate(-28.675957,-9.6488822)"
id="layer3">
<g
transform="translate(7.0295931,1.4967093)"
id="g5584">
<g
id="g5577">
<rect
y="120.4157"
x="96.916679"
height="26.788187"
width="69.782677"
id="rect987-6-7-1-5-4"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="120.4157"
x="96.90123"
height="26.884048"
width="2.7517393"
id="rect985-1-0-3-6-7"
style="opacity:1;fill:#c8aabd;fill-opacity:1;stroke:#c8aabd;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="102.72446"
y="126.50675"
id="text5481-6"><tspan
id="tspan5479-9"
x="102.72446"
y="126.50675"
style="stroke-width:0.26458332">loop()</tspan></text>
</g>
<g
transform="translate(7.0295931,1.4967093)"
id="g5536">
<g
id="g5529">
<rect
y="63.351486"
x="96.967033"
height="52.881226"
width="69.681969"
id="rect987-6-7-1-5"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="63.335812"
x="96.949257"
height="52.912579"
width="2.6556907"
id="rect985-1-0-3-6"
style="opacity:1;fill:#c8aabd;fill-opacity:1;stroke:#c8aabd;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="102.72446"
y="69.392189"
id="text5481"><tspan
id="tspan5479"
x="102.72446"
y="69.392189"
style="stroke-width:0.26458332">setup()</tspan></text>
</g>
<g
transform="translate(-30.012096,13.667544)"
id="g5450">
<g
id="g5117"
transform="translate(33.994579,-19.143525)">
<rect
y="82.389336"
x="104.77654"
height="10.649512"
width="61.649513"
id="rect987-6-9"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="82.389336"
x="104.77654"
height="10.655192"
width="2.6608834"
id="rect985-1-9"
style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="143.86685"
y="70.421936"
id="text995-0-8"><tspan
id="tspan993-7-0"
x="143.86685"
y="70.421936"
style="font-size:4.93888903px;stroke-width:0.26458332">Set URL handler</tspan></text>
</g>
<g
transform="translate(-30.012096,12.080043)"
id="g5443">
<g
transform="translate(33.994579,-8.488335)"
id="g5117-1">
<rect
y="82.389336"
x="104.77654"
height="10.649512"
width="61.649513"
id="rect987-6-9-8"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="82.389336"
x="104.77654"
height="10.655192"
width="2.6608834"
id="rect985-1-9-7"
style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="143.70769"
y="80.545097"
id="text995-0-8-6"><tspan
id="tspan993-7-0-9"
x="143.70769"
y="80.545097"
style="font-size:4.93888903px;stroke-width:0.26458332">Begin AutoConnect</tspan></text>
</g>
<g
transform="translate(-30.012096,12.080043)"
id="g5436">
<g
id="g5182"
transform="translate(2.8998751,-3.571875)">
<rect
y="92.892113"
x="135.87125"
height="10.649512"
width="61.649513"
id="rect987-6-9-9"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="92.892113"
x="135.87125"
height="10.655192"
width="2.6608834"
id="rect985-1-9-5"
style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="143.76074"
y="96.497292"
id="text995-0-6"><tspan
id="tspan993-7-8"
x="143.76074"
y="96.497292"
style="font-size:4.93888903px;stroke-width:0.26458332">Check connection</tspan></text>
</g>
<g
transform="translate(7.0295931,2.5550426)"
id="g5525">
<g
id="g5518">
<rect
y="129.02588"
x="101.72944"
height="10.649512"
width="61.649513"
id="rect987-6-9-9-1"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="129.02588"
x="101.72944"
height="10.655192"
width="2.6608834"
id="rect985-1-9-5-8"
style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="106.666"
y="135.73148"
id="text995-0-6-6"><tspan
id="tspan993-7-8-4"
x="106.666"
y="135.73148"
style="font-size:4.93888903px;stroke-width:0.26458332">Do handleClent()</tspan></text>
</g>
<g
transform="translate(-30.012096,1.4967093)"
id="g5472">
<g
id="g5182-0-5-1-3"
transform="translate(2.899875,-78.485552)">
<rect
y="92.892113"
x="135.87125"
height="10.649512"
width="61.649513"
id="rect987-6-9-9-1-3-5-2"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="92.892113"
x="135.87125"
height="10.655192"
width="2.6608834"
id="rect985-1-9-5-8-8-0-9"
style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="143.85994"
y="21.571556"
id="text995"><tspan
id="tspan993"
x="143.85994"
y="21.571556"
style="font-size:4.93888903px;stroke-width:0.26458332">Include directive</tspan></text>
</g>
<g
transform="translate(-30.012096,1.4967093)"
id="g5457">
<g
id="g5182-0-5"
transform="translate(2.899875,-45.969931)">
<rect
y="92.892113"
x="135.87125"
height="10.649512"
width="61.649513"
id="rect987-6-9-9-1-3"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="92.892113"
x="135.87125"
height="10.655192"
width="2.6608834"
id="rect985-1-9-5-8-8"
style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="143.76074"
y="54.099236"
id="text995-0"><tspan
id="tspan993-7"
x="143.76074"
y="54.099236"
style="font-size:4.93888903px;stroke-width:0.26458332">URL handler fucntion</tspan></text>
</g>
<g
transform="translate(-30.012096,1.4967093)"
id="g5465">
<g
id="g5182-0-5-1"
transform="translate(2.899875,-63.495841)">
<rect
y="92.892113"
x="135.87125"
height="10.649512"
width="61.649513"
id="rect987-6-9-9-1-3-5"
style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<rect
y="92.892113"
x="135.87125"
height="10.655192"
width="2.6608834"
id="rect985-1-9-5-8-8-0"
style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:3.79147911px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="143.13184"
y="34.170132"
id="text995-9"><tspan
id="tspan4983"
x="143.13184"
y="34.170132"
style="font-size:3.88055563px;line-height:3.79147911px;stroke-width:0.26458332">Declare ESP8266WebServer</tspan><tspan
id="tspan4987"
x="143.13184"
y="38.164337"
style="font-size:3.88055563px;line-height:3.79147911px;stroke-width:0.26458332"> &amp; AutoConnect</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

@ -0,0 +1,667 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="61.254677mm"
height="90.411896mm"
viewBox="0 0 61.254677 90.411896"
version="1.1"
id="svg8"
inkscape:export-filename="C:\Users\hiero\Documents\Arduino\libraries\AutoConnect\docs\images\menu_home.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.1 r15371"
sodipodi:docname="menu_login.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="110.46944"
inkscape:cy="162.42716"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1001"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="レイヤー 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-15.436104,-38.574032)">
<image
y="38.574032"
x="15.436104"
id="image18"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu4AAARTCAYAAAA0maZbAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
WXMAAAsTAAALEwEAmpwYAAAgAElEQVR42uzdd1xV9R/H8TdTQAEBFUUBNyIO3Nvc2xxZqWmamtlw
/XJWppm2tNJKc2SpDa20NDU1d+69d04ExYWAgjJ/fyBXLveyccHr+XjweNz7veeec+/3Dt7n3M/3
eyyKlvKJFwAAAIAnmnVeZxd6AQAAAHjCWdIFAAAAAMEdAAAAAMEdAAAAILgDAAAAILgDAAAAILgD
AAAABHcAAAAABHcAAAAABHcAAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEAAAAQ3AEAAACCOwAAAACC
OwAAAACCOwAAAEBwBwAAAEBwBwAAAEBwBwAAAAjuAAAAAAjuAAAAAMEdAAAAAMEdAAAAAMEdAAAA
ILgDAAAAILgDAAAAILgDAAAABHcAAAAABHcAAACA4A4AAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEA
AAAQ3AEAAICnnDVdgKeBjY2NCri6ys3NVW4uLrp7757CwsMUGhqm4GvXFRsbSycBAPCItWvZXLKw
0PJV/zzWx9G2ZXPFxsZq1dr1BPecKL+zs6pUqmDSfinosk6fOcsn8TGzsrJSjar+atqooZo2bKCi
HkVSXDYiIlL7Dx3W3gMHtXz1Gl24GEAHAgDwkHVq31ZDXu8vC0sLOdjb67c/lz6Wx/FCpw5667W+
io6Okb29vf5ctiLH9rlF2aq143Pjm23ga/30Vv++Ju3HTp5Sp+69+DQ+rsBuaaluz3fWwNf6Kb+z
c4bvHxcXp3WbNmvG9/N05NhxOhQAgIegVbMmGjboTXkW9ZAkBV+7pm9mznnk4T0xtLsXLChJuhJ8
VZOmfqPlq9fkyH7PlTXuFhYW6tSujdnbyvuUVZlSJflEPgbVq/jrz1/macyItzMV2iXJ0tJSzRs/
o9/mfaf+vV+WhYUFHQsAQDazsrKSra2N4bp7wYJ667W+eqFTh8cW2iXJwtJCysH/+3NlqUzNalVT
Lb3o0KaVJn89/al7XmNGvK1KFcobrt+4cVMDhg5/Kh575/ZtNfH9d2RpmT37klaWlnp74Ovyr+in
QSPfVUxMDN+y4LMHANlkxeo1yuvgYBScE8O7pId+5N1caE886v+46+0J7g8hJKamXesW+mLaDMXF
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
aXu2TStN/XZWhtd14tRpXbt+w/QLytpaxb09VcTd3dDm61NWs6Z+rrbPd1fILd73AIDcw6Js1drx
OeXJVPTz1SXt5QsAACAASURBVO/z5sjCwkKSdPb8BQ0Z9Z5Onv7P7PK2tjYaPKC/+vXqIUmKjYtT
7wFvadfe/U/085w5dbIa1a8nSerx6uvave+A0e2FChZQMQ8PSdKFgADduBnCOx3ZqrxPWf35yzxJ
UvDVa3IvVFCSFBh0WU2ffS5dv1z9MmeGqvlXliQNHT1Gf/+zNsVl8+XNq5bNGmv8OyNlff9XpJVr
1mnIqPd4MQAAuUaOmlVm+KC3DKF9645d6tzjlRRDuyRFRUVr0lfTtGT5SkmSlaWlxo4a/sQ/T1sb
W8Ply8FXTW6/eu269h08pH0HDxHa8VB0evbB0fbJX0/X1WvXJUlFPYoYwnh2un3njhYvXa6RY8cb
2lo0bSxbWxteDAAAwf1p80y9uqpVvaokKS4uThMnf6nIyMh03fejz6coKipaklS6ZAkVK+qRdsdZ
Wqq4l5cKuLlly+N3cLA37HRkRFRUVLZsPzPbfthc8ueXlWXab1EnJ8d0LZddMvtaJbKxsVFeB4en
9rNmY2Oj9q1aSJLuRERozfqNWrnmwdHyDm1bPbRtr93wr2JjYw072iWLF+dbHACQa+SYGvehb75m
uPzX36t15tz5dN83NCxMy1f/o+aNn5Ek1ape1ewsM1ZWVnrtlV5qWLe2ypUtbRhYd+NmiI6fOqVv
Zs3R/oOHzW6jRZNG6v78c5KkiZO/1OkzZ/VMvbpq06KZ/Cv6ydvLU7fv3NGRYye0c+8+zfp+ntHM
GfZ2dvpo7LuSpLKlSxnax44apnv3onT95k19NHmKJKlhvTrq2La1JGnBoj9MSmkSValcUZ3atZF/
xQoqXbKEbtwM0eGjx/TDzwu0e98B1atVU00bNZAkTf12tkLDwgz37diutTq2bSNJ+m7eT9qyY2fK
O0Zj35VH4cKKjo7Wq4P+Z3Tbpx+8L/dCBXUh4JLGfvSpHPPl0/DBb6pNi2ZyzJdP/QYO1eZtO4zu
Y5cnj17p0U1VKlWUn285FXBzVWxsrE79d0Z//b1aCxb9oci7dzP9Xsrqa2VONf/K6ty+rcr7+qhs
qZKytrZWaGiYNm7Zql9+/0MHDh8xuc8rPbrpmXp177+Of2r1uvUmy/iUKW00pmPQyHcUFhZuslzD
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
r1+azp06Fn6e8tG0Gq973U23ZNLkKfmfk75XOJpdXFycnt27pWf3bvnuMUdl/oIFuefv9+X6P9yW
WbPLj7yXlJSkzfJhGcuWLcuoCkNoavTG1aqV1q3KT6b9aPq0lJWtflbPBQtWTAO5XtOVD3OZ9zXN
mDJv3rw1Wq9jhXMAmjZpkp23367G69arW/dr2bcAAMJ9LbX3brumtF69JMsvWLSaYR5f9PksJD27
d83OO2yfbbbsl8022Th165SPgW9Qv35O+M63s2W/zXPMST/KggULU1xcXLiK6KLFi1d7EaFVKSku
qdFyzSrMyz55ytSVLlOTLwA1sabbWVZhnP648RPyWIUx7Kv9sjB/fuGL09e1bwEAhPta5OAKJzU+
9tQzq72aZ3XefX9U3n1/VK676ZbUqVM7W26+efbcbZccvP++qVunTnr36J7vHXN0rhlycxYvXpzJ
U6ambZvWqVe3btZr2rRwNL4mlixZkkmTp6R92zbZoGWLlBQXr/Z5b9iyZeH2h5Mmr5XvxQfjJxRu
z5k7N5dffe2X3sZX3bcAAGujb/ysMp07dsiWfTcr/Pzgo4/XeN1+m22arfr1Ta/u3ao8tmjR4jw/
9OWc95v/zU/POLNw/ya9exVufz7LS5J06dRxlb/rtxdfkKFPPpyXnnioEOATPpyYpHxoSOfVrF9c
XJz+W/atEO5r55U/J06eUhj/3rF9+8KR8+qU1quXrfr1zVb9+qZzxw5f274FABDua5H112ua664c
VIjD514cmqGvvlbj9c/95S9yx5DB+eNN16VOndrVLvfsCy8VjoY3qjCDyhtvvV24fdhB+1e7freN
umS/vXZP0yZNMnvOnEydVj4G/533Vwzp+c4Rh67yufbfom9aNCs/Afe1N4et9uTR/5SlS5cWpsxs
0rhR4QJX1fn+8cfkjiGDc8eQwem/Rd+vbd8CAAj3tUBRUVH22WO33H3bTYUTSj/97LMMvOSyL7Wd
4e+8l6R8DPsO22xT7XK9e/YozJQy/L33Cvff9qe/FC5ytO+eu2fj3iu/oNHJ3zu+8OXiX8+/WLj/
1jvvyvwFC5IkB31r3/Ts3nWl6zds0CADTj2l8PPgIX9Yq9+fqwavmEf+Jz84sXD+wRe1bdM6Jx57
dJLyv3A89NiTX9u+TZIlFcbbN23c2P8tAADh/nXr3aN7rrzkwir/XXfFZfnnn2/Pq888lqsuvSjt
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
"
preserveAspectRatio="none"
height="90.411896"
width="61.254677" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#e51c20;fill-opacity:0.74117647;stroke:none;stroke-width:0.26458332"
x="38.257114"
y="92.108269"
id="text23"><tspan
sodipodi:role="line"
id="tspan21"
x="38.257114"
y="92.108269"
style="font-size:4.23333311px;fill:#e51c20;fill-opacity:0.74117647;stroke-width:0.26458332">Return to HOME</tspan></text>
<path
sodipodi:type="star"
style="fill:#f00308;fill-opacity:0.74117647;stroke-width:0.26458332"
id="path4500"
sodipodi:sides="3"
sodipodi:cx="36.14397"
sodipodi:cy="90.530502"
sodipodi:r1="2.1800292"
sodipodi:r2="1.0900145"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 37.233985,92.418463 -1.635022,-0.94398 -1.635022,-0.943981 1.635022,-0.94398 1.635022,-0.94398 0,1.88796 z"
inkscape:transform-center-x="0.54500767" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 841 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

@ -7,7 +7,7 @@ An Arduino library for ESP8266 WLAN configuration at run time with web interface
To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with *ESP8266WebServer* class. To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with *ESP8266WebServer* class.
Easily implementing the Web interface constituting the WLAN for ESP8266 WiFi connection. With this library to make a sketch easily which connects from ESP8266 to the access point at runtime by the web interface without hard-coded SSID and password. Easily implementing the Web interface constituting the WLAN for ESP8266 WiFi connection. With this library to make a sketch easily which connects from ESP8266 to the access point at runtime by the web interface without hard-coded SSID and password.
<img style="display:inline-block;width:460px;margin-right:30px;" src="/images/ov.png" /><span style="display:inline-block;width:182px;height:322px;border:solid 1px lightgrey;"><img data-gifffer="/images/ov.gif" data-gifffer-width="180" style="width:180px;" /></span> <img style="display:inline-block;width:460px;margin-right:30px;" src="./images/ov.png" /><span style="display:inline-block;width:182px;height:322px;border:solid 1px lightgrey;"><img data-gifffer="./images/ov.gif" data-gifffer-width="180" style="width:180px;" /></span>
### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> No need pre-coded SSID &amp; password ### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> No need pre-coded SSID &amp; password
@ -65,17 +65,17 @@ Install third-party platform using the *Boards Manager* of Arduino IDE. Package
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**' in the topic '**Communication**', then you can see the *PageBuilder*. The latest version or 1.0.0 later is required. 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**' in the topic '**Communication**', then you can see the *PageBuilder*. The latest version or 1.0.0 later is required.
<img src="/images/lm.png" width="640"/> <img src="./images/lm.png" width="640"/>
### Install the AutoConnect ### Install the AutoConnect
Clone or download from the [AutoConnect GitHub repository](https://github.com/Hieromon/AutoConnect). Clone or download from the [AutoConnect GitHub repository](https://github.com/Hieromon/AutoConnect).
<img src="/images/gitrepo.png" width="640"/> <img src="./images/gitrepo.png" width="640"/>
When you select Download, you can import it to Arduino IDE immediately. After downloaded, the AutoConnect-master.zip file will be saved in your download folder. Then in the Arduino IDE, navigate to *"Sketch > Include Library"*. At the top of the drop down list, select the option to *"Add .ZIP Library..."*. Details for [Arduino official page](https://www.arduino.cc/en/Guide/Libraries#toc4). When you select Download, you can import it to Arduino IDE immediately. After downloaded, the AutoConnect-master.zip file will be saved in your download folder. Then in the Arduino IDE, navigate to *"Sketch > Include Library"*. At the top of the drop down list, select the option to *"Add .ZIP Library..."*. Details for [Arduino official page](https://www.arduino.cc/en/Guide/Libraries#toc4).
<img src="/images/ins_lib.png" /> <img src="./images/ins_lib.png" />
<script> <script>
window.onload = function() { window.onload = function() {

@ -0,0 +1 @@
(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory();else if(typeof define==="function"&&define.amd)define("Gifffer",[],factory);else if(typeof exports==="object")exports["Gifffer"]=factory();else root["Gifffer"]=factory()})(this,function(){var d=document;var playSize=60;var Gifffer=function(options){var images,i=0,gifs=[];images=d.querySelectorAll("[data-gifffer]");for(;i<images.length;++i)process(images[i],gifs,options);return gifs};function formatUnit(v){return v+(v.toString().indexOf("%")>0?"":"px")}function parseStyles(styles){var stylesStr="";for(prop in styles)stylesStr+=prop+":"+styles[prop]+";";return stylesStr}function createContainer(w,h,el,altText,opts){var alt;var con=d.createElement("BUTTON");var cls=el.getAttribute("class");var id=el.getAttribute("id");var playButtonStyles=opts&&opts.playButtonStyles?parseStyles(opts.playButtonStyles):["width:"+playSize+"px","height:"+playSize+"px","border-radius:"+playSize/2+"px","background:rgba(0, 0, 0, 0.3)","position:absolute","top:50%","left:50%","margin:-"+playSize/2+"px"].join(";");var playButtonIconStyles=opts&&opts.playButtonIconStyles?parseStyles(opts.playButtonIconStyles):["width: 0","height: 0","border-top: 14px solid transparent","border-bottom: 14px solid transparent","border-left: 14px solid rgba(0, 0, 0, 0.5)","position: absolute","left: 26px","top: 16px"].join(";");cls?con.setAttribute("class",el.getAttribute("class")):null;id?con.setAttribute("id",el.getAttribute("id")):null;con.setAttribute("style","position:relative;cursor:pointer;background:none;border:none;padding:0;");con.setAttribute("aria-hidden","true");var play=d.createElement("DIV");play.setAttribute("class","gifffer-play-button");play.setAttribute("style",playButtonStyles);var trngl=d.createElement("DIV");trngl.setAttribute("style",playButtonIconStyles);play.appendChild(trngl);if(altText){alt=d.createElement("p");alt.setAttribute("class","gifffer-alt");alt.setAttribute("style","border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px;");alt.innerText=altText+", image"}con.appendChild(play);el.parentNode.replaceChild(con,el);altText?con.parentNode.insertBefore(alt,con.nextSibling):null;return{c:con,p:play}}function calculatePercentageDim(el,w,h,wOrig,hOrig){var parentDimW=el.parentNode.offsetWidth;var parentDimH=el.parentNode.offsetHeight;var ratio=wOrig/hOrig;if(w.toString().indexOf("%")>0){w=parseInt(w.toString().replace("%",""));w=w/100*parentDimW;h=w/ratio}else if(h.toString().indexOf("%")>0){h=parseInt(h.toString().replace("%",""));h=h/100*parentDimW;w=h*ratio}return{w:w,h:h}}function process(el,gifs,options){var url,con,c,w,h,duration,play,gif,playing=false,cc,isC,durationTimeout,dims,altText;url=el.getAttribute("data-gifffer");w=el.getAttribute("data-gifffer-width");h=el.getAttribute("data-gifffer-height");duration=el.getAttribute("data-gifffer-duration");altText=el.getAttribute("data-gifffer-alt");el.style.display="block";c=document.createElement("canvas");isC=!!(c.getContext&&c.getContext("2d"));if(w&&h&&isC)cc=createContainer(w,h,el,altText,options);el.onload=function(){if(!isC)return;w=w||el.width;h=h||el.height;if(!cc)cc=createContainer(w,h,el,altText,options);con=cc.c;play=cc.p;dims=calculatePercentageDim(con,w,h,el.width,el.height);gifs.push(con);con.addEventListener("click",function(){clearTimeout(durationTimeout);if(!playing){playing=true;gif=document.createElement("IMG");gif.setAttribute("style","width:100%;height:100%;");gif.setAttribute("data-uri",Math.floor(Math.random()*1e5)+1);setTimeout(function(){gif.src=url},0);con.removeChild(play);con.removeChild(c);con.appendChild(gif);if(parseInt(duration)>0){durationTimeout=setTimeout(function(){playing=false;con.appendChild(play);con.removeChild(gif);con.appendChild(c);gif=null},duration)}}else{playing=false;con.appendChild(play);con.removeChild(gif);con.appendChild(c);gif=null}});c.width=dims.w;c.height=dims.h;c.getContext("2d").drawImage(el,0,0,dims.w,dims.h);con.appendChild(c);con.setAttribute("style","position:relative;cursor:pointer;width:"+dims.w+"px;height:"+dims.h+"px;background:none;border:none;padding:0;");c.style.width="100%";c.style.height="100%";if(w.toString().indexOf("%")>0&&h.toString().indexOf("%")>0){con.style.width=w;con.style.height=h}else if(w.toString().indexOf("%")>0){con.style.width=w;con.style.height="inherit"}else if(h.toString().indexOf("%")>0){con.style.width="inherit";con.style.height=h}else{con.style.width=dims.w+"px";con.style.height=dims.h+"px"}};el.src=url}return Gifffer});

@ -6,7 +6,7 @@
The AutoConnect menu appears when you access the **AutoConnect root path**. It is assigned to "**/_ac**" located on ESP8266 *local IP address* by default. This location can be changed in the sketch. The following screen will appear at access to `http://{localIP}/_ac` as the root path. This is the statistics of the current WiFi connection. You can access the menu from the here. (e.g. `http://192.168.244.1/_ac` for SoftAP mode.) The AutoConnect menu appears when you access the **AutoConnect root path**. It is assigned to "**/_ac**" located on ESP8266 *local IP address* by default. This location can be changed in the sketch. The following screen will appear at access to `http://{localIP}/_ac` as the root path. This is the statistics of the current WiFi connection. You can access the menu from the here. (e.g. `http://192.168.244.1/_ac` for SoftAP mode.)
To invoke the menu tap <i class="fa fa-bars"></i> at right on top. To invoke the menu tap <i class="fa fa-bars"></i> at right on top.
<img src="/images/_ac.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /> <img src="../images/_ac.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" />
!!! note "What's local IP?" !!! note "What's local IP?"
A local IP means Local IP at connection established or SoftAP's IP. A local IP means Local IP at connection established or SoftAP's IP.
@ -21,20 +21,20 @@ Currently, AutoConnect supports four menus. Undermost menu returns to home path
- **Reset...** : Rest the ESP8266 module. - **Reset...** : Rest the ESP8266 module.
- **HOME** : Return to user home page. - **HOME** : Return to user home page.
<img src="/images/menu.png" style="width:280px;" /> <img src="../images/menu.png" style="width:280px;" />
## <i class="fa fa-bars"></i> Configure new AP ## <i class="fa fa-bars"></i> Configure new AP
Scan all available access point and display it. Strength and security of the detected AP are marked. The <i class="fa fa-lock"></i> is indicated for the SSID that needs a security key. "**Hidden:**" means the number of hidden SSIDs discovered. Scan all available access point and display it. Strength and security of the detected AP are marked. The <i class="fa fa-lock"></i> is indicated for the SSID that needs a security key. "**Hidden:**" means the number of hidden SSIDs discovered.
Enter SSID and Passphrase and tap "**apply**" to try connection. Enter SSID and Passphrase and tap "**apply**" to try connection.
<img src="/images/newap.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /> <img src="../images/newap.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" />
## <i class="fa fa-bars"></i> Open SSIDs ## <i class="fa fa-bars"></i> Open SSIDs
Once it was established connection, its SSID and Password will be stored to the EEPROM of ESP8266 automatically. The **Open SSIDs** menu reads the saved SSID credentials from the EEPROM. The stored credential data are listed by the SSID as shown below. Its label is a clickable button. To tap the SSID button starts connection it. Once it was established connection, its SSID and Password will be stored to the EEPROM of ESP8266 automatically. The **Open SSIDs** menu reads the saved SSID credentials from the EEPROM. The stored credential data are listed by the SSID as shown below. Its label is a clickable button. To tap the SSID button starts connection it.
<img src="/images/open.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /> <img src="../images/open.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" />
## <i class="fa fa-bars"></i> Disconnect ## <i class="fa fa-bars"></i> Disconnect
@ -46,7 +46,7 @@ It can also reset the ESP8266 automatically after being disconnected from the [A
Reset the ESP8266, it will be rebooted. After rebooting complete, the ESP8266 begins establishing the previous connection by WIFI_STA mode and the *esp8266ap* as SoftAP disappears from the WLAN. Reset the ESP8266, it will be rebooted. After rebooting complete, the ESP8266 begins establishing the previous connection by WIFI_STA mode and the *esp8266ap* as SoftAP disappears from the WLAN.
<img src="/images/resetting.png" style="width:280px;" /> <img src="../images/resetting.png" style="width:280px;" />
!!! warning "Not every module will be rebooted normally" !!! warning "Not every module will be rebooted normally"
The Reset menu is using the **ESP.reset()** function. This is an almost hardware reset. In order to resume the sketch normally, the [state of GPIO0](https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes) is important. Since this depends on the circuit implementation for each module, not every module will be rebooted normally. See also [FAQ](faq.md#hang-up-after-reset). The Reset menu is using the **ESP.reset()** function. This is an almost hardware reset. In order to resume the sketch normally, the [state of GPIO0](https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes) is important. Since this depends on the circuit implementation for each module, not every module will be rebooted normally. See also [FAQ](faq.md#hang-up-after-reset).

@ -4,7 +4,7 @@
How embed the AutoConnect to the sketches you have. Most simple approach to applying AutoConnect for the existing sketches, follow the below steps. How embed the AutoConnect to the sketches you have. Most simple approach to applying AutoConnect for the existing sketches, follow the below steps.
<img src="/images/BeforeAfter.svg" /> <img src="../images/BeforeAfter.svg" />
<i class="fa fa-edit"></i> Insert `#include <AutoConnect.h>` to behind of `#include <ESP8266WebServer.h>`. <i class="fa fa-edit"></i> Insert `#include <AutoConnect.h>` to behind of `#include <ESP8266WebServer.h>`.
<i class="fa fa-edit"></i> Insert `AutoConnect`*`PORTAL(WEBSERVER);`* to behind of `ESP8266WebServer`*`WEBSERVER;`* declaration.[^1] <i class="fa fa-edit"></i> Insert `AutoConnect`*`PORTAL(WEBSERVER);`* to behind of `ESP8266WebServer`*`WEBSERVER;`* declaration.[^1]
@ -248,7 +248,7 @@ In ordinary, the URL handler will respond the request by sending some HTML. [Pag
An example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for [Github repository](https://github.com/Hieromon/PageBuilder). An example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for [Github repository](https://github.com/Hieromon/PageBuilder).
<img src="/images/PageBuilder.png" style="width:640px;"/> <img src="../images/PageBuilder.png" style="width:640px;"/>
## Configuration functions ## Configuration functions
@ -271,7 +271,7 @@ AutoConnect will activate SoftAP at failed initial WiFi.Begin. It SoftAP setting
"**HOME**" for returning to the user's sketch homepage is displayed at the bottom of the AutoConnect menu. It could be set using the [*AutoConnect::home*](api.md#home) function. "**HOME**" for returning to the user's sketch homepage is displayed at the bottom of the AutoConnect menu. It could be set using the [*AutoConnect::home*](api.md#home) function.
<img src="/images/menu_home.png" /> <img src="../images/menu_home.png" />
### <i class="fa fa-caret-right"></i> Relocate the AutoConnect home path ### <i class="fa fa-caret-right"></i> Relocate the AutoConnect home path
Loading…
Cancel
Save