adothers.html 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392
  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface">
  7. <link rel="canonical" href="https://Hieromon.github.io/AutoConnect/adothers.html">
  8. <meta name="author" content="Hieromon Ikasamo">
  9. <link rel="shortcut icon" href="assets/images/favicon.png">
  10. <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.1.6">
  11. <title>Other operation settings and controls - AutoConnect for ESP8266/ESP32</title>
  12. <link rel="stylesheet" href="assets/stylesheets/main.6910b76c.min.css">
  13. <link rel="stylesheet" href="assets/stylesheets/palette.196e0c26.min.css">
  14. <meta name="theme-color" content="#4051b5">
  15. <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
  16. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
  17. <style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
  18. <link rel="stylesheet" href="css/paragraph.css">
  19. <link rel="stylesheet" href="css/extra.css">
  20. <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css">
  21. <script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-116150854-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}),document.addEventListener("DOMContentSwitch",function(){ga("send","pageview",document.location.pathname)})</script>
  22. <script async src="https://www.google-analytics.com/analytics.js"></script>
  23. </head>
  24. <body dir="ltr" data-md-color-scheme="" data-md-color-primary="indigo" data-md-color-accent="indigo">
  25. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  26. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  27. <label class="md-overlay" for="__drawer"></label>
  28. <div data-md-component="skip">
  29. <a href="#built-in-ota-update-feature" class="md-skip">
  30. Skip to content
  31. </a>
  32. </div>
  33. <div data-md-component="announce">
  34. </div>
  35. <header class="md-header" data-md-component="header">
  36. <nav class="md-header-nav md-grid" aria-label="Header">
  37. <a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo" aria-label="AutoConnect for ESP8266/ESP32">
  38. <img src="images/arduino-logo.svg" alt="logo">
  39. </a>
  40. <label class="md-header-nav__button md-icon" for="__drawer">
  41. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
  42. </label>
  43. <div class="md-header-nav__title" data-md-component="header-title">
  44. <div class="md-header-nav__ellipsis">
  45. <span class="md-header-nav__topic md-ellipsis">
  46. AutoConnect for ESP8266/ESP32
  47. </span>
  48. <span class="md-header-nav__topic md-ellipsis">
  49. Other operation settings and controls
  50. </span>
  51. </div>
  52. </div>
  53. <label class="md-header-nav__button md-icon" for="__search">
  54. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
  55. </label>
  56. <div class="md-search" data-md-component="search" role="dialog">
  57. <label class="md-search__overlay" for="__search"></label>
  58. <div class="md-search__inner" role="search">
  59. <form class="md-search__form" name="search">
  60. <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
  61. <label class="md-search__icon md-icon" for="__search">
  62. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
  63. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
  64. </label>
  65. <button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
  66. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
  67. </button>
  68. </form>
  69. <div class="md-search__output">
  70. <div class="md-search__scrollwrap" data-md-scrollfix>
  71. <div class="md-search-result" data-md-component="search-result">
  72. <div class="md-search-result__meta">
  73. Initializing search
  74. </div>
  75. <ol class="md-search-result__list"></ol>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. <div class="md-header-nav__source">
  82. <a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source">
  83. <div class="md-source__icon md-icon">
  84. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
  85. </div>
  86. <div class="md-source__repository">
  87. Hieromon/AutoConnect
  88. </div>
  89. </a>
  90. </div>
  91. </nav>
  92. </header>
  93. <div class="md-container" data-md-component="container">
  94. <main class="md-main" data-md-component="main">
  95. <div class="md-main__inner md-grid">
  96. <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
  97. <div class="md-sidebar__scrollwrap">
  98. <div class="md-sidebar__inner">
  99. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  100. <label class="md-nav__title" for="__drawer">
  101. <a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo" aria-label="AutoConnect for ESP8266/ESP32">
  102. <img src="images/arduino-logo.svg" alt="logo">
  103. </a>
  104. AutoConnect for ESP8266/ESP32
  105. </label>
  106. <div class="md-nav__source">
  107. <a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source">
  108. <div class="md-source__icon md-icon">
  109. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
  110. </div>
  111. <div class="md-source__repository">
  112. Hieromon/AutoConnect
  113. </div>
  114. </a>
  115. </div>
  116. <ul class="md-nav__list" data-md-scrollfix>
  117. <li class="md-nav__item">
  118. <a href="index.html" class="md-nav__link">
  119. Overview
  120. </a>
  121. </li>
  122. <li class="md-nav__item">
  123. <a href="gettingstarted.html" class="md-nav__link">
  124. Getting started
  125. </a>
  126. </li>
  127. <li class="md-nav__item">
  128. <a href="menu.html" class="md-nav__link">
  129. AutoConnect menu
  130. </a>
  131. </li>
  132. <li class="md-nav__item">
  133. <a href="basicusage.html" class="md-nav__link">
  134. Basic usage
  135. </a>
  136. </li>
  137. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  138. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5" checked>
  139. <label class="md-nav__link" for="nav-5">
  140. Advanced usage
  141. <span class="md-nav__icon md-icon"></span>
  142. </label>
  143. <nav class="md-nav" aria-label="Advanced usage" data-md-level="1">
  144. <label class="md-nav__title" for="nav-5">
  145. <span class="md-nav__icon md-icon"></span>
  146. Advanced usage
  147. </label>
  148. <ul class="md-nav__list" data-md-scrollfix>
  149. <li class="md-nav__item">
  150. <a href="advancedusage.html" class="md-nav__link">
  151. Advanced usage
  152. </a>
  153. </li>
  154. <li class="md-nav__item">
  155. <a href="adconnection.html" class="md-nav__link">
  156. AutoConnect WiFi connection control
  157. </a>
  158. </li>
  159. <li class="md-nav__item">
  160. <a href="adcpcontrol.html" class="md-nav__link">
  161. Captive portal control
  162. </a>
  163. </li>
  164. <li class="md-nav__item">
  165. <a href="adnetwork.html" class="md-nav__link">
  166. Settings and controls for network and WiFi
  167. </a>
  168. </li>
  169. <li class="md-nav__item">
  170. <a href="adauthentication.html" class="md-nav__link">
  171. Authentication settings
  172. </a>
  173. </li>
  174. <li class="md-nav__item">
  175. <a href="adcredential.html" class="md-nav__link">
  176. Credential accesses
  177. </a>
  178. </li>
  179. <li class="md-nav__item">
  180. <a href="adexterior.html" class="md-nav__link">
  181. Customizing page appearance
  182. </a>
  183. </li>
  184. <li class="md-nav__item md-nav__item--active">
  185. <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
  186. <label class="md-nav__link md-nav__link--active" for="__toc">
  187. Other operation settings and controls
  188. <span class="md-nav__icon md-icon"></span>
  189. </label>
  190. <a href="adothers.html" class="md-nav__link md-nav__link--active">
  191. Other operation settings and controls
  192. </a>
  193. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  194. <label class="md-nav__title" for="__toc">
  195. <span class="md-nav__icon md-icon"></span>
  196. Table of contents
  197. </label>
  198. <ul class="md-nav__list" data-md-scrollfix>
  199. <li class="md-nav__item">
  200. <a href="#built-in-ota-update-feature" class="md-nav__link">
  201. Built-in OTA update feature
  202. </a>
  203. </li>
  204. <li class="md-nav__item">
  205. <a href="#choice-of-the-filesystem-for-esp8266" class="md-nav__link">
  206. Choice of the filesystem for ESP8266
  207. </a>
  208. </li>
  209. <li class="md-nav__item">
  210. <a href="#debug-print" class="md-nav__link">
  211. Debug Print
  212. </a>
  213. </li>
  214. <li class="md-nav__item">
  215. <a href="#file-uploading-via-built-in-ota-feature" class="md-nav__link">
  216. File uploading via built-in OTA feature
  217. </a>
  218. </li>
  219. <li class="md-nav__item">
  220. <a href="#refers-the-hosted-esp8266webserverwebserver" class="md-nav__link">
  221. Refers the hosted ESP8266WebServer/WebServer
  222. </a>
  223. </li>
  224. <li class="md-nav__item">
  225. <a href="#reset-the-esp-module-after-disconnecting-from-wlan" class="md-nav__link">
  226. Reset the ESP module after disconnecting from WLAN
  227. </a>
  228. </li>
  229. <li class="md-nav__item">
  230. <a href="#ticker-for-wifi-status" class="md-nav__link">
  231. Ticker for WiFi status
  232. </a>
  233. </li>
  234. <li class="md-nav__item">
  235. <a href="#usage-for-automatically-instantiated-esp8266webserverwebserver" class="md-nav__link">
  236. Usage for automatically instantiated ESP8266WebServer/WebServer
  237. </a>
  238. </li>
  239. <li class="md-nav__item">
  240. <a href="#use-with-the-pagebuilder-library" class="md-nav__link">
  241. Use with the PageBuilder library
  242. </a>
  243. </li>
  244. </ul>
  245. </nav>
  246. </li>
  247. </ul>
  248. </nav>
  249. </li>
  250. <li class="md-nav__item md-nav__item--nested">
  251. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" >
  252. <label class="md-nav__link" for="nav-6">
  253. Custom Web pages
  254. <span class="md-nav__icon md-icon"></span>
  255. </label>
  256. <nav class="md-nav" aria-label="Custom Web pages" data-md-level="1">
  257. <label class="md-nav__title" for="nav-6">
  258. <span class="md-nav__icon md-icon"></span>
  259. Custom Web pages
  260. </label>
  261. <ul class="md-nav__list" data-md-scrollfix>
  262. <li class="md-nav__item">
  263. <a href="acintro.html" class="md-nav__link">
  264. Custom Web pages with AutoConnect
  265. </a>
  266. </li>
  267. <li class="md-nav__item">
  268. <a href="acelements.html" class="md-nav__link">
  269. AutoConnectElements
  270. </a>
  271. </li>
  272. <li class="md-nav__item">
  273. <a href="acjson.html" class="md-nav__link">
  274. Custom Web pages with JSON
  275. </a>
  276. </li>
  277. <li class="md-nav__item">
  278. <a href="achandling.html" class="md-nav__link">
  279. Handling the custom Web pages
  280. </a>
  281. </li>
  282. </ul>
  283. </nav>
  284. </li>
  285. <li class="md-nav__item md-nav__item--nested">
  286. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7" >
  287. <label class="md-nav__link" for="nav-7">
  288. OTA Updates
  289. <span class="md-nav__icon md-icon"></span>
  290. </label>
  291. <nav class="md-nav" aria-label="OTA Updates" data-md-level="1">
  292. <label class="md-nav__title" for="nav-7">
  293. <span class="md-nav__icon md-icon"></span>
  294. OTA Updates
  295. </label>
  296. <ul class="md-nav__list" data-md-scrollfix>
  297. <li class="md-nav__item">
  298. <a href="otaupdate.html" class="md-nav__link">
  299. OTA Updates
  300. </a>
  301. </li>
  302. <li class="md-nav__item">
  303. <a href="otabrowser.html" class="md-nav__link">
  304. Using Web Browser
  305. </a>
  306. </li>
  307. <li class="md-nav__item">
  308. <a href="otaserver.html" class="md-nav__link">
  309. Using Update Server
  310. </a>
  311. </li>
  312. </ul>
  313. </nav>
  314. </li>
  315. <li class="md-nav__item md-nav__item--nested">
  316. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" >
  317. <label class="md-nav__link" for="nav-8">
  318. Library APIs
  319. <span class="md-nav__icon md-icon"></span>
  320. </label>
  321. <nav class="md-nav" aria-label="Library APIs" data-md-level="1">
  322. <label class="md-nav__title" for="nav-8">
  323. <span class="md-nav__icon md-icon"></span>
  324. Library APIs
  325. </label>
  326. <ul class="md-nav__list" data-md-scrollfix>
  327. <li class="md-nav__item">
  328. <a href="api.html" class="md-nav__link">
  329. AutoConnect API
  330. </a>
  331. </li>
  332. <li class="md-nav__item">
  333. <a href="apiaux.html" class="md-nav__link">
  334. AutoConnectAux API
  335. </a>
  336. </li>
  337. <li class="md-nav__item">
  338. <a href="apiconfig.html" class="md-nav__link">
  339. AutoConnectConfig API
  340. </a>
  341. </li>
  342. <li class="md-nav__item">
  343. <a href="apielements.html" class="md-nav__link">
  344. AutoConnectElements API
  345. </a>
  346. </li>
  347. <li class="md-nav__item">
  348. <a href="apiupdate.html" class="md-nav__link">
  349. AutoConnectUpdate API
  350. </a>
  351. </li>
  352. <li class="md-nav__item">
  353. <a href="apiextra.html" class="md-nav__link">
  354. Something extra
  355. </a>
  356. </li>
  357. </ul>
  358. </nav>
  359. </li>
  360. <li class="md-nav__item md-nav__item--nested">
  361. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9" >
  362. <label class="md-nav__link" for="nav-9">
  363. Examples
  364. <span class="md-nav__icon md-icon"></span>
  365. </label>
  366. <nav class="md-nav" aria-label="Examples" data-md-level="1">
  367. <label class="md-nav__title" for="nav-9">
  368. <span class="md-nav__icon md-icon"></span>
  369. Examples
  370. </label>
  371. <ul class="md-nav__list" data-md-scrollfix>
  372. <li class="md-nav__item">
  373. <a href="howtoembed.html" class="md-nav__link">
  374. How to embed
  375. </a>
  376. </li>
  377. <li class="md-nav__item">
  378. <a href="datatips.html" class="md-nav__link">
  379. Tips for data conversion
  380. </a>
  381. </li>
  382. <li class="md-nav__item">
  383. <a href="menuize.html" class="md-nav__link">
  384. Attach the menus
  385. </a>
  386. </li>
  387. <li class="md-nav__item">
  388. <a href="wojson.html" class="md-nav__link">
  389. Custom Web pages w/o JSON
  390. </a>
  391. </li>
  392. </ul>
  393. </nav>
  394. </li>
  395. <li class="md-nav__item md-nav__item--nested">
  396. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10" >
  397. <label class="md-nav__link" for="nav-10">
  398. Appendix
  399. <span class="md-nav__icon md-icon"></span>
  400. </label>
  401. <nav class="md-nav" aria-label="Appendix" data-md-level="1">
  402. <label class="md-nav__title" for="nav-10">
  403. <span class="md-nav__icon md-icon"></span>
  404. Appendix
  405. </label>
  406. <ul class="md-nav__list" data-md-scrollfix>
  407. <li class="md-nav__item">
  408. <a href="lsbegin.html" class="md-nav__link">
  409. Inside AutoConnect::begin
  410. </a>
  411. </li>
  412. <li class="md-nav__item">
  413. <a href="credit.html" class="md-nav__link">
  414. Saved credentials access
  415. </a>
  416. </li>
  417. <li class="md-nav__item">
  418. <a href="acupload.html" class="md-nav__link">
  419. File upload handler
  420. </a>
  421. </li>
  422. <li class="md-nav__item">
  423. <a href="colorized.html" class="md-nav__link">
  424. Custom colorized
  425. </a>
  426. </li>
  427. <li class="md-nav__item">
  428. <a href="changelabel.html" class="md-nav__link">
  429. Change label text
  430. </a>
  431. </li>
  432. </ul>
  433. </nav>
  434. </li>
  435. <li class="md-nav__item">
  436. <a href="faq.html" class="md-nav__link">
  437. FAQ
  438. </a>
  439. </li>
  440. <li class="md-nav__item">
  441. <a href="changelog.html" class="md-nav__link">
  442. Change log
  443. </a>
  444. </li>
  445. <li class="md-nav__item">
  446. <a href="license.html" class="md-nav__link">
  447. License
  448. </a>
  449. </li>
  450. </ul>
  451. </nav>
  452. </div>
  453. </div>
  454. </div>
  455. <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
  456. <div class="md-sidebar__scrollwrap">
  457. <div class="md-sidebar__inner">
  458. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  459. <label class="md-nav__title" for="__toc">
  460. <span class="md-nav__icon md-icon"></span>
  461. Table of contents
  462. </label>
  463. <ul class="md-nav__list" data-md-scrollfix>
  464. <li class="md-nav__item">
  465. <a href="#built-in-ota-update-feature" class="md-nav__link">
  466. Built-in OTA update feature
  467. </a>
  468. </li>
  469. <li class="md-nav__item">
  470. <a href="#choice-of-the-filesystem-for-esp8266" class="md-nav__link">
  471. Choice of the filesystem for ESP8266
  472. </a>
  473. </li>
  474. <li class="md-nav__item">
  475. <a href="#debug-print" class="md-nav__link">
  476. Debug Print
  477. </a>
  478. </li>
  479. <li class="md-nav__item">
  480. <a href="#file-uploading-via-built-in-ota-feature" class="md-nav__link">
  481. File uploading via built-in OTA feature
  482. </a>
  483. </li>
  484. <li class="md-nav__item">
  485. <a href="#refers-the-hosted-esp8266webserverwebserver" class="md-nav__link">
  486. Refers the hosted ESP8266WebServer/WebServer
  487. </a>
  488. </li>
  489. <li class="md-nav__item">
  490. <a href="#reset-the-esp-module-after-disconnecting-from-wlan" class="md-nav__link">
  491. Reset the ESP module after disconnecting from WLAN
  492. </a>
  493. </li>
  494. <li class="md-nav__item">
  495. <a href="#ticker-for-wifi-status" class="md-nav__link">
  496. Ticker for WiFi status
  497. </a>
  498. </li>
  499. <li class="md-nav__item">
  500. <a href="#usage-for-automatically-instantiated-esp8266webserverwebserver" class="md-nav__link">
  501. Usage for automatically instantiated ESP8266WebServer/WebServer
  502. </a>
  503. </li>
  504. <li class="md-nav__item">
  505. <a href="#use-with-the-pagebuilder-library" class="md-nav__link">
  506. Use with the PageBuilder library
  507. </a>
  508. </li>
  509. </ul>
  510. </nav>
  511. </div>
  512. </div>
  513. </div>
  514. <div class="md-content">
  515. <article class="md-content__inner md-typeset">
  516. <h1>Other operation settings and controls</h1>
  517. <p>AutoConnect also has features that are not directly related to WiFi connection abilities. They're mostly like a little accessory but can reduce the amount of sketch code. </p>
  518. <ul>
  519. <li><a href="#built-in-ota-update-feature">Built-in OTA update</a></li>
  520. <li><a href="#choice-of-the-filesystem-for-esp8266">Choice of the filesystem for ESP8266</a></li>
  521. <li><a href="#debug-print">Debug Print</a></li>
  522. <li><a href="#file-uploading-via-built-in-ota-feature">File uploading via built-in OTA feature</a></li>
  523. <li><a href="#refers-the-hosted-esp8266webserverwebserver">Refers the hosted ESP8266WebServer/WebServer</a></li>
  524. <li><a href="#reset-the-esp-module-after-disconnecting-from-wlan">Reset the ESP module after disconnecting from WLAN</a></li>
  525. <li><a href="#ticker-for-wifi-status">Ticker for WiFi status</a></li>
  526. <li><a href="#usage-for-automatically-instantiated-esp8266webserverwebserver">Usage for automatically instantiated ESP8266WebServer/WebServer</a></li>
  527. <li><a href="#use-with-the-pagebuilder-library">Use with the PageBuilder library</a></li>
  528. </ul>
  529. <h2 id="built-in-ota-update-feature">Built-in OTA update feature<a class="headerlink" href="#built-in-ota-update-feature" title="Permanent link">&para;</a></h2>
  530. <p>AutoConnect features a built-in OTA function to update ESP module firmware. You can easily make the Sketch that equips OTA and able to operate with the AutoConnect menu.</p>
  531. <p><span style="display:block;margin-left:auto;margin-right:auto;width:284px;height:462px;border:1px solid lightgrey;"><img data-gifffer="images/webupdate.gif" data-gifffer-height="460" data-gifffer-width="282" /></span></p>
  532. <p><a href="apiconfig.html#ota"><em>AutoConnectConfig::ota</em></a> specifies to import the <a href="otabrowser.html">built-in OTA update class</a> into the Sketch.<br />
  533. See the <a href="otabrowser.html">Updates with the Web Browser</a> chapter for details.</p>
  534. <h2 id="choice-of-the-filesystem-for-esp8266">Choice of the filesystem for ESP8266<a class="headerlink" href="#choice-of-the-filesystem-for-esp8266" title="Permanent link">&para;</a></h2>
  535. <p>For ESP8266, since the Arduino core v2.7.0, SPIFFS has deprecated and the migration to <a href="https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html?highlight=littleFS#spiffs-deprecation-warning"><strong>LittleFS</strong></a> is being promoted currently. AutoConnect has adopted LittleFS as the default filesystem to follow the core standard.</p>
  536. <p>However, SPIFFS is still valid. AutoConnect can correctly compile and execute sketches made with SPIFFS assumed. When you make an AutoConnect sketch with SPIFFS enabled, you need to change the macro definition that <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L39"><code>AutoConnectDefs.h</code></a> has.<br />
  537. <strong>AC_USE_SPIFFS</strong> definition will enable SPIFFS as the filesystem.</p>
  538. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #75715e">#define AC_USE_SPIFFS</span>
  539. </code></pre></div>
  540. <p>See also the <a href="faq.html#unable-to-change-any-macro-definitions-by-the-sketch">FAQ</a> to help you enable AC_USE_SPIFFS correctly.</p>
  541. <h2 id="debug-print">Debug Print<a class="headerlink" href="#debug-print" title="Permanent link">&para;</a></h2>
  542. <p>You can output AutoConnect monitor messages to the <strong>Serial</strong>. A monitor message activation switch is in an include header file <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h"><code>AutoConnectDefs.h</code></a> of library source. Define <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L14"><strong>AC_DEBUG</strong></a> macro to output the monitor messages.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>
  543. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #75715e">#define AC_DEBUG</span>
  544. </code></pre></div>
  545. <p>AutoConnect does not automatically start the Serial even if AC_DEBUG is activated. The Sketch should start the Serial during its setup phase using <strong><code>Serial.begin(BAUDRATE)</code></strong>.</p>
  546. <div class="admonition note">
  547. <p class="admonition-title">How to enable AC_DEBUG</p>
  548. <p>The <strong>#define</strong> is a C++ preprocessor directive. The build process of the Sketch by the Arduino IDE is processed independently of the subsequent C++ compilation unit. Writing the #define directive for AC_DEBUG in the Sketch has no effect on the AutoConnect library.<br />
  549. To compile the AutoConnect library with the AC_DEBUG directive, you can either edit the library source code directly (usually it is located in ~/Arduino/libraries/AutoConnect/src) or use a build system which can configure the preprocessor directives externally such as <a href="https://platformio.org/"><strong>PlatformIO</strong></a>.</p>
  550. </div>
  551. <h2 id="file-uploading-via-built-in-ota-feature">File uploading via built-in OTA feature<a class="headerlink" href="#file-uploading-via-built-in-ota-feature" title="Permanent link">&para;</a></h2>
  552. <p>The <a href="otabrowser.html">built-in OTA update feature</a> can update the firmware as well as upload regular files placed in the file system on the ESP module. It allows a regular file is uploaded via OTA using the <a href="menu.html#update"><strong>Update</strong></a> of AutoConnect menu without adding a particular custom Web page that contains AutoConnectFile. This ability is useful for transferring the JSON document of the custom web page definition, the external parameter file of your sketch, and so on into the target ESP module via OTA.</p>
  553. <p>The built-in OTA update feature determines where to save the uploaded file according to the filename pattern. By default, a filename with ends a <strong><code>.bin</code></strong> extension is subject to firmware updates. A file that has the other extension will be saved as a regular to the filesystem in the flash. The file extension that should be treated as the firmware is defined as the <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L280"><code>AUTOCONNECT_UPLOAD_ASFIRMWARE</code></a> macro in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h">AutoConnectDefs.h</a> header file of the library source code. When dealing with another extension for the updating file as firmware change this macro definition.</p>
  554. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #75715e">#define AUTOCONNECT_UPLOAD_ASFIRMWARE &quot;.bin&quot;</span>
  555. </code></pre></div>
  556. <div class="admonition note">
  557. <p class="admonition-title">Specify with the PlatformIO</p>
  558. <p><code>AUTOCONNECT_UPLOAD_ASFIRMWARE</code> pattern will be embedded into the binary sketch is determined at compile time. The <a href="https://platformio.org/platformio-ide"><strong>PlatformIO</strong></a> build system allows you to change the pattern expression for each project without modifying the library source code.</p>
  559. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #a6e22e">build_flags</span><span style="color: #f92672">=</span><span style="color: #e6db74">-DAUTOCONNECT_UPLOAD_ASFIRMWARE=&#39;&quot;.bin&quot;&#39;</span>
  560. </code></pre></div>
  561. </div>
  562. <h2 id="refers-the-hosted-esp8266webserverwebserver">Refers the hosted ESP8266WebServer/WebServer<a class="headerlink" href="#refers-the-hosted-esp8266webserverwebserver" title="Permanent link">&para;</a></h2>
  563. <p>Constructing an AutoConnect object variable without parameters then creates and starts an ESP8266WebServer/WebServer inside the AutoConnect. This object variable could be referred by <a href="api.html#host">AutoConnect::host</a> function to access ESP8266WebServer/WebServer instance as like below.</p>
  564. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span>
  565. <span style="color: #f8f8f2">Portal.begin();</span>
  566. <span style="background-color: #49483e"><span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">server</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.host();</span>
  567. </span><span style="color: #f8f8f2">server.send(</span><span style="color: #ae81ff">200</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/plain&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Hello, world&quot;</span><span style="color: #f8f8f2">);</span>
  568. </code></pre></div>
  569. <div class="admonition info">
  570. <p class="admonition-title">When host() is valid</p>
  571. <p>The host() can be referred at after <a href="api.html#begin">AutoConnect::begin</a>.</p>
  572. </div>
  573. <h2 id="reset-the-esp-module-after-disconnecting-from-wlan">Reset the ESP module after disconnecting from WLAN<a class="headerlink" href="#reset-the-esp-module-after-disconnecting-from-wlan" title="Permanent link">&para;</a></h2>
  574. <p><a href="menu.html#disconnect">Disconnect</a> by menu operation allows the ESP8266/ESP32 module to reset automatically after disconnecting from WLAN. This behavior is enabled by default and can be disabled by <a href="apiconfig.html#autoreset"><em>AutoConnectConfig::autoReset</em></a> settings.</p>
  575. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span>
  576. <span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">Config;</span>
  577. <span style="background-color: #49483e"><span style="color: #f8f8f2">Config.autoReset</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">false;</span> <span style="color: #75715e">// Continue sketch processing even after disconnecting from by AutoConnect menu.</span>
  578. </span><span style="color: #f8f8f2">Portal.config(Config);</span>
  579. <span style="color: #f8f8f2">Portal.begin();</span>
  580. </code></pre></div>
  581. <p>The <a href="apiconfig.html#autoreset"><strong>autoReset</strong></a> setting will automatically reset the ESP module when disconnecting WiFi only if you intentionally navigate the <a href="menu.html#disconnect">menu</a>. And it does not participate in passive disconnection conditions such as disconnection due to sketch processing or loss of WiFi signal. </p>
  582. <p>You can combine <a href="apiconfig.html#autoreset"><strong>autoReset</strong></a> with <a href="apiconfig.html#autoreconnect"><strong>autoReconnect</strong></a> to disconnect from WiFi and automatically reconnect to another AP while continuing the Sketch operation.</p>
  583. <p>The Sketch below shows an example of a meaningful combination of <a href="apiconfig.html#autoreset"><strong>autoReset</strong></a> and <a href="apiconfig.html#autoreconnect"><strong>autoReconnect</strong></a>. It can connect to the access point once with the captive portal but assumes that it can be disconnected from the WLAN by intentional menu navigation. In that case, the Sketch will continue processing without resetting the module. Then an external switch allows to start automatic reconnecting. In this situation, if known access points appear nearby, the ESP module will automatically reconnect to them in the handleClient loop. In this state transition, the module continues the Sketch process without resetting.</p>
  584. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span>
  585. <span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">Config;</span>
  586. <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">int</span> <span style="color: #f8f8f2">reconnectSwitch</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">14</span><span style="color: #f8f8f2">;</span> <span style="color: #75715e">// Assign the reconnect switch to GPIO14</span>
  587. <span style="color: #f8f8f2">ICACHE_RAM_ATTR</span> <span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">detectsReconnect()</span> <span style="color: #f8f8f2">{</span>
  588. <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(</span><span style="color: #f92672">!</span><span style="color: #f8f8f2">Config.autoReconnect)</span> <span style="color: #f8f8f2">{</span> <span style="color: #75715e">// Chattering elimination</span>
  589. <span style="color: #75715e">// autoReconnect is enabled by interrupt of the GPIO trigger,</span>
  590. <span style="color: #f8f8f2">Config.autoReconnect</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true;</span> <span style="color: #75715e">// Activate reconnection</span>
  591. <span style="color: #f8f8f2">Config.reconnectInterval</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">2</span><span style="color: #f8f8f2">;</span> <span style="color: #75715e">// Attempt to reconnect at 60 seconds intervals.</span>
  592. <span style="color: #f8f8f2">Portal.config(Config);</span>
  593. <span style="color: #f8f8f2">Serial.printf(</span><span style="color: #e6db74">&quot;Turn on autoReconnect, interval %d[s]</span><span style="color: #ae81ff">\n</span><span style="color: #e6db74">&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">Config.reconnectInterval</span> <span style="color: #f92672">*</span> <span style="color: #f8f8f2">AUTOCONNECT_UNITTIME);</span>
  594. <span style="color: #f8f8f2">}</span>
  595. <span style="color: #f8f8f2">}</span>
  596. <span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">setup()</span> <span style="color: #f8f8f2">{</span>
  597. <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
  598. <span style="color: #f8f8f2">Serial.begin(</span><span style="color: #ae81ff">115200</span><span style="color: #f8f8f2">);</span>
  599. <span style="color: #f8f8f2">Serial.println();</span>
  600. <span style="color: #f8f8f2">Config.ticker</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true;</span> <span style="color: #75715e">// Setting up WiFi connection indicator</span>
  601. <span style="color: #f8f8f2">Portal.config(Config);</span>
  602. <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(Portal.begin())</span> <span style="color: #f8f8f2">{</span>
  603. <span style="color: #f8f8f2">Config.autoReset</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">false;</span>
  604. <span style="color: #f8f8f2">Portal.config(Config);</span>
  605. <span style="color: #75715e">// Set external switch pin to reconnect as interrupt, assign interrupt function and set RISING mode</span>
  606. <span style="color: #f8f8f2">pinMode(reconnectSwitch,</span> <span style="color: #f8f8f2">INPUT_PULLUP);</span>
  607. <span style="color: #f8f8f2">attachInterrupt(digitalPinToInterrupt(reconnectSwitch),</span> <span style="color: #f8f8f2">detectsReconnect,</span> <span style="color: #f8f8f2">RISING);</span>
  608. <span style="color: #f8f8f2">}</span>
  609. <span style="color: #f8f8f2">}</span>
  610. <span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">loop()</span> <span style="color: #f8f8f2">{</span>
  611. <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(WiFi.status()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">WL_CONNECTED)</span> <span style="color: #f8f8f2">{</span>
  612. <span style="color: #75715e">/*</span>
  613. <span style="color: #75715e"> Here, your sketch process with WiFi connection</span>
  614. <span style="color: #75715e"> */</span>
  615. <span style="color: #f8f8f2">}</span>
  616. <span style="color: #66d9ef">else</span> <span style="color: #f8f8f2">{</span>
  617. <span style="color: #75715e">/*</span>
  618. <span style="color: #75715e"> Here, your sketch process without WiFi connection</span>
  619. <span style="color: #75715e"> */</span>
  620. <span style="color: #f8f8f2">}</span>
  621. <span style="color: #75715e">// Post process, turn to initial state of autoReconnect.</span>
  622. <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(Config.autoReconnect)</span> <span style="color: #f8f8f2">{</span>
  623. <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(WiFi.status()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">WL_CONNECTED)</span> <span style="color: #f8f8f2">{</span>
  624. <span style="color: #f8f8f2">Config.autoReconnect</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">false;</span>
  625. <span style="color: #f8f8f2">Portal.config(Config);</span>
  626. <span style="color: #f8f8f2">}</span>
  627. <span style="color: #f8f8f2">}</span>
  628. <span style="color: #75715e">// The actual reconnection takes place within handleClient.</span>
  629. <span style="color: #f8f8f2">Portal.handleClient();</span>
  630. <span style="color: #f8f8f2">}</span>
  631. </code></pre></div>
  632. <div class="admonition info">
  633. <p class="admonition-title">An external switch wiring to GPIO</p>
  634. <p>The wiring for the above Sketch assumes a momentary effects switch that connects the GPIO pin 14 to GND. You can experience it with easily wire on a breadboard using a NodeMCU as like:</p>
  635. <p><img src="images/extswitch.png" style="width:320px;"/></p>
  636. </div>
  637. <h2 id="ticker-for-wifi-status">Ticker for WiFi status<a class="headerlink" href="#ticker-for-wifi-status" title="Permanent link">&para;</a></h2>
  638. <p>Flicker signal can be output from the ESP8266/ESP32 module according to WiFi connection status. By wiring the LED to the signal output pin with the appropriate limiting resistor, you can know the WiFi connection status through the LED blink during the inside behavior of AutoConnect::begin and loop of AutoConnect::handleClient.</p>
  639. <p><a href="apiconfig.html#ticker"><em>AutoConnectConfig::ticker</em></a> option specifies flicker signal output. The following sketch is an example of blinking the active-low LED connected to <code>GPIO16</code> depending on the WiFi connection status.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>
  640. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
  641. <span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">Config;</span>
  642. <span style="color: #f8f8f2">Config.ticker</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true;</span>
  643. <span style="color: #f8f8f2">config.tickerPort</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">16</span><span style="color: #f8f8f2">;</span>
  644. <span style="color: #f8f8f2">Config.tickerOn</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">LOW;</span>
  645. <span style="color: #f8f8f2">portal.config(Config);</span>
  646. <span style="color: #f8f8f2">portal.begin();</span>
  647. </code></pre></div>
  648. <p>The AutoConnect ticker indicates the WiFi connection status in the following three flicker patterns:</p>
  649. <ul>
  650. <li>Short blink: The ESP module stays in AP_STA mode.</li>
  651. <li>Short-on and long-off: No STA connection state. (i.e. WiFi.status != WL_CONNECTED)</li>
  652. <li>No blink: WiFi connection with access point established and data link enabled. (i.e. WiFi.status = WL_CONNECTED)</li>
  653. </ul>
  654. <p>The flicker cycle length is defined by some macros in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L180"><code>AutoConnectDefs.h</code></a> header file.</p>
  655. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #75715e">#define AUTOCONNECT_FLICKER_PERIODAP 1000 // [ms]</span>
  656. <span style="color: #75715e">#define AUTOCONNECT_FLICKER_PERIODDC (AUTOCONNECT_FLICKER_PERIODAP &lt;&lt; 1) // [ms]</span>
  657. <span style="color: #75715e">#define AUTOCONNECT_FLICKER_WIDTHAP 96 // (8 bit resolution)</span>
  658. <span style="color: #75715e">#define AUTOCONNECT_FLICKER_WIDTHDC 16 // (8 bit resolution)</span>
  659. </code></pre></div>
  660. <ul>
  661. <li><strong>AUTOCONNECT_FLICKER_PERIODAP</strong>:<br />
  662. Assigns a flicker period when the ESP module stays in AP_STA mode.</li>
  663. <li><strong>AUTOCONNECT_FLICKER_PERIODDC</strong>:<br />
  664. Assigns a flicker period when WiFi is disconnected.</li>
  665. <li><strong>AUTOCONNECT_FLICKER_WIDTHAP</strong> and <strong>AUTOCONNECT_FLICKER_WIDTHDC</strong>:<br />
  666. Specify the duty rate for each period [ms] in 8-bit resolution.</li>
  667. </ul>
  668. <div class="admonition note">
  669. <p class="admonition-title">Ticker during OTA</p>
  670. <p>The LED blinking will always be a short blinking during the update via OTA, regardless of the definition of the flicker cycle.</p>
  671. </div>
  672. <p><a href="apiconfig.html#tickerport"><em>AutoConnectConfig::tickerPort</em></a> specifies a port that outputs the flicker signal. If you are using an LED-equipped ESP module board, you can assign a LED pin to the tick-port for the WiFi connection monitoring without the external LED. The default pin is arduino valiant's <strong>LED_BUILTIN</strong>. You can refer to the Arduino IDE's variant information to find out which pin actually on the module assign to <strong>LED_BUILTIN</strong>.<sup id="fnref:3"><a class="footnote-ref" href="#fn:3">3</a></sup></p>
  673. <p><a href="apiconfig.html#tickeron"><em>AutoConnectConfig::tickerOn</em></a> specifies the active logic level of the flicker signal. This value indicates the active signal level when driving the ticker. For example, if the LED connected to tickPort lights by LOW, the tickerOn is <strong>LOW</strong>. The logic level of LED_BUILTIN for popular modules are as follows:</p>
  674. <table>
  675. <thead>
  676. <tr>
  677. <th>module</th>
  678. <th>Logic level</th>
  679. <th align="center">LED_BUILTIN Pin</th>
  680. <th>Arduino alias</th>
  681. </tr>
  682. </thead>
  683. <tbody>
  684. <tr>
  685. <td>NodeMCU V1.0</td>
  686. <td>Active-low</td>
  687. <td align="center">16</td>
  688. <td>D0</td>
  689. </tr>
  690. <tr>
  691. <td>WEMOS D1 mini</td>
  692. <td>Active-low</td>
  693. <td align="center">2</td>
  694. <td>D4</td>
  695. </tr>
  696. <tr>
  697. <td>SparkFun ESP8266 Thing</td>
  698. <td>Active-high</td>
  699. <td align="center">5</td>
  700. <td></td>
  701. </tr>
  702. <tr>
  703. <td>Adafruit Feather HUZZAH ESP8266</td>
  704. <td>Active-low</td>
  705. <td align="center">0</td>
  706. <td></td>
  707. </tr>
  708. <tr>
  709. <td>NodeMCU 32s</td>
  710. <td>Active-high</td>
  711. <td align="center">2</td>
  712. <td>T2</td>
  713. </tr>
  714. <tr>
  715. <td>LOLIN32 Pro</td>
  716. <td>Active-low</td>
  717. <td align="center">5</td>
  718. <td>SS</td>
  719. </tr>
  720. <tr>
  721. <td>SparkFun ESP32 Thing</td>
  722. <td>Active-high</td>
  723. <td align="center">5</td>
  724. <td></td>
  725. </tr>
  726. <tr>
  727. <td>Adafruit Feather HUZZAH32</td>
  728. <td>Active-high</td>
  729. <td align="center">13</td>
  730. <td>A12</td>
  731. </tr>
  732. </tbody>
  733. </table>
  734. <h2 id="usage-for-automatically-instantiated-esp8266webserverwebserver">Usage for automatically instantiated ESP8266WebServer/WebServer<a class="headerlink" href="#usage-for-automatically-instantiated-esp8266webserverwebserver" title="Permanent link">&para;</a></h2>
  735. <p>The Sketch can handle URL requests using ESP8266WebServer or WebServer that AutoConnect started internally. ESP8266WebServer/WebServer instantiated dynamically by AutoConnect can be referred to by <a href="api.html#host">AutoConnect::host</a> function. The Sketch can use the '<strong>on</strong>' function, '<strong>send</strong>' function, '<strong>client</strong>' function and others by ESP8266WebServer/WebServer reference of its return value.</p>
  736. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
  737. <span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
  738. <span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
  739. <span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span>
  740. <span style="color: #66d9ef">void</span> <span style="color: #a6e22e">handleRoot</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
  741. <span style="background-color: #49483e"> <span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">IntServer</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.host();</span>
  742. </span><span style="background-color: #49483e"> <span style="color: #f8f8f2">IntServer.send(</span><span style="color: #ae81ff">200</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/html&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Hello, world&quot;</span><span style="color: #f8f8f2">);</span>
  743. </span><span style="color: #f8f8f2">}</span>
  744. <span style="color: #66d9ef">void</span> <span style="color: #a6e22e">handleNotFound</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
  745. <span style="background-color: #49483e"> <span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">IntServer</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.host();</span>
  746. </span><span style="background-color: #49483e"> <span style="color: #f8f8f2">IntServer.send(</span><span style="color: #ae81ff">404</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/html&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Unknown.&quot;</span><span style="color: #f8f8f2">);</span>
  747. </span><span style="color: #f8f8f2">}</span>
  748. <span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
  749. <span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">r</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.begin();</span>
  750. <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(r)</span> <span style="color: #f8f8f2">{</span>
  751. <span style="background-color: #49483e"> <span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">IntServer</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.host();</span>
  752. </span><span style="background-color: #49483e"> <span style="color: #f8f8f2">IntServer.on(</span><span style="color: #e6db74">&quot;/&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">handleRoot);</span>
  753. </span> <span style="color: #f8f8f2">Portal.onNotFound(handleNotFound);</span> <span style="color: #75715e">// For only onNotFound.</span>
  754. <span style="color: #f8f8f2">}</span>
  755. <span style="color: #f8f8f2">}</span>
  756. <span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
  757. <span style="background-color: #49483e"> <span style="color: #f8f8f2">Portal.host().handleClient();</span>
  758. </span> <span style="color: #f8f8f2">Portal.handleRequest();</span>
  759. <span style="color: #75715e">/* or following one line code is equ.</span>
  760. <span style="color: #75715e"> Portal.handleClient();</span>
  761. <span style="color: #75715e"> */</span>
  762. <span style="color: #f8f8f2">}</span>
  763. </code></pre></div>
  764. <div class="admonition note">
  765. <p class="admonition-title">ESP8266WebServer/WebServer function should be called after AutoConnect::begin</p>
  766. <p>The Sketch cannot refer to an instance of ESP8266WebServer/WebServer until AutoConnect::begin completes successfully.</p>
  767. </div>
  768. <div class="admonition warning">
  769. <p class="admonition-title">Do not use with ESP8266WebServer::begin or WebServer::begin</p>
  770. <p>ESP8266WebServer/WebServer is already running inside the AutoConnect.</p>
  771. </div>
  772. <h2 id="use-with-the-pagebuilder-library">Use with the <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library<a class="headerlink" href="#use-with-the-pagebuilder-library" title="Permanent link">&para;</a></h2>
  773. <p>In ordinary, the URL handler will respond to the request from the client by sending some HTML. It will dynamically generate the HTML to respond to based on the sensing data etc. for the changing scene, but it contains elements of variable values in the middle of the HTML fixed string. Therefore, sketches tend to be in a tangled that repeats the logic for data handling and string splicing in turn, which tends to be less readable and maintainable.</p>
  774. <p><a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library is an HTML assembly aid. it can handle predefined HTML like the template and simplify an HTML string assemble logic, and also the generated HTML send automatically.</p>
  775. <p>An example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for <a href="https://github.com/Hieromon/PageBuilder">Github repository</a>.</p>
  776. <p><img src="images/PageBuilder.png" style="width:640px;"/></p>
  777. <script>
  778. window.onload = function() {
  779. Gifffer();
  780. };
  781. </script>
  782. <div class="footnote">
  783. <hr />
  784. <ol>
  785. <li id="fn:1">
  786. <p>The source code placement of common macros for AutoConnect since v0.9.7 has changed.&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
  787. </li>
  788. <li id="fn:2">
  789. <p>The ESP module pin mapping is different for each breakout. Definitions for assigning pin numbers to pin names usually exist in the variant definition program of Arduino core packages. (e.g. <a href="https://github.com/esp8266/Arduino/tree/master/variants">esp8266/arduino core</a>, <a href="https://github.com/espressif/arduino-esp32/tree/master/variants">arduino-esp32 core</a>)<br />
  790. You may find the definition as <code>pins_arduino.h</code>.&#160;<a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">&#8617;</a></p>
  791. </li>
  792. <li id="fn:3">
  793. <p>It's defined in the <code>pins_arduino.h</code> file, located in the sub-folder named <strong>variants</strong> wherein Arduino IDE installed folder.&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text">&#8617;</a></p>
  794. </li>
  795. </ol>
  796. </div>
  797. </article>
  798. </div>
  799. </div>
  800. </main>
  801. <footer class="md-footer">
  802. <div class="md-footer-nav">
  803. <nav class="md-footer-nav__inner md-grid" aria-label="Footer">
  804. <a href="adexterior.html" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
  805. <div class="md-footer-nav__button md-icon">
  806. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
  807. </div>
  808. <div class="md-footer-nav__title">
  809. <div class="md-ellipsis">
  810. <span class="md-footer-nav__direction">
  811. Previous
  812. </span>
  813. Customizing page appearance
  814. </div>
  815. </div>
  816. </a>
  817. <a href="acintro.html" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
  818. <div class="md-footer-nav__title">
  819. <div class="md-ellipsis">
  820. <span class="md-footer-nav__direction">
  821. Next
  822. </span>
  823. Custom Web pages with AutoConnect
  824. </div>
  825. </div>
  826. <div class="md-footer-nav__button md-icon">
  827. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
  828. </div>
  829. </a>
  830. </nav>
  831. </div>
  832. <div class="md-footer-meta md-typeset">
  833. <div class="md-footer-meta__inner md-grid">
  834. <div class="md-footer-copyright">
  835. <div class="md-footer-copyright__highlight">
  836. Copyright &copy; 2018-2020 Hieromon Ikasamo
  837. </div>
  838. Made with
  839. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  840. Material for MkDocs
  841. </a>
  842. </div>
  843. <div class="md-footer-social">
  844. <a href="https://github.com/Hieromon" target="_blank" rel="noopener" title="github.com" class="md-footer-social__link">
  845. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
  846. </a>
  847. <a href="https://twitter.com/hieromon" target="_blank" rel="noopener" title="twitter.com" class="md-footer-social__link">
  848. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
  849. </a>
  850. </div>
  851. </div>
  852. </div>
  853. </footer>
  854. </div>
  855. <script src="assets/javascripts/vendor.fd16492e.min.js"></script>
  856. <script src="assets/javascripts/bundle.7836ba4d.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
  857. <script>
  858. app = initialize({
  859. base: ".",
  860. features: [],
  861. search: Object.assign({
  862. worker: "assets/javascripts/worker/search.4ac00218.min.js"
  863. }, typeof search !== "undefined" && search)
  864. })
  865. </script>
  866. <script src="js/gifffer.min.js"></script>
  867. </body>
  868. </html>