{"id":107302,"date":"2021-04-25T04:31:00","date_gmt":"2021-04-25T04:31:00","guid":{"rendered":"https:\/\/randomnerdtutorials.com\/?p=107302"},"modified":"2024-12-03T15:17:23","modified_gmt":"2024-12-03T15:17:23","slug":"firebase-esp32-esp8266-ebook","status":"publish","type":"post","link":"https:\/\/randomnerdtutorials.com\/firebase-esp32-esp8266-ebook\/","title":{"rendered":"Firebase Web App with the ESP32 and ESP8266 eBook"},"content":{"rendered":"\n<center><h1>Firebase Web App with the ESP32 and ESP8266 eBook<\/h1><\/center>\n\n\n\n<p class=\"has-text-align-center\">Build a Firebase Web App to Control Outputs and Monitor Sensors from Anywhere (Includes Login\/Logout Authentication)<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=500%2C500&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Build a Firebase Web App to Control Outputs Monitor Sensors from Anywhere Includes Login Logout Authentication\" class=\"wp-image-107477\" style=\"width:328px;height:auto\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=300%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=150%2C150&amp;quality=100&amp;strip=all&amp;ssl=1 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center\"><a class=\"button rntyellow\" href=\"#sign-up\">GET THE EBOOK \u00bb<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><\/p>\n\n\n\n<p>Build a Firebase web application that can monitor and control your ESP32 and ESP8266 boards <strong>from anywhere<\/strong> in the world. The application allows you to control the ESP GPIOs using buttons, sliders and send input data. It also displays sensor readings sent by the ESP board. All the <strong>data is saved on the Firebase Realtime Database<\/strong>. The web application is <strong>protected with login<\/strong> using email and password, and your <strong>database is protected using database rules<\/strong>.<\/p>\n\n\n\n<p><strong>What is Firebase?<\/strong><\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"750\" height=\"211\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/08\/Firebase-logo.png?resize=750%2C211&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Firebase logo\" class=\"wp-image-105820\" style=\"width:380px;height:auto\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/08\/Firebase-logo.png?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/08\/Firebase-logo.png?resize=300%2C84&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>Firebase is Google&#8217;s mobile application development platform that helps you build, improve, and grow your app. It has many services used to manage data from any android, IOS, or web application. We\u2019ll focus on the building process.<\/p>\n\n\n\n<p>The tools provided by Firebase cover many of the backend services that you would normally have to build yourself like authentication, databases, hosting, and so on\u2014those are the Firebase services that we\u2019ll use and explore throughout the eBook.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Web <strong>App Features<\/strong><\/h2>\n\n\n\n<p>The following picture shows a sneak peek of the web app you&#8217;ll build throughout this ebook.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"750\" height=\"500\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2022\/04\/Firebase-Web-App-Sneak-peek.png?resize=750%2C500&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Firebase Web App ESP32 ESP8266\" class=\"wp-image-110781\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2022\/04\/Firebase-Web-App-Sneak-peek.png?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2022\/04\/Firebase-Web-App-Sneak-peek.png?resize=300%2C200&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>Here\u2019s a summary of the app&#8217;s main features:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The ESP32\/ESP8266 can be controlled and monitored <strong>from anywhere<\/strong> using the Firebase Web App we&#8217;ll build.<\/li>\n\n\n\n<li>The Firebase Web App is <strong>protected with login<\/strong> using email and password. Only an authorized user can access the data. Additionally, your <strong>database is protected by database rules<\/strong>.<\/li>\n\n\n\n<li>The web app displays <strong>two buttons<\/strong> to control two GPIOs ON and OFF, <strong>two sliders<\/strong> to control PWM outputs, an <strong>input field<\/strong> to insert a message, <strong>cards<\/strong>, <strong>charts, <\/strong>and a <strong>table <\/strong>to display sensor readings.<\/li>\n\n\n\n<li>All the <strong>data is saved on the Firebase Realtime Database<\/strong>.<\/li>\n\n\n\n<li>The web app gets the new readings from the database nodes that the ESP is publishing in.<\/li>\n\n\n\n<li>The <strong>ESP boards detect database changes<\/strong> and update the peripherals states almost instantaneously.<\/li>\n\n\n\n<li>You can <strong>access your Firebase Web App from anywhere<\/strong> in the world to interact with your ESP32\/ESP8266 using a custom domain or the Firebase-generated domain name.<\/li>\n\n\n\n<li>The web app is <strong>mobile responsive<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">What\u2019s inside the eBook?<\/h2>\n\n\n\n<p>The eBook contains the step-by-step instructions to build a Firebase Web App to control and monitor the ESP32 and ESP8266 boards. We&#8217;ll use the following Firebase services: Authentication, Realtime Database, and Hosting; and you&#8217;ll program the ESP32\/ESP8266 boards to interact with the web app. The boards are programmed using the Arduino core.<\/p>\n\n\n\n<p>The eBook is divided into 6 parts:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Part 1<\/strong>: <strong>Creating a Firebase Project<\/strong>\u2014you&#8217;ll learn how to create a Firebase project and set up all the necessary services (Authentication and Firebase Realtime Database).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Part 2: Organizing your Database and Database Rules<\/strong>\u2014we\u2019ll show how to organize your database and set up database rules to protect your data.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Part 3: ESP32\/ESP8266: Interacting with the Realtime Database<\/strong>\u2014interact with the Firebase Realtime Database using your ESP32 and ESP8266 boards: learn how to read and send data to the database.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Part 4<\/strong>: <strong>Creating the Firebase Web App<\/strong>\u2014set up HTML and JavaScript files to create the web app to control and monitor your boards.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Part 5<\/strong>: <strong>Hosting your Web App (Custom Domain Name)<\/strong>\u2014host your web app and set up a custom domain name to access your web app anywhere. Alternatively, you can also access your app using the Firebase-generated domain (for free).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>(NEW) Part 6: ESP32\/ESP8266 Datalogging to the Realtime Database<\/strong>\u2014you\u2019ll take your project further by adding a datalogging feature. You\u2019ll learn how to log data with timestamps to have a record of your data history. You\u2019ll display the data on the web app on charts and a table.<\/li>\n<\/ul>\n\n\n\n<p><strong>Here\u2019s what you\u2019ll have access to when you get the eBook:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>eBook in PDF format (6 Parts, ~230 pages)<\/li>\n\n\n\n<li>Source Code + Project Files (Arduino sketches, VS Code project folders, HTML and JavaScript files to build the web app)<\/li>\n\n\n\n<li>Unlimited Free Updates (includes future eBook updates)<\/li>\n\n\n\n<li>Access to a private Forum to ask questions<\/li>\n\n\n\n<li>Exclusive access to our Facebook group community<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>What you\u2019ll learn<\/strong>:<\/h2>\n\n\n\n<p>By following our project, you&#8217;ll learn about the following subjects:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"422\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-ESP32-ESP8266-Demo.jpg?resize=750%2C422&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-107392\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-ESP32-ESP8266-Demo.jpg?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-ESP32-ESP8266-Demo.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Firebase Projects:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Create a Firebase project;<\/li>\n\n\n\n<li>Add authentication to your Firebase project (email and password);<\/li>\n\n\n\n<li>Add a Realtime Database (RTDB) to your project to save data in JSON format;<\/li>\n\n\n\n<li>Organize your RTDB;<\/li>\n\n\n\n<li>Protect the RTDB using database rules;<\/li>\n\n\n\n<li>Add a web app to your Firebase project to control and monitor your ESP32 and ESP8266 boards;<\/li>\n\n\n\n<li>Host your web app in Firebase servers;<\/li>\n\n\n\n<li>Add a custom domain to your web app\u2014 this requires that you buy a domain name (this step is optional).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>ESP32\/ESP8266:&nbsp;<\/strong>\n<ul class=\"wp-block-list\">\n<li>Authenticate the ESP32 or ESP8266 board as an authorized user with email and password;<\/li>\n\n\n\n<li>Write data to the Firebase Realtime Database;<\/li>\n\n\n\n<li>Stream database\u2014detect any database changes;<\/li>\n\n\n\n<li>Run tasks depending on the detected changes;<\/li>\n\n\n\n<li>Log data with timestamps using the ESP32\/ESP8266 to the Firebase.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Firebase Web App:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Create a web app and connect it to your Firebase project;<\/li>\n\n\n\n<li>Build the webpage for your app using basic HTML and bootstrap (CSS framework): login\/logout modals, buttons, sliders, table for sensor readings, and input fields;<\/li>\n\n\n\n<li>Listen to database changes to update the web app data using JavaScript;<\/li>\n\n\n\n<li>Write to the database to control the ESP32 or ESP8266 outputs using JavaScript;<\/li>\n\n\n\n<li>Query and retrieve data to display it on charts and tables.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><em>Continue reading for the complete Table of Contents&#8230;<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">PART 0: Getting Started<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part0.jpg?resize=500%2C281&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Firebase with ESP eBook - Part 0: Introduction\" class=\"wp-image-107311\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part0.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part0.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>Part 0 introduces the project. It covers what you&#8217;ll learn, how to follow this project and some recommended prerequisites. We&#8217;ll also look at the project&#8217;s main features and give you a quick introduction to Firebase.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">PART 1: Creating a Firebase Project<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part1.jpg?resize=500%2C281&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Firebase with ESP eBook - Part 1: Creating a Firebase Project\" class=\"wp-image-107312\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part1.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part1.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>In this part, you&#8217;ll learn how to create a Firebase project and set up the authentication methods and the realtime database.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">PART 2: Organizing Your Database and Database Rules<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part2.jpg?resize=500%2C281&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Firebase with ESP eBook - Part 2: Organizing Your Database and Database Rules\" class=\"wp-image-107313\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part2.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part2.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>Learn how to organize the data in the realtime database to make it easier to set up database rules. Create database nodes to save the data and apply database rules to restrict access.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">PART 3: ESP32\/ESP8266: Interacting with the Realtime Database<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part3.jpg?resize=500%2C281&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Firebase with ESP eBook - Part 3: ESP32\/ESP8266: Interacting with the Realtime Database\" class=\"wp-image-107314\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part3.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part3.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>This section will teach you how to interact with the realtime database using the ESP32 or ESP8266 boards. You&#8217;ll learn to authenticate with the ESP board, read and write to the database and automatically detect any database changes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">PART 4: Creating a Firebase Web App<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part4.jpg?resize=500%2C281&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Firebase with ESP eBook - Part 4: Creating a Firebase Web App\" class=\"wp-image-107315\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part4.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part4.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>In this Part, you\u2019ll create a Firebase web app to control and monitor your ESP32\/ESP8266 board from anywhere. The web app contains buttons and sliders to control the GPIOs, an input field to write a text message to the OLED, and a table to display sensor readings.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">PART 5: Hosting Your Web App (Custom Domain Name)<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part5.jpg?resize=500%2C281&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Firebase with ESP eBook - Part 5: Creating a Firebase Web App\" class=\"wp-image-107316\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part5.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-Web-App-eBpok-Part5.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>Take a step further and add a custom domain name to access your web app (this part is actually pretty simple and it only takes about 10 minutes).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">PART 6: ESP32\/ESP8266 Datalogging to the Realtime Database<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2022\/04\/Firebase-Web-App-eBpok-Part6.jpg?resize=500%2C281&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-110775\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2022\/04\/Firebase-Web-App-eBpok-Part6.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2022\/04\/Firebase-Web-App-eBpok-Part6.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>You\u2019ll take your project further by adding a datalogging feature. You\u2019ll learn how to log data with timestamps to have a record of your data history. You\u2019ll display the data on the web app on charts and a table.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Prerequisites (recommended but not mandatory)<\/strong><\/h2>\n\n\n\n<p>To get a better experience following along with this project, we recommend having some previous knowledge about the following subjects:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Basic programming of the ESP32 and\/or ESP8266 with the Arduino core<\/strong>, like controlling outputs and reading sensors. To get familiar with these boards, you can follow our free tutorials or our premium courses:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/projects-esp32\/\" target=\"_blank\" rel=\"noreferrer noopener\">Free ESP32 Tutorials<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/projects-esp8266\/\" target=\"_blank\" rel=\"noreferrer noopener\">Free ESP8266 Tutorials<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/learn-esp32-with-arduino-ide\/\" target=\"_blank\" rel=\"noreferrer noopener\">Learn ESP32 with Arduino IDE (eBook + Video course)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/home-automation-using-esp8266\/\" target=\"_blank\" rel=\"noreferrer noopener\">Home Automation using ESP8266 (eBook + videos)<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Being familiar with VS Code <\/strong>editor and VS Code with the PlatformIO extension. You can follow the next tutorials to get started with this IDE quickly:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/vs-code-platformio-ide-esp32-esp8266-arduino\/\" target=\"_blank\" rel=\"noreferrer noopener\">Getting Started with VS Code and PlatformIO IDE for ESP32 and ESP8266<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/vs-code-workspaces-esp32-esp8266\/\" target=\"_blank\" rel=\"noreferrer noopener\">VS Code Workspaces with ESP32 and ESP8266 Projects<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Basic knowledge of HTML, CSS, and JavaScript<\/strong>. We assume that you have basic knowledge about HTML (basic HTML tags), CSS, and JavaScript (variables, functions, and events). A good place to get started quickly with the basics is the<a href=\"https:\/\/www.w3schools.com\/html\/\" target=\"_blank\" rel=\"noreferrer noopener\"> W3schools website<\/a>. We also cover these topics in our<a href=\"https:\/\/randomnerdtutorials.com\/build-web-servers-esp32-esp8266-ebook\/\" target=\"_blank\" rel=\"noreferrer noopener\"> Build Web Servers with the ESP32 and ESP8266 eBook<\/a>.<\/li>\n<\/ul>\n\n\n\n<p><strong>If you don&#8217;t have previous knowledge about these topics, you can still follow along <\/strong>as we provide step-by-step instructions. However, it might be more challenging to understand some steps and modify the project for your specific needs. Nonetheless, we\u2019re sure you\u2019ll also be able to get the app working.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">What do you need to follow the eBook?<\/h2>\n\n\n\n<p>To follow the project in the eBook you can either use an ESP32 or ESP8266 board. We usually use the <em>ESP32 DEVKIT DOIT<\/em> board, but you can use any other ESP32 board.<\/p>\n\n\n\n<p>As for the ESP8266, we use the <em>ESP8266-12E NodeMCU Kit<\/em>, but once again you are free to use any other ESP8266 board.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"421\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/08\/esp32-vs-esp8266-devlopment-boards.jpg?resize=750%2C421&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32 vs ESP8266 Development Boards\" class=\"wp-image-88121\" style=\"width:568px;height:auto\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/08\/esp32-vs-esp8266-devlopment-boards.jpg?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/08\/esp32-vs-esp8266-devlopment-boards.jpg?resize=300%2C168&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>You only need a few electronics components to follow along. Here&#8217;s the complete list:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ESP32 or ESP8266 board;<\/li>\n\n\n\n<li>BME280 or any other sensor you&#8217;re familiar with;<\/li>\n\n\n\n<li>4x LEDs;<\/li>\n\n\n\n<li>4x 220 Ohm resistors;<\/li>\n\n\n\n<li>SSD1306 0.96inch OLED display;<\/li>\n\n\n\n<li>Breadboard;&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"https:\/\/makeradvisor.com\/tools\/jumper-wires-kit-120-pieces\/\">&nbsp;<\/a><\/li>\n\n\n\n<li>Jumper wires.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Invitation to Join our Private Forum!<\/h2>\n\n\n\n<p>This eBook comes with an opportunity to join our private Forum of like-minded people where you can ask questions about the eBook or other related subjects. You&#8217;ll get direct help from Rui and Sara or from other active members of the community.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"599\" height=\"423\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2018\/03\/forum-questions-and-answers.png?resize=599%2C423&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-54929\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2018\/03\/forum-questions-and-answers.png?w=599&amp;quality=100&amp;strip=all&amp;ssl=1 599w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2018\/03\/forum-questions-and-answers.png?resize=300%2C212&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 599px) 100vw, 599px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"sign-up\">Download the eBook<\/h2>\n\n\n\n<div class=\"wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<ul class=\"wp-block-list bulletnospace\">\n<li><strong>Updated July, 2023<\/strong><\/li>\n\n\n\n<li>PDF eBook with ~230 pages<\/li>\n\n\n\n<li>Source code and all files: Arduino sketches, HTML, and JavaScript<\/li>\n\n\n\n<li>Step-by-step instructions<\/li>\n\n\n\n<li>Code explanation<\/li>\n\n\n\n<li><span style=\"font-size: inherit; background-color: initial;\">Unlimited Updates<\/span><\/li>\n\n\n\n<li>Exclusive access to a Private Forum<\/li>\n\n\n\n<li><span style=\"font-size: inherit; background-color: initial;\">English language<\/span><\/li>\n\n\n\n<li>Created by Rui Santos and Sara Santos<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/rntlab.com\/checkout\/?add-to-cart=89489\" target=\"_blank\" rel=\"noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=500%2C500&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-107477\" style=\"width:326px;height:auto\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=300%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=150%2C150&amp;quality=100&amp;strip=all&amp;ssl=1 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><\/figure><\/div><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><a class=\"button rntyellow\" href=\"https:\/\/rntlab.com\/checkout\/?add-to-cart=89489\">GET THE EBOOK | $29 USD \u00bb<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong><a href=\"https:\/\/rntlab.com\/checkout\/?add-to-cart=89489\">Click here to get the eBook | $29 USD<\/a><\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center\"><\/p>\n\n\n\n<p><strong>Note:<\/strong>&nbsp;after your purchase,&nbsp;you receive an email with a username and password that you use to access the members&#8217; area and download the PDF eBook.<\/p>\n\n\n\n<p>Have questions?&nbsp;Email me at <a href=\"https:\/\/randomnerdtutorials.com\/support\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/randomnerdtutorials.com\/support<\/a>&nbsp;anytime for any reason.<\/p>\n\n\n\n<p>You won\u2019t regret it. My 60-day money-back guarantee backs up every word in this message. Proceed with confidence.&nbsp;See you inside,<\/p>\n\n\n\n<p>-Rui Santos and Sara Santos<\/p>\n\n\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"81987\" class=\"elementor elementor-81987\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8061b91 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8061b91\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-6e373e8\" data-id=\"6e373e8\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d02f327 elementor-widget elementor-widget-image\" data-id=\"d02f327\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"134\" height=\"133\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/03\/money-back-logo.png?resize=134%2C133&amp;quality=100&amp;strip=all&amp;ssl=1\" class=\"attachment-thumbnail size-thumbnail wp-image-81988\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/03\/money-back-logo.png?w=134&amp;quality=100&amp;strip=all&amp;ssl=1 134w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/03\/money-back-logo.png?resize=80%2C80&amp;quality=100&amp;strip=all&amp;ssl=1 80w\" sizes=\"(max-width: 134px) 100vw, 134px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-a11ade3\" data-id=\"a11ade3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-77abfc0 elementor-widget elementor-widget-heading\" data-id=\"77abfc0\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Backed by a 60 day 100% money-back guarantee<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e08d4e6 elementor-widget elementor-widget-text-editor\" data-id=\"e08d4e6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>If you don\u2019t like the course, I don\u2019t want your money. Seriously, that\u2019s why I offer a 60 days money back guarantee. <a href=\"https:\/\/randomnerdtutorials.com\/support\" target=\"_blank\" rel=\"noopener\">Email me here<\/a> and I will promptly refund all your money. No questions, no hassles \u2013 it\u2019s that simple.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Frequently Asked Questions<\/h2>\n\n\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"107480\" class=\"elementor elementor-107480\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1a718f82 elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1a718f82\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4c45fa18\" data-id=\"4c45fa18\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-54f5dcad elementor-widget elementor-widget-toggle\" data-id=\"54f5dcad\" data-element_type=\"widget\" data-widget_type=\"toggle.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-toggle\">\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1421\" class=\"elementor-tab-title\" data-tab=\"1\" role=\"button\" aria-controls=\"elementor-tab-content-1421\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">What software is used to program the ESP32\/ESP8266?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1421\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"region\" aria-labelledby=\"elementor-tab-title-1421\"><p>To program the ESP32 and ESP8266 boards you can use Arduino IDE or VS Code with the PlatformIO extension. We provide the sketch files for Arduino IDE and complete project folders for VS Code.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1422\" class=\"elementor-tab-title\" data-tab=\"2\" role=\"button\" aria-controls=\"elementor-tab-content-1422\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">What software is used to build the web app?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1422\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"region\" aria-labelledby=\"elementor-tab-title-1422\"><p><span style=\"font-weight: 400;\">To build the Firebase web app, we\u2019ll use VS Code (Visual Studio Code).<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1423\" class=\"elementor-tab-title\" data-tab=\"3\" role=\"button\" aria-controls=\"elementor-tab-content-1423\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Do I need to pay to use Firebase services?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1423\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"region\" aria-labelledby=\"elementor-tab-title-1423\"><p>The Firebase services we\u2019ll use to build and host the web app are free. Optional: during Part 5 you can buy a custom domain name. That part is totally optional as the web app works perfectly well using the free Firebase-generated domain name.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1424\" class=\"elementor-tab-title\" data-tab=\"4\" role=\"button\" aria-controls=\"elementor-tab-content-1424\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">I don\u2019t have all the recommended prerequisites. Can I follow along?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1424\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"region\" aria-labelledby=\"elementor-tab-title-1424\"><p>Yes. It is not mandatory to have all the recommended prerequisites to follow along as the eBook is step-by-step style. You can still get your app working, and you\u2019ll also learn a lot. However, it might be more challenging to modify the app for your specific needs. If this is your first time using the ESP32 or ESP8266 board, we recommend following some basic tutorials or following our ESP32 or ESP8266 eBooks first.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1425\" class=\"elementor-tab-title\" data-tab=\"5\" role=\"button\" aria-controls=\"elementor-tab-content-1425\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">I\u2019m not familiar with JavaScript. Can I still follow the eBook?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1425\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"5\" role=\"region\" aria-labelledby=\"elementor-tab-title-1425\"><p>Yes. We provide all the JavaScript code required to get your web app working. We don\u2019t explain how JavaScript works, but we take a look at each code section so that you understand what each section does.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1426\" class=\"elementor-tab-title\" data-tab=\"6\" role=\"button\" aria-controls=\"elementor-tab-content-1426\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">I don\u2019t want to buy a domain name. Is my app accessible from anywhere?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1426\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"6\" role=\"region\" aria-labelledby=\"elementor-tab-title-1426\"><p>Yes. Firebase hosts your web app over a global CDN using Firebase Hosting and provides an SSL certificate. You can access your web app from anywhere using the Firebase-generated domain name.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1427\" class=\"elementor-tab-title\" data-tab=\"7\" role=\"button\" aria-controls=\"elementor-tab-content-1427\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Who is this eBook for?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1427\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"7\" role=\"region\" aria-labelledby=\"elementor-tab-title-1427\"><p>This eBook is for those who want to learn how to build their own web app to control and monitor the ESP32 or ESP8266 boards from anywhere using Firebase backend services (authentication, realtime database, and hosting).<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1428\" class=\"elementor-tab-title\" data-tab=\"8\" role=\"button\" aria-controls=\"elementor-tab-content-1428\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">What if I get stuck following the instructions?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1428\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"8\" role=\"region\" aria-labelledby=\"elementor-tab-title-1428\"><p><span style=\"font-weight: 400;\">If you get stuck at some point, you can use our forum to post your issue. We answer all the questions. You can also send us an email with your issue, and we\u2019ll try to help as much as possible so that you get your app working.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-1429\" class=\"elementor-tab-title\" data-tab=\"9\" role=\"button\" aria-controls=\"elementor-tab-content-1429\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Do I get free future updates?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1429\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"9\" role=\"region\" aria-labelledby=\"elementor-tab-title-1429\"><p>Yes, we often update all our eBooks, so everyone who purchases gets free lifetime updates. You\u2019ll also have access to future content that we might add to the eBook.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-14210\" class=\"elementor-tab-title\" data-tab=\"10\" role=\"button\" aria-controls=\"elementor-tab-content-14210\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">What if I don\u2019t like it?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-14210\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"10\" role=\"region\" aria-labelledby=\"elementor-tab-title-14210\"><p>Well, if you don\u2019t like it, I don\u2019t want your money. Seriously, that\u2019s why I offer a 60 days money back guarantee.\u00a0<a href=\"https:\/\/randomnerdtutorials.com\/support\" target=\"_blank\" rel=\"noopener noreferrer\">Email me here<\/a>\u00a0and I will promptly refund all your money. No questions, no hassles \u2013 it\u2019s that simple!<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-14211\" class=\"elementor-tab-title\" data-tab=\"11\" role=\"button\" aria-controls=\"elementor-tab-content-14211\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-right\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Have a question?<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-14211\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"11\" role=\"region\" aria-labelledby=\"elementor-tab-title-14211\"><p>If you still have questions after reading this page please\u00a0<a href=\"https:\/\/randomnerdtutorials.com\/support\" target=\"_blank\" rel=\"noopener noreferrer\">email me here<\/a>. I\u2019ll do my best to answer your questions.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Meet the Authors<\/h2>\n\n\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"107484\" class=\"elementor elementor-107484\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4c9f5394 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4c9f5394\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3725e9f1\" data-id=\"3725e9f1\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-70d0051a elementor-widget elementor-widget-testimonial\" data-id=\"70d0051a\" data-element_type=\"widget\" data-widget_type=\"testimonial.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-wrapper\">\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-testimonial-meta elementor-has-image elementor-testimonial-image-position-aside\">\n\t\t\t\t<div class=\"elementor-testimonial-meta-inner\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-image\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"267\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/M_Photo_Rui_Santos-1.jpg?fit=300%2C267&amp;quality=100&amp;strip=all&amp;ssl=1\" class=\"attachment-full size-full wp-image-107483\" alt=\"\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-details\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-name\">Rui Santos<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-job\">RandomNerdTutorials.com<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4a24e641 elementor-widget elementor-widget-text-editor\" data-id=\"4a24e641\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Hey there, I\u2019m <b>Rui Santos<\/b>, founder of the Random Nerd Tutorials blog. For the last couple of months, we\u2019ve been working on this new eBook dedicated to building a web app with Firebase to control and monitor the ESP32 and ESP8266 boards from anywhere. If you like our work, you\u2019ll certainly like the \u201cFirebase Web App with ESP32 and ESP8266\u201d eBook.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\n\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"107487\" class=\"elementor elementor-107487\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-587e3652 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"587e3652\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-72d3f044\" data-id=\"72d3f044\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-67b3add9 elementor-widget elementor-widget-testimonial\" data-id=\"67b3add9\" data-element_type=\"widget\" data-widget_type=\"testimonial.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-wrapper\">\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-testimonial-meta elementor-has-image elementor-testimonial-image-position-aside\">\n\t\t\t\t<div class=\"elementor-testimonial-meta-inner\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-image\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"497\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Sara-photo-7.jpg?fit=500%2C497&amp;quality=100&amp;strip=all&amp;ssl=1\" class=\"attachment-full size-full wp-image-107486\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Sara-photo-7.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Sara-photo-7.jpg?resize=300%2C298&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Sara-photo-7.jpg?resize=150%2C150&amp;quality=100&amp;strip=all&amp;ssl=1 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-details\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-name\">Sara Santos<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-job\">RandomNerdTutorials.com<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-788d6bee elementor-widget elementor-widget-text-editor\" data-id=\"788d6bee\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Hi. I\u2019m <b>Sara Santos<\/b> and&nbsp; I create, write, and edit the tutorials and articles for the Random Nerd Tutorials blog. After the success of a couple of tutorials related to Firebase, we decided to create an eBook exclusively dedicated to Firebase with the ESP32 and ESP8266 boards. I&#8217;ve only started playing with Firebase recently. I only regret not having started earlier, because it is easy to use and opens many possibilities. I hope you love this project as much as I do.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">See what others are saying<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Thank you Rui. Anyone wondering whether you bring value can rely on my word. I&#8217;ve purchased hundreds of books over a 45 year career as engineer and entrepreneur. NONE of these books have approached your excellent method of teaching a subject. You have a rare gift as a teacher. Glad to have made the purchases.<\/em><\/p>\n\n\n\n<p><strong>Paul<\/strong><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>I want to congratulate you on the manuals you have created, they are the best of the best that I have seen in many years. (&#8230; ) Your explanations are very clear and very detailed, as if you were a teacher\u2026<\/em><\/p>\n\n\n\n<p><strong>Tino Fern\u00e1ndez<\/strong><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>I placed the order of these ebooks\/courses and have downloaded the eBooks. The ebooks are very informative and very well presented, as is your website(&#8230;).<\/em><\/p>\n\n\n\n<p><strong><strong>Robert Kyle<\/strong><\/strong><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>I want to thank you for the high quality of your projects. Too many others just list a series of tasks but not what to do when they do not go as planned. The detail that you have put into the writeups is amazing. I am working with my 10 year old grandson to help this interest in electronics and software. It would be much harder without your guides<\/em>.<\/p>\n\n\n\n<p><strong>Doug Hogg<\/strong><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Thank you so much for all your excellent projects. I have been following you for several years and I have learned a lot and applied many of your ideas. Please continue all of this furthermore<\/em><\/p>\n\n\n\n<p><strong>Michael Moske<\/strong><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Your e-books and website are amazing &#8211; you and Sara are fantastic teachers and I am really enjoying my new hobby.<\/em><\/p>\n\n\n\n<p><strong><strong>W Bos<\/strong><\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"has-text-align-center\"><strong>AS SEEN ON&#8230;<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"120\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2015\/11\/FEATURED-LOGOS.png?resize=800%2C120&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"FEATURED LOGOS\" class=\"wp-image-13911\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2015\/11\/FEATURED-LOGOS.png?w=800&amp;quality=100&amp;strip=all&amp;ssl=1 800w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2015\/11\/FEATURED-LOGOS.png?resize=300%2C45&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/rntlab.com\/checkout\/?add-to-cart=89489\" target=\"_blank\" rel=\"noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=500%2C500&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-107477\" style=\"width:326px;height:auto\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=300%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-500px-f.jpg?resize=150%2C150&amp;quality=100&amp;strip=all&amp;ssl=1 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><\/figure><\/div>\n\n\n<p class=\"has-text-align-center\"><a class=\"button rntyellow\" href=\"https:\/\/rntlab.com\/checkout\/?add-to-cart=89489\">GET THE EBOOK | $29 USD \u00bb<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong><a href=\"https:\/\/rntlab.com\/checkout\/?add-to-cart=89489\">Click here to get the eBook | $29 USD<\/a><\/strong><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Firebase Web App with the ESP32 and ESP8266 eBook Build a Firebase Web App to Control Outputs and Monitor Sensors from Anywhere (Includes Login\/Logout Authentication) GET THE EBOOK \u00bb Build &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"Firebase Web App with the ESP32 and ESP8266 eBook\" class=\"read-more button\" href=\"https:\/\/randomnerdtutorials.com\/firebase-esp32-esp8266-ebook\/#more-107302\" aria-label=\"Read more about Firebase Web App with the ESP32 and ESP8266 eBook\">CONTINUE READING \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":107478,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[266,224,242,314],"tags":[],"class_list":["post-107302","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-no-ads","category-premium","category-premium-project","category-product"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/10\/Firebase-eBook-cover-1280px.jpg?fit=1280%2C720&quality=100&strip=all&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/107302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/comments?post=107302"}],"version-history":[{"count":54,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/107302\/revisions"}],"predecessor-version":[{"id":164390,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/107302\/revisions\/164390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media\/107478"}],"wp:attachment":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media?parent=107302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/categories?post=107302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/tags?post=107302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}