<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ platformio - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ platformio - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 23 Jun 2026 22:45:45 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/platformio/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Internet of Things prototyping with Firebase: how to do more with less ]]>
                </title>
                <description>
                    <![CDATA[ By Bayrem Gharssellaoui IoT is all about connecting devices, or “things” as you may call them, to the internet and then analyzing data collected from these devices in order to extract an added value. In this article you’ll discover how to benefit fro... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/iot-prototyping-with-firebase-doing-more-with-less-2f5c746dac8b/</link>
                <guid isPermaLink="false">66c35874c7095d76345eaf9e</guid>
                
                    <category>
                        <![CDATA[ arduino ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Firebase ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Internet of Things ]]>
                    </category>
                
                    <category>
                        <![CDATA[ iot ]]>
                    </category>
                
                    <category>
                        <![CDATA[ platformio ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sat, 19 Jan 2019 13:23:15 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*ttEuxmPhOI8obezR7bn6tg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Bayrem Gharssellaoui</p>
<p>IoT is all about connecting devices, or “things” as you may call them, to the internet and then analyzing data collected from these devices in order to extract an added value. In this article you’ll discover how to benefit from <a target="_blank" href="https://firebase.google.com/">Firebase</a> when working on an IoT project and how it can help you develop IoT prototypes much faster and easier than traditional methods. You will also develop your own IoT project and host it in Firebase.</p>
<h3 id="heading-before-firebase-realtime-database">Before Firebase Realtime Database</h3>
<p>Most of <a target="_blank" href="http://kaizoku.azurewebsites.net/">my IoT projects</a> require some way of communication between the different endpoints. These endpoints can be anything from devices and services to applications, and eventually data needs to be stored somewhere for further processing and analyzing.</p>
<p>So let’s say you want to build an IoT system where a device will measure temperature and humidity values from sensors and send them to a database service to store them. Then you want to have a web application that will fetch these values and display them in a dashboard. Quite simple, right…?</p>
<p>The easy and lightweight way to go about this is to setup an <a target="_blank" href="https://www.hivemq.com/mqtt-essentials/">MQTT</a> broker that will act as a hub and reroute all incoming messages <strong>published</strong> from the device to all <strong>subscribed</strong> clients like the web application in this case.</p>
<p>Now the question here is how can the web application display the data? Meaning will it be displaying messages coming from the broker directly or will it be fetching data from a database service?</p>
<p>Let’s say that you want the app to do both things: display data coming from the broker in realtime <strong>and</strong> fetch data from the database. In this case you can think of 2 ways (actually there are many different ways) to achieve this:</p>
<p><strong>First solution:</strong></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*5NM__yb36ftzOmIvLtBc-A.png" alt="Image" width="800" height="449" loading="lazy"></p>
<p>Using this architecture the device will first publish its data to the broker then it will send an HTTP request to the database web-service to save the data. For this solution the device needs to implement 2 clients: an MQTT and an HTTP client.</p>
<p><strong>Second solution:</strong></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*qOsO6-Hupd-Eidwdw66X-Q.png" alt="Image" width="800" height="449" loading="lazy"></p>
<p>The other way to go about this is that the device will send or publish its data to the broker, then the broker (as expected) will reroute this message to all connected subscribers like the web app. But this time there’s another subscriber connected which represents an API Engine that will accept this data and send it to the database web-service to be stored.</p>
<p>As you may have noticed in this solution, the HTTP client is decoupled from the device and implemented as a backend service. This way you make the device program much lighter. This is an important thing to keep in mind when developing on constrained IoT devices where resources like CPU and memory are limited.</p>
<p>Still, this solution required some additional work in developing the back-end service that will act as a persistence layer.</p>
<p>So is there much easier way of doing this?</p>
<h3 id="heading-firebase-to-the-rescue">Firebase to the rescue</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*dFAUA_U6XtcCVDSDrd1eIQ.gif" alt="Image" width="800" height="600" loading="lazy"></p>
<p>As you may have seen above, things can get quite complex quite easily. For someone like me who wants to get up and running quickly when working on a prototype, that can take some extra time. That’s why, in this part of the article, you’ll see how Firebase can make your life easier and save you a lot of time when developing an IoT prototype.</p>
<p>Firebase offers many cloud services that ranges from authentication, storage, and cloud functions to hosting your web application. In this article you’ll use 2 services: Realtime Database and Hosting.</p>
<p>Let’s start with <strong>Firebase Realtime Database</strong>. The first thing that comes to mind when reading this service name is: okay so I know what a database is but what does it mean to be realtime here?</p>
<p>Well according to Wikipedia:</p>
<blockquote>
<p>A <strong>real-time database</strong> is a database system which uses <a target="_blank" href="https://en.wikipedia.org/wiki/Real-time_computing">real-time processing</a> to handle workloads whose state is constantly changing. This differs from traditional databases containing persistent data, mostly unaffected by time</p>
</blockquote>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*uWzVNx2DCXbVc0xnxbSYwg.gif" alt="Image" width="800" height="575" loading="lazy"></p>
<p>In the case of Firebase Realtime Database, clients will be connected to the database and will maintain an open bidirectional connection via <a target="_blank" href="https://blog.teamtreehouse.com/an-introduction-to-websockets">websockets</a>. Then if any client pushes data to the database it will be triggered and (in this case) inform all connected clients that it has been changed by sending them the newly saved data.</p>
<p>This way of working may remind you of the MQTT broker and how it reacts when it receives a message from a publisher and sends it to all subscribers. The difference this time is the addition of the data persistent part, which is the database. So as you can see here, you don’t need to route messages yourself using other protocols — Firebase Realtime Database will take care of that plus performing its normal database function. Amazing isn’t it?</p>
<p>Returning to the IoT system mentioned earlier, you can now connect the device to the Firebase Realtime Database and make it push data periodically to the database. On the other part of the system you have a web application which will be connected to the same service as the device and will receive new data whenever there is a change in the database.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*zyS---O8Po4Gz1tVUYS4QQ.png" alt="Image" width="800" height="449" loading="lazy"></p>
<p>But what about <strong>hosting</strong> the web application?</p>
<p>Firebase offers a hosting service that you can use to host your app rather than managing your own web server and dealing with deployment and networking configurations. The good thing is that it is free (yet limited) and pretty easy to use.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*VESaHfq7jgk8aeDyH2kFgg.png" alt="Image" width="512" height="512" loading="lazy"></p>
<p>Now for the part you all have been waiting for. In this demo you’ll use the example discussed throughout this article and bring it to life.</p>
<p>If you remember, the IoT system is made of <strong>2 endpoints</strong>: the first one is the <strong>IoT device</strong> which is responsible for sending temperature and humidity data to the Firebase Realtime Database. This in turn will communicate with the second endpoint — the <strong>web application</strong> — that will read the data and display it on a nice dashboard.</p>
<p>I’ll break this project into <strong>3 steps</strong> so it becomes easier to follow.</p>
<h3 id="heading-1-setting-up-firebase-realtime-database">1. Setting up Firebase Realtime Database</h3>
<p>There is nothing special about this step. You just need to go to your <a target="_blank" href="https://console.firebase.google.com/">firebase console</a> and create a new project. After your project is ready, go to the database section and make sure to create a Realtime Database <strong>not a cloud Firestore Database.</strong> Select start in test mode and proceed as you’ll be using this database only for testing and prototyping and not for production solutions (so you can ignore the red warning). Now the database should be ready for use.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*E-ny9SQDLjUGOiEn1ows8w.png" alt="Image" width="800" height="415" loading="lazy"></p>
<h3 id="heading-2-developing-the-iot-device-application">2. Developing the IoT device application</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*ttEuxmPhOI8obezR7bn6tg.jpeg" alt="Image" width="800" height="529" loading="lazy"></p>
<p>When talking about embedded systems development, you often hear terms like low level programming, assembly, registers, memory management and so on. These terms and concepts are related to the hardware specifics you’re working with and can change from one to another.</p>
<p>That’s why, when prototyping ideas, you don’t have time to dig deep into these specifics and study them in details because you’ll be dealing at the same time with other high level languages and thus other ways of thinking about code. So instead you should have a clear overall idea about the architecture and characteristics of the device and how to use them.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*YQyb-Sopev0IYL9nRv1J-Q.gif" alt="Image" width="480" height="258" loading="lazy"></p>
<p>Luckily for you there is a platform that was made specially for prototyping and abstracting all the low level functionalities of hardware. Yes I’m talking about the famous <strong>Arduino</strong>.</p>
<p><a target="_blank" href="https://www.arduino.cc/"><strong>Arduino - Home</strong></a><br><a target="_blank" href="https://www.arduino.cc/">_Open-source electronic prototyping platform enabling users to create interactive electronic objects._www.arduino.cc</a></p>
<p>Note here that when I’m talking about Arduino, I’m referring to the <strong>Arduino Framework</strong> with its IDE, compilers, and libraries — not the board.</p>
<p>So you will be using Arduino to program the board, but what board you ask? Well, you need a board that is able to interface with sensors and measure physical values like temperature. It should also be able to connect to the internet in order to send this data to the database. Finally, it should be able to be programmed using the Arduino framework.</p>
<p>There are a variety of boards on the market that can achieve these tasks. Some of them are Arduino boards and others are Arduino-compatible boards.</p>
<p>In this demo you will use the famous <strong>NodeMCU,</strong> an Arduino compatible board. It’s based on the <strong>ESP8266</strong> SoC, a chipset produced by the Shanghai-based Chinese manufacturer, Espressif Systems. This board is attractive for developers, as single units can be bought for as little as $3.</p>
<h4 id="heading-our-gear">Our Gear</h4>
<p>Although the Arduino platform offers an IDE for programming and uploading code to boards, it’s not very friendly to developers as it does not provide any intelliSense features or debugging functionalities. That’s why, for most my IoT projects, I use an environment called <strong>PlatformIO.</strong></p>
<p><a target="_blank" href="https://platformio.org/"><strong>PlatformIO: An open source ecosystem for IoT development</strong></a><br><a target="_blank" href="https://platformio.org/">_Cross-platform build system and library manager. Cross-platform IDE and unified debugger. Remote unit testing and…_platformio.org</a></p>
<p>It’s an open source ecosystem for IoT development, and guess what? It supports the Arduino Framework. So you can use it to write Arduino code, compile it, and upload it to the board. Finally the cool thing about PlatformIO is that it comes as an <strong>extension</strong> that you can use inside <strong>Atom</strong> or <strong>VScode</strong> so you can use it alongside the other functionalities of your IDE (Atom or VScode). I highly recommend watching these 2 YouTube video tutorials to setup and get familiar with the environment.</p>
<p>Enough talk — let’s get started:</p>
<h4 id="heading-developing-firmware-for-nodemcu">Developing Firmware for NodeMCU</h4>
<p><a target="_blank" href="https://github.com/kaizoku-619/firebase_nodemcu"><strong>kaizoku-619/firebase_nodemcu</strong></a><br><a target="_blank" href="https://github.com/kaizoku-619/firebase_nodemcu">_Arduino Firebase Nodemcu client developed sending DHT11 data to Firebase Realtime Database …_github.com</a></p>
<p>Before diving into developing the firmware, let’s talk about the electronics setup.</p>
<p>If you remember from the example earlier, the IoT device will measure temperature and humidity values from a sensor and send them to the cloud. In this case that means the <strong>NodeMCU</strong> will read temperature and humidity values from <strong>DHT11</strong> sensor module and send them to Firebase. The <strong>DHT11</strong> module will be used here because it’s cheap and doesn’t require any additional electronic components to function.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*B6nyhGw-sarcmZgLA2etXg.png" alt="Image" width="800" height="329" loading="lazy">
<em>Wiring Diagram</em></p>
<p>As you can see from the wiring diagram above, DHT11 is connected to the board with 3 wires <strong>GND</strong>, <strong>3.3V</strong> and <strong>Data signal</strong> in the middle. Connect the data pin to one of the <strong>Dx</strong> pins on the board and you’re done with wiring.</p>
<p>Now that the wiring is done you can start coding the firmware using PlatformIO.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*DIOV2vSxZKjRO6WgP2nzjA.gif" alt="Image" width="500" height="300" loading="lazy">
<em>We’re not writing Go but I like the GIF</em></p>
<p>But before you dig into writing code directly, let’s stop for a moment and think about what the program should do.</p>
<p>So the first thing the device needs to do is to connect to the internet. To do that it needs to <strong>connect to the WiFi</strong> access point. Once online, it needs to <strong>open a connection with Firebase.</strong> After that the device will <strong>read temperature and humidity</strong> values from the sensor and finally <strong>publish the data</strong>.</p>
<p>Here is an ordered list of tasks:</p>
<p><em>(Note that the world <strong>task</strong> is used here to refer to a functionality of a bloc of code and not a task in realtime OS like FreeRTOS tasks.)</em></p>
<p><strong>1. Connect to WiFi</strong><br><strong>2. Open connection with Firebase</strong><br><strong>3. Read sensor values</strong><br><strong>3. Publish values to Firebase</strong></p>
<p>Let’s start with the first task:</p>
<ul>
<li><strong>Connect to WiFi:</strong></li>
</ul>
<p>This function begins with printing the <strong>SSID</strong> (AP name) and setting the NodeMCU into station mode rather than AP mode. Then it keeps loading until it connects to the AP. SSID and <strong>PASSWORD</strong> are 2 constants defined in another file as you’ll see later.</p>
<ul>
<li><strong>Open connection with Firebase:</strong></li>
</ul>
<p>This function is very straightforward: it takes 2 parameters <strong>FIREBASE_HOST</strong> and <strong>FIREBASE_AUTH.</strong> These are also 2 constants defined in another file.</p>
<ul>
<li><strong>Read sensor values:</strong></li>
</ul>
<p>You start by defining 2 constants for the <strong>DHT</strong> sensor type and pin. After that you create a DHT object by passing these 2 constants to the DHT constructor. Finally you use the object methods <strong>readHumidity()</strong> and <strong>readTemperature()</strong> to read humidity and temperature respectively.</p>
<ul>
<li><strong>Publish values to Firebase:</strong></li>
</ul>
<p>Here, the <strong>pushInt()</strong> method of Firebase class is used to push an integer to Firebase and in case of an error, print it.</p>
<p>And now you’re done with the tasks! All that’s left is to put these tasks together in a clean arduino sketch.</p>
<p>Start by creating a new project in PlatformIO as shown here:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*xwXxvU1FbJBSS6yypAiKHA.png" alt="Image" width="800" height="449" loading="lazy"></p>
<p>Next you need to <strong>install the libraries</strong> needed for the project. Note that in this case you will install the libraries <strong>locally,</strong> meaning they’re only available for this project. This is a best practice if you decided one day to use another version of the library in another project.</p>
<p>Go to the PlatformIO home page → Libraries and search for firebase. FirebaseArduino will show up, so click on it. But <strong>don’t click install button</strong>, instead click on the <strong>…</strong> next to install and choose the project to install the library into. Then finally click install. Repeat this process for the <strong>DHT</strong> library.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*gyXxo1VKPLWcqfHlkV_oLQ.png" alt="Image" width="800" height="449" loading="lazy"></p>
<p>Copy this code in the <strong>main.cpp</strong> file:</p>
<p>Remember the file containing the credentials for the WiFi and Firebase? Go to the include folder and create a new file <strong>Creds.h</strong> and copy this code to it. Don’t forget to <strong>change</strong> the code according to <strong>your credentials</strong>.</p>
<p>And there you go! Upload the firmware to <strong>NodeMCU</strong> and your device should be able to send data to <strong>Firebase Realtime Database</strong>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*Dx4qV5dLbGQoNYcwYifa5w.png" alt="Image" width="800" height="449" loading="lazy"></p>
<h3 id="heading-3-developing-and-hosting-the-web-application">3. Developing and hosting the web application</h3>
<p><a target="_blank" href="https://github.com/kaizoku-619/firebase_iot_web"><strong>kaizoku-619/firebase_iot_web</strong></a><br><a target="_blank" href="https://github.com/kaizoku-619/firebase_iot_web">_Firebase web application client connected to Firebase Realtime database fetching sensor values …_github.com</a></p>
<p>Now that the IoT device is ready and pushing data to the Realtime Database, you can move to the other endpoint in the system, the web application. It will receive data from Firebase and display it on a dashboard.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*Rjf3-ZGcqjg_TUPOPmllOw.png" alt="Image" width="800" height="449" loading="lazy"></p>
<p>You will start by developing the app locally and eventually deploying it.</p>
<p>Start by setting up the project.</p>
<h4 id="heading-installing-firebase-cli"><strong>Installing Firebase CLI:</strong></h4>
<p>The <strong>Firebase CLI</strong> (command line interface) requires <strong>Node.js</strong> and <strong>npm</strong> (the Node Package Manager). Once they are installed you proceed to install the Firebase CLI using npm by running:</p>
<pre><code>npm install -g firebase-tools
</code></pre><p>You can follow the video to complete the project setup.</p>
<p>Once project setup is done your directory should look something like this:</p>
<pre><code>├── database.rules.json├── firebase.json└── public   ├── <span class="hljs-number">404.</span>html   └── index.html
</code></pre><p>Start by building the <strong>dashboard UI.</strong> This will be the <strong>index.html</strong> file. Open the file and change it to look like this:</p>
<p>This is a simple <strong>HTML</strong> page designed using <a target="_blank" href="https://fezvrasta.github.io/bootstrap-material-design/">Bootstrap Material Design</a>. It consists of <strong>2 Card</strong> elements, one for displaying Humidity and the other for displaying Temperature.</p>
<p>As for the Firebase part here, first you import the firebase dependency in the script tag inside the head tag. Finally when the page finishes loading, it calls <strong>app.js</strong>.</p>
<p>Now that the Dashboard UI is ready you can move on to <strong>app.js</strong> where you implement the firebase connection and your business logic. In the same directory create a new file called <strong>app.js</strong> and copy this code:</p>
<p>The script starts by creating a configuration object. The best way is to copy it directly from the firebase project in the firebase console. To do that, navigate to your firebase console and go to the firebase project settings. Then scroll down and click on the <strong>&lt;</strong>;/&gt; icon as shown here:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*UOd3xtXrWw291dCIP2I1zw.gif" alt="Image" width="800" height="450" loading="lazy"></p>
<p>I guess the rest of the code is self explanatory with the comments.</p>
<p>Now your app should be ready and you can test it locally with the following command:</p>
<pre><code>firebase serve
</code></pre><p><img src="https://cdn-media-1.freecodecamp.org/images/1*ZGnT6vNho7_lNuQNvcokBw.gif" alt="Image" width="600" height="337" loading="lazy"></p>
<p>Note that on startup the app will fetch the last temperature and humidity values from the database. Great! The app is working locally, but up until now it’s working only inside your localhost and can’t be accessed from the outside world. This means that it’s time to host it on the web using <strong>Firebase Hosting.</strong></p>
<p>But before you deploy it there is just one last thing you need to do. Go to the <strong>database.rules.json</strong> file and change the read and write rules to “<strong>true</strong>”. This method is not advised for production, as it is not secure, but it’s fine for demonstration purposes here.</p>
<p>With that done you are ready for deployment:</p>
<pre><code>firebase deploy
</code></pre><p><img src="https://cdn-media-1.freecodecamp.org/images/1*RUWH_VUFf_EJ2JVeUk6xWA.gif" alt="Image" width="600" height="337" loading="lazy"></p>
<p>There you go! If you’ve made it this far, by now you should have a live web application deployed and up and running.</p>
<h3 id="heading-putting-it-all-together">Putting it all together</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*NRl95CtTxUi8Os7D_WKgAA.gif" alt="Image" width="500" height="226" loading="lazy"></p>
<p>It’s time to put everything together and test the system. Plug in the <strong>NodeMCU</strong> to your PC and upload the sketch if you haven’t already:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*neyIQF00mBE02W9aOw4ptg.gif" alt="Image" width="600" height="337" loading="lazy"></p>
<p>Open up the web app and the firebase database and watch it change in realtime with the values sent by the device.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*1JIi7SbvkC6LAePZiuRtjA.gif" alt="Image" width="600" height="337" loading="lazy"></p>
<p>Now open up the <strong>serial monitor</strong> and watch the data pushed from the device to the web app. Note that you can open the console in the browser to watch the received values. Here I use <a target="_blank" href="https://linux.die.net/man/1/gtkterm">Gtk Serial port terminal</a> with a baud-rate of 115200 bps, but you can use the integrated <strong>PlatformIO</strong> Serial Monitor or any other tool of your choice.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*oPKH60n5_9kQfIIdtx_Hjg.gif" alt="Image" width="600" height="337" loading="lazy"></p>
<h3 id="heading-troubleshooting">Troubleshooting</h3>
<p>I faced a problem while developing the application on the <strong>ESP8266</strong> (and it took me sometime to figure out). Even when everything was configured correctly (WiFi Connection, Firebase Host, Secret Key), the ESP8266 <strong>couldn’t connect to Firebase.</strong> This was caused by the <strong>wrong Fingerprint</strong> inside <strong>FirebaseHttpClient.h</strong> file in the Firebase library. You need to replace it with your own fingerprint. If you installed the library locally using <strong>PlatformIO</strong> then you can find the file in this path:</p>
<pre><code>your_project_folder/.piolibdeps/FirebaseArduino_ID1259/src/
</code></pre><p>To <strong>generate</strong> a fingerprint, go to this website and copy your Firebase host link without the https part and click on Fingerprint Site (mine is:<br>medium-iot-project.firebaseio.com):</p>
<p><a target="_blank" href="https://www.grc.com/fingerprints.htm"><strong>GRC | SSL TLS HTTPS Web Server Certificate Fingerprints</strong></a><br><a target="_blank" href="https://www.grc.com/fingerprints.htm">_GRC's HTTPS Web Server Certificate Fingerprint Service_www.grc.com</a></p>
<p>This will generate a fingerprint for your site, so go ahead and copy it in place of the old <strong>kFirebaseFingerprint[]</strong> value inside the <strong>FirebaseHttpClient.h</strong> file. That should fix the problem.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*TuJignt5v3mYTnybtktJnw.gif" alt="Image" width="471" height="200" loading="lazy"></p>
<h3 id="heading-conclusion">Conclusion</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*HC62qJvM12Ey_u_CKA3uNQ.gif" alt="Image" width="498" height="211" loading="lazy"></p>
<p>Congratulations if you’ve made it this far!</p>
<p>We’ve only scratched the surface here. The Internet of Things is all about experimenting and exploring, so I encourage you to not stop here and keep learning by making mistakes and finding bugs in your code. But above all don’t forget to have fun along your learning journey.</p>
<h3 id="heading-references">References</h3>
<p><a target="_blank" href="https://firebase.google.com/docs/database/"><strong>Firebase Realtime Database | Firebase Realtime Database | Firebase</strong></a><br><a target="_blank" href="https://firebase.google.com/docs/database/">_Store and sync data with our NoSQL cloud database. Data is synced across all clients in realtime, and remains available…_firebase.google.com</a><a target="_blank" href="https://platformio.org/"><strong>PlatformIO: An open source ecosystem for IoT development</strong></a><br><a target="_blank" href="https://platformio.org/">_Cross-platform build system and library manager. Cross-platform IDE and unified debugger. Remote unit testing and…_platformio.org</a><a target="_blank" href="https://www.arduino.cc/"><strong>Arduino - Home</strong></a><br><a target="_blank" href="https://www.arduino.cc/">_Open-source electronic prototyping platform enabling users to create interactive electronic objects._www.arduino.cc</a><a target="_blank" href="https://fezvrasta.github.io/bootstrap-material-design/"><strong>Bootstrap Material Design</strong></a><br><a target="_blank" href="https://fezvrasta.github.io/bootstrap-material-design/">_The most popular HTML, CSS, and JS Material Design library in the world._fezvrasta.github.io</a><a target="_blank" href="https://github.com/esp8266/Arduino"><strong>esp8266/Arduino</strong></a><br><a target="_blank" href="https://github.com/esp8266/Arduino">_ESP8266 core for Arduino. Contribute to esp8266/Arduino development by creating an account on GitHub._github.com</a><a target="_blank" href="https://github.com/FirebaseExtended/firebase-arduino"><strong>FirebaseExtended/firebase-arduino</strong></a><br><a target="_blank" href="https://github.com/FirebaseExtended/firebase-arduino">_Arduino samples for Firebase. Contribute to FirebaseExtended/firebase-arduino development by creating an account on…_github.com</a><a target="_blank" href="https://www.grc.com/fingerprints.htm"><strong>GRC | SSL TLS HTTPS Web Server Certificate Fingerprints</strong></a><br><a target="_blank" href="https://www.grc.com/fingerprints.htm">_GRC's HTTPS Web Server Certificate Fingerprint Service_www.grc.com</a></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
