<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fernando Zablah</title>
    <description>The latest articles on DEV Community by Fernando Zablah (@zablon18).</description>
    <link>https://dev.to/zablon18</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F56945%2Fec89f61b-ce48-4192-a244-7cbfcb4b8e43.jpeg</url>
      <title>DEV Community: Fernando Zablah</title>
      <link>https://dev.to/zablon18</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zablon18"/>
    <language>en</language>
    <item>
      <title>Advice needed... How is your Software Development Process/Cycle?</title>
      <dc:creator>Fernando Zablah</dc:creator>
      <pubDate>Sat, 21 Mar 2020 17:10:40 +0000</pubDate>
      <link>https://dev.to/zablon18/advice-needed-how-is-your-software-development-process-cycle-5fpk</link>
      <guid>https://dev.to/zablon18/advice-needed-how-is-your-software-development-process-cycle-5fpk</guid>
      <description>&lt;p&gt;Hello, I'm a software engineer student, I started a small software consulting/developing company almost two years ago, we started as 3 partners who did the programming and designing of the products our clients asked us for (mostly web apps), but as we received more clients we started hiring more people. &lt;br&gt;
We are 6 persons in the team, the problem is that we have problems in the software development methodoly, since we dont have something well established, we define features and we have 1 week to deliver one feature, (like a scrum sprint), then we have a meeting about the progress and the next steps. But we dont document what is it really what we are going to do... like tests, components, interfaces, this makes the quality of our code and delivery times look bad. I started learining devops to help automate the development to production process, and started investigating how to integrate QA in the process, but I feel lost I dont know how to integrate it all together, how to document all the project before we start to coding. In my univesity classes they teached me UML for modeling classes, components, case uses, etc.. But I feel that they are used for other technologies, like php and java apps. Where we work mostly with React web apps with an Express js REST Api and a MySQL database.&lt;/p&gt;

&lt;p&gt;So my question is: How do you organize/apply all of the software development process in your work/bussiness/professional life? Do you have any recomendations on courses/book for this type of area in the software development business.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;

</description>
      <category>help</category>
      <category>devops</category>
      <category>startup</category>
    </item>
    <item>
      <title>Change websites colors for better navigation with Stylus</title>
      <dc:creator>Fernando Zablah</dc:creator>
      <pubDate>Mon, 30 Jul 2018 23:28:16 +0000</pubDate>
      <link>https://dev.to/zablon18/change-websites-colors-for-better-navigation-with-stylus-32d1</link>
      <guid>https://dev.to/zablon18/change-websites-colors-for-better-navigation-with-stylus-32d1</guid>
      <description>&lt;h1&gt;
  
  
  Why?
&lt;/h1&gt;

&lt;p&gt;So the other day I was coding a game in Unity, I was getting some headache but it wasn't a lot of a problem because i have the dark theme in Unity and also a night theme in Atom for coding the scripts. The problem appeared when I saw this on my screen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4so0yc74mych3ig0rx3n.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4so0yc74mych3ig0rx3n.PNG" alt="GitHub white screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think this was more or less my reaction:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5urbwf44jmdejeoxe2sq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5urbwf44jmdejeoxe2sq.jpg" alt="Eyes Burning image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All that white background was giving me more headache that I had initially, so I googled a solution for my "problem".&lt;/p&gt;

&lt;h1&gt;
  
  
  Stylus
&lt;/h1&gt;

&lt;p&gt;So I found &lt;a href="https://github.com/stylus/stylus" rel="noopener noreferrer"&gt;this&lt;/a&gt; magnificent extension for my web browser (Chrome), called Stylus.&lt;br&gt;
With Stylus you can search for css themes that its community codes and uploads to their site. So after I found &lt;a href="https://userstyles.org/styles/37035/github-dark" rel="noopener noreferrer"&gt;GitHub Dark&lt;/a&gt; everything was okay for my eyes again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;First we need to install the Stylus for your web browser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne" rel="noopener noreferrer"&gt;Chrome&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://addons.mozilla.org/firefox/addon/styl-us/" rel="noopener noreferrer"&gt;Firefox&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://addons.opera.com/extensions/details/stylus/" rel="noopener noreferrer"&gt;Opera&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Their installation is pretty straightforward, as any other extension/add-on for your browser. &lt;/p&gt;

&lt;h2&gt;
  
  
  Themes
&lt;/h2&gt;

&lt;p&gt;Once you have installed Stylus on your web browser, its time to get some themes!&lt;br&gt;
Stylus themes are available &lt;a href="https://userstyles.org/styles/browse" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To add them just click on the style you want and click the "Install Style" button:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtpeb5g5upjunkj8nlkf.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtpeb5g5upjunkj8nlkf.PNG" alt="GitHub Dark Theme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here is how Chrome shows GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyv0sxs2vu1e035jfveq4.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyv0sxs2vu1e035jfveq4.PNG" alt="GitHub Dark Theme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now my eyes can concentrate in the commit's messages and not the killer white background.&lt;/p&gt;

&lt;p&gt;Here are some other cool themes I installed:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://userstyles.org/styles/123887/youtube-better-full-dark-theme-2018-arc" rel="noopener noreferrer"&gt;YouTube Dark Theme&lt;/a&gt; by &lt;a href="https://userstyles.org/users/304979" rel="noopener noreferrer"&gt;Arczi008TV&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7sid79ioc5cx8epxe0vi.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7sid79ioc5cx8epxe0vi.PNG" alt="Youtube Dark Theme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://userstyles.org/styles/152077/amazing-google" rel="noopener noreferrer"&gt;Amazing Google&lt;/a&gt; by &lt;a href="https://userstyles.org/users/344525" rel="noopener noreferrer"&gt;Random guy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hwumz3q9mwyqpc79c71.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hwumz3q9mwyqpc79c71.PNG" alt="Google Dark Theme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://userstyles.org/styles/136318/clear-dark-facebook-by-book777" rel="noopener noreferrer"&gt;Clear Dark Facebook&lt;/a&gt; by &lt;a href="https://userstyles.org/users/379825" rel="noopener noreferrer"&gt;Nicholas Buk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwgzg1iu44v2e5pg37t1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwgzg1iu44v2e5pg37t1.PNG" alt="Facebook Dark Theme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://userstyles.org/styles/142096/dark-whatsapp-theme-by-mew" rel="noopener noreferrer"&gt;Dark Whatsapp Theme&lt;/a&gt; by &lt;a href="https://userstyles.org/users/362890" rel="noopener noreferrer"&gt;Vednoc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnsoh6i0jqosev7h7drp.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnsoh6i0jqosev7h7drp.PNG" alt="Whatsapp Dark Theme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Bonus
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Global Themes
&lt;/h2&gt;

&lt;p&gt;I liked a lot these themes, but I don't want to download a theme for every website! Stylus has a fix for that, they have "global themes" which are generic themes that should work on all websites.&lt;/p&gt;

&lt;p&gt;I installed &lt;a href="https://userstyles.org/styles/31267/global-dark-style-changes-everything-to-dark" rel="noopener noreferrer"&gt;Global Dark Style&lt;/a&gt; by &lt;a href="https://userstyles.org/users/43566" rel="noopener noreferrer"&gt;stormy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The results are something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1l97q7vcyqwuzdu874nk.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1l97q7vcyqwuzdu874nk.PNG" alt="DevTo Dark"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fck3thsfedk2a4t36bnrn.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fck3thsfedk2a4t36bnrn.PNG" alt="StackOverFlow Dark"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see the results are not perfect, but in my opinion, it gets the job done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Exceptions
&lt;/h2&gt;

&lt;p&gt;There might be websites that you dont want to apply this global theme, or you already have othere themes for those websites that just looks better. You can add exceptions by clicking the Stylus icon on your browser and clicking on the manage/administrate button (the left one). Select your global theme, and go to the bottom of the page to add the exceptions websites.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4p5gqpshocs2q93mgjk.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4p5gqpshocs2q93mgjk.PNG" alt="Exceptions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see I deactivated the global theme for the websites where I already have another theme, as sometimes, there are conflicts between multiple themes.&lt;/p&gt;

&lt;p&gt;I hope this post helps some people to have a more "easy to look" web experience.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Voice Controlled Lights From Anywhere with Jason app</title>
      <dc:creator>Fernando Zablah</dc:creator>
      <pubDate>Wed, 25 Jul 2018 22:58:28 +0000</pubDate>
      <link>https://dev.to/zablon18/voice-controlled-lights-from-anywhere-with-jason-app-3i31</link>
      <guid>https://dev.to/zablon18/voice-controlled-lights-from-anywhere-with-jason-app-3i31</guid>
      <description>&lt;h2&gt;
  
  
  Description
&lt;/h2&gt;

&lt;p&gt;Jason is a voice controlled assistant app that I coded for Android devices to control the electrical state of an AC appliance, until now it can control lights. You can control the lights from anywhere in the world as long as you have internet connection. This is possible by using an IoT broker, in this case we are using Ubidots.&lt;/p&gt;

&lt;p&gt;To use it you need to build the hardware module that connects to the light bulb, (which instructions are in this tutorial) and you will also need to create an Ubidots account.&lt;/p&gt;

&lt;p&gt;So let's get started...&lt;/p&gt;

&lt;h3&gt;
  
  
  Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;NodeMCU&lt;/li&gt;
&lt;li&gt;NPN transistor&lt;/li&gt;
&lt;li&gt;Solid State Relay 5V (can be a mechanical relay)&lt;/li&gt;
&lt;li&gt;Switch (Can be an electronics hobby switch, like a toggle, or a wall switch)&lt;/li&gt;
&lt;li&gt;1k Ohm resistor&lt;/li&gt;
&lt;li&gt;2.2k ohm resistor&lt;/li&gt;
&lt;li&gt;Breadboard&lt;/li&gt;
&lt;li&gt;USB-A to micro-USB cable&lt;/li&gt;
&lt;li&gt;A/C Light Bulb&lt;/li&gt;
&lt;li&gt;Light Bulb Socket&lt;/li&gt;
&lt;li&gt;Power Cord&lt;/li&gt;
&lt;li&gt;5V Phone charger&lt;/li&gt;
&lt;li&gt;Jumper wires&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Software and Services
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.arduino.cc/en/main/software" rel="noopener noreferrer"&gt;Arduino IDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.zablah.jason" rel="noopener noreferrer"&gt;Jason&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ubidots.com/education/" rel="noopener noreferrer"&gt;Ubidots&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ubidots Account
&lt;/h3&gt;

&lt;p&gt;The first thing you need to do is go to the &lt;a href="https://app.ubidots.com/accounts/signup/" rel="noopener noreferrer"&gt;Ubidots for Education website&lt;/a&gt; and create an account. You can sign in directly if you already have a Twitter, Github, Google or Facebook account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530388%2Fubidots_register_ms86QxY4f7.PNG%3Fauto%3Dcompress%252Cformat%26w%3D1280%26h%3D960%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530388%2Fubidots_register_ms86QxY4f7.PNG%3Fauto%3Dcompress%252Cformat%26w%3D1280%26h%3D960%26fit%3Dmax" alt="Ubidots sign up website"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you have already created your account you will have access to your token, bu clicking on your username at the top right corner and clicking on API Credentials. Save your token, as we are going to use later on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530397%2Fubidotsdashboard_smcDlh0j8B.PNG%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530397%2Fubidotsdashboard_smcDlh0j8B.PNG%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Ubidots Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530401%2Ftoken_57BYXVvEi5.png%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530401%2Ftoken_57BYXVvEi5.png%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Ubidots Keys"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Jason App
&lt;/h3&gt;

&lt;p&gt;The app can be downloaded from the &lt;a href="https://play.google.com/store/apps/details?id=com.zablah.jason" rel="noopener noreferrer"&gt;Play Store&lt;/a&gt;, it is available in english and spanish.&lt;/p&gt;

&lt;p&gt;Copy your Ubidots token into the app, by tapping the settings tab, pasting it in the Ubidots key field and tap the save button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530415%2Fwhatsapp_image_2018-07-21_at_7_48_24_pm_htr3T60Cd6.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530415%2Fwhatsapp_image_2018-07-21_at_7_48_24_pm_htr3T60Cd6.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Settings tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530418%2Fwhatsapp_image_2018-07-21_at_7_48_24_pm_%282%29_cduYWnHhvr.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530418%2Fwhatsapp_image_2018-07-21_at_7_48_24_pm_%282%29_cduYWnHhvr.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Ubidots key field"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530422%2Fwhatsapp_image_2018-07-21_at_7_48_24_pm_%281%29_T1rBzAgKJr.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530422%2Fwhatsapp_image_2018-07-21_at_7_48_24_pm_%281%29_T1rBzAgKJr.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Saved Key in Jason"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the Hardware
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Safety First
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530922%2Fcaution-high-voltage-300x450_WfXuok0iXU.png%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530922%2Fcaution-high-voltage-300x450_WfXuok0iXU.png%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="High Voltage danger"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this project we are working with mains voltage (A/C voltage) which is dangerous if you don't know what you're doing, be very careful. NEVER touch ANY part of the circuit or work with it if it is connected to the wall power. If you don't know what you are doing, stop right here or get some help from professionals.&lt;/p&gt;

&lt;p&gt;I am only posting this educational tutorial and I am by no means responsible for any injuries or damage you may cause.&lt;/p&gt;

&lt;h3&gt;
  
  
  Schematics
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530710%2Fschematic_EHL21EeSdU.png%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530710%2Fschematic_EHL21EeSdU.png%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Schematics"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Power the NodeMCU by connecting &lt;strong&gt;VIN&lt;/strong&gt; to &lt;strong&gt;VCC&lt;/strong&gt; (5V) and &lt;strong&gt;GND pin&lt;/strong&gt; to &lt;strong&gt;GND&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Connect &lt;strong&gt;D8&lt;/strong&gt; to one &lt;strong&gt;end of the switch&lt;/strong&gt; and to a &lt;strong&gt;2.2K Ohm resistor&lt;/strong&gt; conected to &lt;strong&gt;GND&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Connect the other &lt;strong&gt;end of the switch&lt;/strong&gt; to &lt;strong&gt;3.3V&lt;/strong&gt; as the NodeMCU can only handle that - voltage in its I/O Pins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D1&lt;/strong&gt; to &lt;strong&gt;2.2k Ohm resistor&lt;/strong&gt; to the &lt;strong&gt;base&lt;/strong&gt; of the NPN transistor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Negative DC&lt;/strong&gt; of the relay to the &lt;strong&gt;colector&lt;/strong&gt; of the transistor.&lt;/li&gt;
&lt;li&gt;Transistor &lt;strong&gt;emitter&lt;/strong&gt; to &lt;strong&gt;GND&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Positive DC&lt;/strong&gt; of the relay to &lt;strong&gt;5V&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Negative&lt;/strong&gt; of light bulb to one &lt;strong&gt;AC pin&lt;/strong&gt; of the relay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Positive&lt;/strong&gt; of bulb to &lt;strong&gt;AC Live&lt;/strong&gt; (AC Positive).&lt;/li&gt;
&lt;li&gt;Other &lt;strong&gt;AC pin&lt;/strong&gt; of relay to &lt;strong&gt;Neutral&lt;/strong&gt; (AC Negative).
NOTE: &lt;strong&gt;VCC 5V&lt;/strong&gt; is going to be supplied from an usb cable connected to a simple phone transformer charger.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Breadboard
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530775%2Fwhatsapp_image_2018-07-22_at_2_17_06_pm_%281%29_vvTgCj6VlN.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530775%2Fwhatsapp_image_2018-07-22_at_2_17_06_pm_%281%29_vvTgCj6VlN.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Breadboard from top"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530768%2Fbreadboardnoext1_plq9g4h8LD.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530768%2Fbreadboardnoext1_plq9g4h8LD.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Breadboard from side"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530769%2Fbreadorardnoext2_XUExNJM0gi.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530769%2Fbreadorardnoext2_XUExNJM0gi.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Breadboard from other side"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530772%2Fwhatsapp_image_2018-07-22_at_2_17_06_pm_xsVLo7aTlf.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530772%2Fwhatsapp_image_2018-07-22_at_2_17_06_pm_xsVLo7aTlf.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Switch Front"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530773%2Fwhatsapp_image_2018-07-22_at_2_17_05_pm_%282%29_dyvvk58ycq.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530773%2Fwhatsapp_image_2018-07-22_at_2_17_05_pm_%282%29_dyvvk58ycq.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Switch Back"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The switch that I used has double throw, we only need one, so I connected its pin 1 to 3V of the NodeMCU and pin 2 of switch to NodeMCU pin D8.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530774%2Fwhatsapp_image_2018-07-22_at_2_17_05_pm_%283%29_k5ToKxqRMr.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530774%2Fwhatsapp_image_2018-07-22_at_2_17_05_pm_%283%29_k5ToKxqRMr.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Switch Back and breadboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The power supply is going to be a phone wall charger of 5V with a stripped usb cable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530776%2Fwhatsapp_image_2018-07-22_at_2_17_05_pm_%284%29_EChhLVAVuR.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530776%2Fwhatsapp_image_2018-07-22_at_2_17_05_pm_%284%29_EChhLVAVuR.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="5 volts transformer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By controlling the ground connection with the relay we can control the AC status of the light bulb&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530780%2Fwhatsapp_image_2018-07-22_at_2_17_04_pm_lNFuRCmyMT.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530780%2Fwhatsapp_image_2018-07-22_at_2_17_04_pm_lNFuRCmyMT.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Light bulb conecctions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530781%2Fwhatsapp_image_2018-07-22_at_2_17_04_pm_%281%29_uGuSZaE24t.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackster.imgix.net%2Fuploads%2Fattachments%2F530781%2Fwhatsapp_image_2018-07-22_at_2_17_04_pm_%281%29_uGuSZaE24t.jpeg%3Fauto%3Dcompress%252Cformat%26w%3D680%26h%3D510%26fit%3Dmax" alt="Solid State Relay connections"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Before you use the source code, you need to download some libraries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/esp8266/Arduino#installing-with-boards-manager" rel="noopener noreferrer"&gt;Arduino core for ESP8266&lt;/a&gt; (Read the "Installing with Boards Manager" step)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ubidots/ubidots-mqtt-esp" rel="noopener noreferrer"&gt;Ubidots ESP MQTT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: If you don't know how to add libraries to the arduino IDE, you can follow &lt;a href="https://www.arduino.cc/en/Guide/Libraries" rel="noopener noreferrer"&gt;this&lt;/a&gt;easy tutorial.&lt;/p&gt;

&lt;p&gt;Set your development board to NodeMCU 1.0 (ESP-12E Module).&lt;/p&gt;

&lt;p&gt;You need to change some variables in the code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your SSID (Name of your home Wi-Fi network)&lt;/li&gt;
&lt;li&gt;Password of your Wi-FI network&lt;/li&gt;
&lt;li&gt;Your Ubidots token
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;
&lt;span class="c1"&gt;//Include Libraries&lt;/span&gt;

&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;"UbidotsESPMQTT.h"&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="c1"&gt;//Define Constants&lt;/span&gt;

&lt;span class="cm"&gt;/*Replace the empty string
with your Ubidots TOKEN*/&lt;/span&gt;

&lt;span class="cp"&gt;#define TOKEN ""
&lt;/span&gt;
&lt;span class="cm"&gt;/*Replace the empty string
with your ssid, eg: "MyHomeNewtwork"*/&lt;/span&gt;

&lt;span class="cp"&gt;#define WIFINAME "" 
&lt;/span&gt;
&lt;span class="cm"&gt;/*Replace the empty string with your
wi-fi password, eg: "mypass123456"*/&lt;/span&gt;

&lt;span class="cp"&gt;#define WIFIPASS "" 
&lt;/span&gt;
&lt;span class="cm"&gt;/*Replace with any random string,
Ubidots requires it to be unique*/&lt;/span&gt;

&lt;span class="cp"&gt;#define MQTTCLIENTNAME ""
&lt;/span&gt;

&lt;span class="n"&gt;Ubidots&lt;/span&gt; &lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TOKEN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MQTTCLIENTNAME&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="cm"&gt;/**********************
  Auxiliar Functions
 *********************/&lt;/span&gt;

&lt;span class="cm"&gt;/*NOTE PINS ARE FROM THE 
INTERNAL ESP8266 MODULE 
NOT THE DIGITAL PINS FROM THE 
NODEMCU, MORE AT INFO: 
http://www.electronicwings.com/nodemcu/nodemcu-gpio-with-arduino-ide
*/&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;btnStates&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;//This is called every time we &lt;/span&gt;
&lt;span class="c1"&gt;//receive an update from the Ubidots server&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;byte&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;//Print the topic (pin) and its server state&lt;/span&gt;
  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Message arrived ["&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"] "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;reading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;topicPin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;payloadState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reading&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sc"&gt;'/'&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
      &lt;span class="n"&gt;topicPin&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
      &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
      &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;" STRING: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;topicPin&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="n"&gt;reading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;payloadState&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;//Apply server value to pin&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;ledpin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;topicPin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toInt&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;payloadState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toInt&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="n"&gt;digitalWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ledpin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/*********************
 Main Functions
 **********************/&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// put your setup code here, to run once:&lt;/span&gt;
  &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9600&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wifiConnection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;WIFINAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;WIFIPASS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;//Subscribe to all of out Outputs pins&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toCharArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="c1"&gt;//Insert the dataSource and Variable's Labels&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ubidotsSubscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"esp32"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;//Set all of our pinModes and save button states&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;OUTPUT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;INPUT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;buttonState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;digitalRead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="n"&gt;btnStates&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;buttonState&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// put your main code here, to run repeatedly:&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connected&lt;/span&gt;&lt;span class="p"&gt;()){&lt;/span&gt;
      &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reconnect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="c1"&gt;//Subscribe to all of out Outputs pins&lt;/span&gt;
      &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
        &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
        &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toCharArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
         &lt;span class="c1"&gt;//Insert the dataSource and Variable's Labels&lt;/span&gt;
        &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ubidotsSubscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"esp32"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;//Check if switch has changed state&lt;/span&gt;
  &lt;span class="c1"&gt;//If it did chnage, change the light state and save it to array&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;buttonState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;digitalRead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;buttonState&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;btnStates&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]){&lt;/span&gt;
      &lt;span class="n"&gt;digitalWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;buttonState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="n"&gt;btnStates&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;buttonState&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And finally upload your code to the board.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/NAoc2JeHu2g"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;It works! If you have any questions or suggestions please leave them at the comments section.&lt;/p&gt;

</description>
      <category>iot</category>
      <category>arduino</category>
      <category>android</category>
      <category>electronics</category>
    </item>
  </channel>
</rss>
