howtoembed.html 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275
  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/howtoembed.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>How to embed - 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="#embed-the-autoconnect-to-the-sketch" 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. How to embed
  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--nested">
  138. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5" >
  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">
  185. <a href="adothers.html" class="md-nav__link">
  186. Other operation settings and controls
  187. </a>
  188. </li>
  189. </ul>
  190. </nav>
  191. </li>
  192. <li class="md-nav__item md-nav__item--nested">
  193. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" >
  194. <label class="md-nav__link" for="nav-6">
  195. Custom Web pages
  196. <span class="md-nav__icon md-icon"></span>
  197. </label>
  198. <nav class="md-nav" aria-label="Custom Web pages" data-md-level="1">
  199. <label class="md-nav__title" for="nav-6">
  200. <span class="md-nav__icon md-icon"></span>
  201. Custom Web pages
  202. </label>
  203. <ul class="md-nav__list" data-md-scrollfix>
  204. <li class="md-nav__item">
  205. <a href="acintro.html" class="md-nav__link">
  206. Custom Web pages with AutoConnect
  207. </a>
  208. </li>
  209. <li class="md-nav__item">
  210. <a href="acelements.html" class="md-nav__link">
  211. AutoConnectElements
  212. </a>
  213. </li>
  214. <li class="md-nav__item">
  215. <a href="acjson.html" class="md-nav__link">
  216. Custom Web pages with JSON
  217. </a>
  218. </li>
  219. <li class="md-nav__item">
  220. <a href="achandling.html" class="md-nav__link">
  221. Handling the custom Web pages
  222. </a>
  223. </li>
  224. </ul>
  225. </nav>
  226. </li>
  227. <li class="md-nav__item md-nav__item--nested">
  228. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7" >
  229. <label class="md-nav__link" for="nav-7">
  230. OTA Updates
  231. <span class="md-nav__icon md-icon"></span>
  232. </label>
  233. <nav class="md-nav" aria-label="OTA Updates" data-md-level="1">
  234. <label class="md-nav__title" for="nav-7">
  235. <span class="md-nav__icon md-icon"></span>
  236. OTA Updates
  237. </label>
  238. <ul class="md-nav__list" data-md-scrollfix>
  239. <li class="md-nav__item">
  240. <a href="otaupdate.html" class="md-nav__link">
  241. OTA Updates
  242. </a>
  243. </li>
  244. <li class="md-nav__item">
  245. <a href="otabrowser.html" class="md-nav__link">
  246. Using Web Browser
  247. </a>
  248. </li>
  249. <li class="md-nav__item">
  250. <a href="otaserver.html" class="md-nav__link">
  251. Using Update Server
  252. </a>
  253. </li>
  254. </ul>
  255. </nav>
  256. </li>
  257. <li class="md-nav__item md-nav__item--nested">
  258. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" >
  259. <label class="md-nav__link" for="nav-8">
  260. Library APIs
  261. <span class="md-nav__icon md-icon"></span>
  262. </label>
  263. <nav class="md-nav" aria-label="Library APIs" data-md-level="1">
  264. <label class="md-nav__title" for="nav-8">
  265. <span class="md-nav__icon md-icon"></span>
  266. Library APIs
  267. </label>
  268. <ul class="md-nav__list" data-md-scrollfix>
  269. <li class="md-nav__item">
  270. <a href="api.html" class="md-nav__link">
  271. AutoConnect API
  272. </a>
  273. </li>
  274. <li class="md-nav__item">
  275. <a href="apiaux.html" class="md-nav__link">
  276. AutoConnectAux API
  277. </a>
  278. </li>
  279. <li class="md-nav__item">
  280. <a href="apiconfig.html" class="md-nav__link">
  281. AutoConnectConfig API
  282. </a>
  283. </li>
  284. <li class="md-nav__item">
  285. <a href="apielements.html" class="md-nav__link">
  286. AutoConnectElements API
  287. </a>
  288. </li>
  289. <li class="md-nav__item">
  290. <a href="apiupdate.html" class="md-nav__link">
  291. AutoConnectUpdate API
  292. </a>
  293. </li>
  294. <li class="md-nav__item">
  295. <a href="apiextra.html" class="md-nav__link">
  296. Something extra
  297. </a>
  298. </li>
  299. </ul>
  300. </nav>
  301. </li>
  302. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  303. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9" checked>
  304. <label class="md-nav__link" for="nav-9">
  305. Examples
  306. <span class="md-nav__icon md-icon"></span>
  307. </label>
  308. <nav class="md-nav" aria-label="Examples" data-md-level="1">
  309. <label class="md-nav__title" for="nav-9">
  310. <span class="md-nav__icon md-icon"></span>
  311. Examples
  312. </label>
  313. <ul class="md-nav__list" data-md-scrollfix>
  314. <li class="md-nav__item md-nav__item--active">
  315. <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
  316. <label class="md-nav__link md-nav__link--active" for="__toc">
  317. How to embed
  318. <span class="md-nav__icon md-icon"></span>
  319. </label>
  320. <a href="howtoembed.html" class="md-nav__link md-nav__link--active">
  321. How to embed
  322. </a>
  323. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  324. <label class="md-nav__title" for="__toc">
  325. <span class="md-nav__icon md-icon"></span>
  326. Table of contents
  327. </label>
  328. <ul class="md-nav__list" data-md-scrollfix>
  329. <li class="md-nav__item">
  330. <a href="#embed-the-autoconnect-to-the-sketch" class="md-nav__link">
  331. Embed the AutoConnect to the Sketch
  332. </a>
  333. </li>
  334. <li class="md-nav__item">
  335. <a href="#what-does-this-example-do" class="md-nav__link">
  336. What does this example do?
  337. </a>
  338. </li>
  339. <li class="md-nav__item">
  340. <a href="#embed-autoconnect" class="md-nav__link">
  341. Embed AutoConnect
  342. </a>
  343. <nav class="md-nav" aria-label="Embed AutoConnect">
  344. <ul class="md-nav__list">
  345. <li class="md-nav__item">
  346. <a href="#pattern-a" class="md-nav__link">
  347. Pattern A.
  348. </a>
  349. </li>
  350. <li class="md-nav__item">
  351. <a href="#pattern-b" class="md-nav__link">
  352. Pattern B.
  353. </a>
  354. </li>
  355. </ul>
  356. </nav>
  357. </li>
  358. <li class="md-nav__item">
  359. <a href="#used-with-mqtt-as-a-client-application" class="md-nav__link">
  360. Used with MQTT as a client application
  361. </a>
  362. <nav class="md-nav" aria-label="Used with MQTT as a client application">
  363. <ul class="md-nav__list">
  364. <li class="md-nav__item">
  365. <a href="#advance-procedures" class="md-nav__link">
  366. Advance procedures
  367. </a>
  368. <nav class="md-nav" aria-label="Advance procedures">
  369. <ul class="md-nav__list">
  370. <li class="md-nav__item">
  371. <a href="#create-a-channel-on-thingspeak" class="md-nav__link">
  372. Create a channel on ThingSpeak
  373. </a>
  374. </li>
  375. <li class="md-nav__item">
  376. <a href="#get-channel-id-and-api-keys" class="md-nav__link">
  377. Get Channel ID and API Keys
  378. </a>
  379. </li>
  380. </ul>
  381. </nav>
  382. </li>
  383. <li class="md-nav__item">
  384. <a href="#the-sketch-publishes-messages" class="md-nav__link">
  385. the Sketch, Publishes messages
  386. </a>
  387. </li>
  388. <li class="md-nav__item">
  389. <a href="#publish-messages" class="md-nav__link">
  390. Publish messages
  391. </a>
  392. </li>
  393. <li class="md-nav__item">
  394. <a href="#how-embed-to-your-sketches" class="md-nav__link">
  395. How embed to your sketches
  396. </a>
  397. </li>
  398. </ul>
  399. </nav>
  400. </li>
  401. </ul>
  402. </nav>
  403. </li>
  404. <li class="md-nav__item">
  405. <a href="datatips.html" class="md-nav__link">
  406. Tips for data conversion
  407. </a>
  408. </li>
  409. <li class="md-nav__item">
  410. <a href="menuize.html" class="md-nav__link">
  411. Attach the menus
  412. </a>
  413. </li>
  414. <li class="md-nav__item">
  415. <a href="wojson.html" class="md-nav__link">
  416. Custom Web pages w/o JSON
  417. </a>
  418. </li>
  419. </ul>
  420. </nav>
  421. </li>
  422. <li class="md-nav__item md-nav__item--nested">
  423. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10" >
  424. <label class="md-nav__link" for="nav-10">
  425. Appendix
  426. <span class="md-nav__icon md-icon"></span>
  427. </label>
  428. <nav class="md-nav" aria-label="Appendix" data-md-level="1">
  429. <label class="md-nav__title" for="nav-10">
  430. <span class="md-nav__icon md-icon"></span>
  431. Appendix
  432. </label>
  433. <ul class="md-nav__list" data-md-scrollfix>
  434. <li class="md-nav__item">
  435. <a href="lsbegin.html" class="md-nav__link">
  436. Inside AutoConnect::begin
  437. </a>
  438. </li>
  439. <li class="md-nav__item">
  440. <a href="credit.html" class="md-nav__link">
  441. Saved credentials access
  442. </a>
  443. </li>
  444. <li class="md-nav__item">
  445. <a href="acupload.html" class="md-nav__link">
  446. File upload handler
  447. </a>
  448. </li>
  449. <li class="md-nav__item">
  450. <a href="colorized.html" class="md-nav__link">
  451. Custom colorized
  452. </a>
  453. </li>
  454. <li class="md-nav__item">
  455. <a href="changelabel.html" class="md-nav__link">
  456. Change label text
  457. </a>
  458. </li>
  459. </ul>
  460. </nav>
  461. </li>
  462. <li class="md-nav__item">
  463. <a href="faq.html" class="md-nav__link">
  464. FAQ
  465. </a>
  466. </li>
  467. <li class="md-nav__item">
  468. <a href="changelog.html" class="md-nav__link">
  469. Change log
  470. </a>
  471. </li>
  472. <li class="md-nav__item">
  473. <a href="license.html" class="md-nav__link">
  474. License
  475. </a>
  476. </li>
  477. </ul>
  478. </nav>
  479. </div>
  480. </div>
  481. </div>
  482. <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
  483. <div class="md-sidebar__scrollwrap">
  484. <div class="md-sidebar__inner">
  485. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  486. <label class="md-nav__title" for="__toc">
  487. <span class="md-nav__icon md-icon"></span>
  488. Table of contents
  489. </label>
  490. <ul class="md-nav__list" data-md-scrollfix>
  491. <li class="md-nav__item">
  492. <a href="#embed-the-autoconnect-to-the-sketch" class="md-nav__link">
  493. Embed the AutoConnect to the Sketch
  494. </a>
  495. </li>
  496. <li class="md-nav__item">
  497. <a href="#what-does-this-example-do" class="md-nav__link">
  498. What does this example do?
  499. </a>
  500. </li>
  501. <li class="md-nav__item">
  502. <a href="#embed-autoconnect" class="md-nav__link">
  503. Embed AutoConnect
  504. </a>
  505. <nav class="md-nav" aria-label="Embed AutoConnect">
  506. <ul class="md-nav__list">
  507. <li class="md-nav__item">
  508. <a href="#pattern-a" class="md-nav__link">
  509. Pattern A.
  510. </a>
  511. </li>
  512. <li class="md-nav__item">
  513. <a href="#pattern-b" class="md-nav__link">
  514. Pattern B.
  515. </a>
  516. </li>
  517. </ul>
  518. </nav>
  519. </li>
  520. <li class="md-nav__item">
  521. <a href="#used-with-mqtt-as-a-client-application" class="md-nav__link">
  522. Used with MQTT as a client application
  523. </a>
  524. <nav class="md-nav" aria-label="Used with MQTT as a client application">
  525. <ul class="md-nav__list">
  526. <li class="md-nav__item">
  527. <a href="#advance-procedures" class="md-nav__link">
  528. Advance procedures
  529. </a>
  530. <nav class="md-nav" aria-label="Advance procedures">
  531. <ul class="md-nav__list">
  532. <li class="md-nav__item">
  533. <a href="#create-a-channel-on-thingspeak" class="md-nav__link">
  534. Create a channel on ThingSpeak
  535. </a>
  536. </li>
  537. <li class="md-nav__item">
  538. <a href="#get-channel-id-and-api-keys" class="md-nav__link">
  539. Get Channel ID and API Keys
  540. </a>
  541. </li>
  542. </ul>
  543. </nav>
  544. </li>
  545. <li class="md-nav__item">
  546. <a href="#the-sketch-publishes-messages" class="md-nav__link">
  547. the Sketch, Publishes messages
  548. </a>
  549. </li>
  550. <li class="md-nav__item">
  551. <a href="#publish-messages" class="md-nav__link">
  552. Publish messages
  553. </a>
  554. </li>
  555. <li class="md-nav__item">
  556. <a href="#how-embed-to-your-sketches" class="md-nav__link">
  557. How embed to your sketches
  558. </a>
  559. </li>
  560. </ul>
  561. </nav>
  562. </li>
  563. </ul>
  564. </nav>
  565. </div>
  566. </div>
  567. </div>
  568. <div class="md-content">
  569. <article class="md-content__inner md-typeset">
  570. <h1>How to embed</h1>
  571. <h2 id="embed-the-autoconnect-to-the-sketch">Embed the AutoConnect to the Sketch<a class="headerlink" href="#embed-the-autoconnect-to-the-sketch" title="Permanent link">&para;</a></h2>
  572. <p>Here hold 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>
  573. <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>
  574. <p>Uses the web interface to light the LED connected to the D0 (sometimes called <em>BUILTIN_LED</em>) port of the <strong><a href="https://github.com/nodemcu/nodemcu-devkit-v1.0">NodeMCU</a></strong> module like the following animation.</p>
  575. <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 will blink according to the value with clicked by the button. This example is a typical sketch of manipulating ESP8266's GPIO via WLAN.</p>
  576. <p><img data-gifffer="images/ac2.gif" /></p>
  577. <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>
  578. <h2 id="embed-autoconnect">Embed AutoConnect<a class="headerlink" href="#embed-autoconnect" title="Permanent link">&para;</a></h2>
  579. <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>
  580. <p>Bind to ESP8266WebServer, performs handleClient with handleRequest.</p>
  581. <p><img src="images/handleClient.svg" /></p>
  582. <div class="admonition hint">
  583. <p class="admonition-title">In what situations should the handleRequest be used.</p>
  584. <p>It is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible.</p>
  585. </div>
  586. <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>
  587. <p>Declare only AutoConnect, performs handleClient.</p>
  588. <p><img src="images/handlePortal.svg" /></p>
  589. <h2 id="used-with-mqtt-as-a-client-application">Used with MQTT as a client application<a class="headerlink" href="#used-with-mqtt-as-a-client-application" title="Permanent link">&para;</a></h2>
  590. <p>The effect of AutoConnect is not only for ESP8266/ESP32 as the web server. It has advantages for something WiFi client as well. For example, AutoConnect is also convenient for publishing MQTT messages from various measurement points. Even if the SSID is different for each measurement point, it is not necessary to modify the Sketch.</p>
  591. <p>This example tries to publish the WiFi signal strength of ESP8266 with MQTT. It uses the <a href="https://thingspeak.com/">ThingSpeak</a> for MQTT broker. ESP8266 publishes the RSSI value to the channel created on ThingSpeak as <a href="https://github.com/knolleary/pubsubclient">MQTT client</a>. This example is well suited to demonstrate the usefulness of AutoConnect, as RSSI values are measured at each access point usually. Just adding a few lines of code makes it unnecessary to upload sketches with the different SSIDs rewrite for each access point.</p>
  592. <p><img src="images/ChannelStatus.png" width="70%"/></p>
  593. <h3 id="advance-procedures">Advance procedures<a class="headerlink" href="#advance-procedures" title="Permanent link">&para;</a></h3>
  594. <ul>
  595. <li>Arduino Client for MQTT - It's the <a href="https://github.com/knolleary/pubsubclient">PubSubClient</a>, install it to Arduino IDE. If you have the latest version already, this step does not need.</li>
  596. <li>Create a channel on ThingSpeak.</li>
  597. <li>Get the Channel API Keys from ThingSpeak, put its keys to the Sketch.</li>
  598. </ul>
  599. <p>The ThingSpeak is the open IoT platform. It is capable of sending data privately to the cloud and analyzing, visualizing its data. If you do not have an account of ThingSpeak, you need that account to proceed further. ThingSpeak has the free plan for the account which uses within the scope of this example.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup> You can sign up with the <a href="https://thingspeak.com/users/sign_up">ThingSpeak sign-up page</a>.</p>
  600. <div class="admonition warning">
  601. <p class="admonition-title">Whether you should do sign-up or not.</p>
  602. <p>You are entrusted with the final judgment of account creation for ThingSpeak. Create an account at your own risk.</p>
  603. </div>
  604. <h4 id="create-a-channel-on-thingspeak">Create a channel on ThingSpeak<a class="headerlink" href="#create-a-channel-on-thingspeak" title="Permanent link">&para;</a></h4>
  605. <p>Sign in ThingSpeak. Select <strong>Channels</strong> to show the <strong>My Channels</strong>, then click <strong>New Channel</strong>.</p>
  606. <p>At the <strong>New Channel</strong> screen, enter each field as a below. And click <strong>Save Channel</strong> at the bottom of the screen to save.</p>
  607. <ul>
  608. <li>Name: <code>ESP8266 Signal Strength</code></li>
  609. <li>Description: <code>ESP8266 RSSI publish</code></li>
  610. <li>Field1: <code>RSSI</code></li>
  611. </ul>
  612. <p><img src="images/CreateChannel.png" width="70%"/></p>
  613. <h4 id="get-channel-id-and-api-keys">Get Channel ID and API Keys<a class="headerlink" href="#get-channel-id-and-api-keys" title="Permanent link">&para;</a></h4>
  614. <p>The channel successfully created, you can see the channel status screen as a below. <strong>Channel ID</strong> is displayed there.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>
  615. <p><img src="images/ChannelID.png" width="70%"/></p>
  616. <p>Here, switch the channel status tab to <strong>API Keys</strong>. The API key required to publish the message is the <strong>Write API Key</strong>.</p>
  617. <p><img src="images/APIKeys.png" width="70%"/></p>
  618. <p>The last key you need is the <strong>User API Key</strong> and can be confirmed it in the user profile. Pull down <strong>Account</strong> from the top menu, select <strong>My profile</strong>. Then you can see the ThingSpeak settings and the <strong>User API Key</strong> is displayed middle of this screen.</p>
  619. <p><img src="images/USERKey.png" width="70%"/></p>
  620. <h3 id="the-sketch-publishes-messages">the Sketch, Publishes messages<a class="headerlink" href="#the-sketch-publishes-messages" title="Permanent link">&para;</a></h3>
  621. <p>The complete code of the Sketch is <a href="https://github.com/Hieromon/AutoConnect/blob/master/examples/mqttRSSI/mqttRSSI.ino">mqttRSSI.ino</a> in the <a href="https://github.com/Hieromon/AutoConnect">AutoConnect repository</a>. Replace the following #define in a sketch with <strong>User API Key</strong>, <strong>Write API Key</strong> and <strong>Channel ID</strong>. After Keys updated, compile the Sketch and upload it.</p>
  622. <div class="highlight" style="background: #272822"><pre style="line-height: 125%; margin: 0;"><span></span><code><span style="color: #75715e">#define MQTT_USER_KEY &quot;****************&quot; // Replace to User API Key.</span>
  623. <span style="color: #75715e">#define CHANNEL_ID &quot;******&quot; // Replace to Channel ID.</span>
  624. <span style="color: #75715e">#define CHANNEL_API_KEY_WR &quot;****************&quot; // Replace to the write API Key.</span>
  625. </code></pre></div>
  626. <h3 id="publish-messages">Publish messages<a class="headerlink" href="#publish-messages" title="Permanent link">&para;</a></h3>
  627. <p>After upload and reboot complete, the message publishing will start via the access point now set. The message carries RSSI as the current WiFi signal strength. The signal strength variations in RSSI are displayed on ThingSpeak's Channel status screen.</p>
  628. <h3 id="how-embed-to-your-sketches">How embed to your sketches<a class="headerlink" href="#how-embed-to-your-sketches" title="Permanent link">&para;</a></h3>
  629. <p>For the client sketches, the code required to connect to WiFi is the following four parts only.</p>
  630. <ol>
  631. <li>
  632. <p>#include directive<sup id="fnref:3"><a class="footnote-ref" href="#fn:3">3</a></sup></p>
  633. <p>Include <code>AutoConnect.h</code> header file behind the include of <code>ESP8266WiFi.h</code>.</p>
  634. <p><img src="images/include.png" width="55%"/></p>
  635. </li>
  636. <li>
  637. <p>Declare AutoConnect</p>
  638. <p>The declaration of the <a href="api.html#autoconnect"><strong>AutoConnect variable</strong></a> is not accompanied by ESP8266WebServer.</p>
  639. <p><img src="images/declare.png" width="55%"/></p>
  640. </li>
  641. <li>
  642. <p>Invokes "begin()"</p>
  643. <p>Call <a href="api.html#begin"><strong>AutoConnect::begin</strong></a>. If you need to assign a static IP address, executes <a href="apiconfig.html">AutoConnectConfig</a> before that. </p>
  644. <p><img src="images/begin.png" width="55%"/></p>
  645. </li>
  646. <li>
  647. <p>Performs "handleClent()" in "loop()"</p>
  648. <p>Invokes <a href="api.html#handleclient"><strong>AutoConnect::handleClient()</strong></a> at inside <code>loop()</code> to enable the AutoConnect menu.</p>
  649. <p><img src="images/handleClient.png" width="55%"/></p>
  650. </li>
  651. </ol>
  652. <script>
  653. window.onload = function() {
  654. Gifffer();
  655. };
  656. </script>
  657. <div class="footnote">
  658. <hr />
  659. <ol>
  660. <li id="fn:1">
  661. <p>As of March 21, 2018.&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
  662. </li>
  663. <li id="fn:2">
  664. <p>'454951' in the example above, but your channel ID should be different.&#160;<a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">&#8617;</a></p>
  665. </li>
  666. <li id="fn:3">
  667. <p><code>#include &lt;ESP8266WebServer.h&gt;</code> does not necessary for uses only client.&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text">&#8617;</a></p>
  668. </li>
  669. </ol>
  670. </div>
  671. </article>
  672. </div>
  673. </div>
  674. </main>
  675. <footer class="md-footer">
  676. <div class="md-footer-nav">
  677. <nav class="md-footer-nav__inner md-grid" aria-label="Footer">
  678. <a href="apiextra.html" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
  679. <div class="md-footer-nav__button md-icon">
  680. <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>
  681. </div>
  682. <div class="md-footer-nav__title">
  683. <div class="md-ellipsis">
  684. <span class="md-footer-nav__direction">
  685. Previous
  686. </span>
  687. Something extra
  688. </div>
  689. </div>
  690. </a>
  691. <a href="datatips.html" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
  692. <div class="md-footer-nav__title">
  693. <div class="md-ellipsis">
  694. <span class="md-footer-nav__direction">
  695. Next
  696. </span>
  697. Tips for data conversion
  698. </div>
  699. </div>
  700. <div class="md-footer-nav__button md-icon">
  701. <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>
  702. </div>
  703. </a>
  704. </nav>
  705. </div>
  706. <div class="md-footer-meta md-typeset">
  707. <div class="md-footer-meta__inner md-grid">
  708. <div class="md-footer-copyright">
  709. <div class="md-footer-copyright__highlight">
  710. Copyright &copy; 2018-2020 Hieromon Ikasamo
  711. </div>
  712. Made with
  713. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  714. Material for MkDocs
  715. </a>
  716. </div>
  717. <div class="md-footer-social">
  718. <a href="https://github.com/Hieromon" target="_blank" rel="noopener" title="github.com" class="md-footer-social__link">
  719. <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>
  720. </a>
  721. <a href="https://twitter.com/hieromon" target="_blank" rel="noopener" title="twitter.com" class="md-footer-social__link">
  722. <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>
  723. </a>
  724. </div>
  725. </div>
  726. </div>
  727. </footer>
  728. </div>
  729. <script src="assets/javascripts/vendor.fd16492e.min.js"></script>
  730. <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>
  731. <script>
  732. app = initialize({
  733. base: ".",
  734. features: [],
  735. search: Object.assign({
  736. worker: "assets/javascripts/worker/search.4ac00218.min.js"
  737. }, typeof search !== "undefined" && search)
  738. })
  739. </script>
  740. <script src="js/gifffer.min.js"></script>
  741. </body>
  742. </html>