Skip to main content

Internet controlled switch using NodeMCU and MQTT

Hello Sailors! Today we are going to build an internet controlled switch. Woah! Internet controlled Switch, sounds cool! With this switch we will be able to switch ON/OFF our appliances from anywhere in the world like a BOSS.

What's NodeMCU?

NodeMCU is an open-source IOT module which is based on ESP-12 module, we can create WIFI Access point with this or connect this to our wifi router and then control relays, servos etc. over internet or wifi.

What's MQTT?

MQTT is a light weight messaging protocol for small sensors and mobile devices. It consists of a broker(can be on cloud or local network) which routes the messages from publisher to subscriber.

In this project, we will be sending message to NodeMCU which is connected to the internet. The NodeMCU then switches the relay ON/OFF based on the message received. Sounds genius!

How this works?

We are going to create an MQTT topic and make our NodeMCU it's subscriber and MQTT dash, the publisher. MQTT  dash will publish the commands to broker which will be routed to the NodeMCU connected to the internet. NodeMCU will translate and command and act accordingly.

Let's begin...

Things we need:

Note: After completing CloudMQTT registration create a topic over there e.g. "uniqueID/topic". We shall be using this topic to communicate with NodeMCU.

Circuit Setup:

Connection details:

  • D5 pin of NodeMCU is connected to input/signal pin of Relay.
  • 3v3 pin of NodeMCU to 3v3 source.
  • Vcc of relay to 5V source.
  • All ground pins are connected to common ground.

Android Setup:

Now, to communicate with the device we need to set up our android/iphone. We have downloaded the MQTT Dash application from Google Play Store.

Open the app, add a dashboard using + sign on top right and fill in the details from CloudMQTT console page:

Name: Super Awesome Switch
Address: e.g.
Port: e.g. 1883
UserName: Will be provided at CloudMQTT Console
Password: Will be provided at CloudMQTT Console

Click save button on top right, a new dashboard is now available. Open this dashboard, it will connect and display a blank page. Again, click on + sign now to add Switch on screen. It will ask for few details:

Name: Relay 1
Sub: uniqueID/topic

We will leave other 2 check boxes checked and ON as 1 and OFF as 0. Click Save on top right and we are done with App configuration.

Code Setup:

We are set to upload our code to NodeMCU. Connect NodeMCU to computer with Micro USB cable, and open Arduino IDE. Now we shall check the port connected and the device selected is NodeMCU 1.0 from the Tools menu in Arduino and finally upload our code. Code on GitHub
Lines to be manipulated are mentioned within the code as comments.

Once the code is uploaded to NodeMCU, open Serial Monitor to check the print commands. If it is connected to CloudMQTT server, open your MQTT dash app in your Android phone and try switching ON/OFF the relay, it will work like a BOSS. Now, we can remove the usb cable and connect our NodeMCU to 3V3 source.

So, guys that's it for today. I hope you enjoyed the post, feel free to ask questions or provide suggestions. There is a lot of room for improvement in code and circuit.

Till then, Happy IOTing.


Popular posts from this blog

Controlling Servo Motor with BLYNK app over WiFi

Hello Shippers, hope you are having a great time! Today, we are gonna build a simple project of controlling servo motor with BLYNK app over Wifi.
Overview: The slider on the blynk app will send a value to the NodeMCU/ESP8266 and this value will be written on PIN 8 and the servo rotates that much degrees. That's the way we are controlling servo motor. Ahaa!

Things we need:Hardware:Servo SG90NodeMCUMicroUSB cableJumper WiresSoftware:Arduino IDEBLYNK appCircuit:
Connections:D8 pin of NodeMCU connects to Command pin of Servo Motor.3V3 PIN of NodeMCU connects to Power PIN of Servo motor (usually RED one).GND PIN of NodeMCU connects to GND of servo motor (usually BLACK one). Simple connections, huh!
BLYNK app Setup on phone:Create a New Project in BLYNK app.Write Project Name and Select ESP8266 or NodeMCU from dropdown.An AUTH token will be sent to your registered email, note this down.Tap on the screen and add a SLIDER widget on the screen.Tap on the Widget, select Digital PIN 8 and Start…

Time scheduled electric switch controlled with Blynk app

Most of the times when we go out of home for some days, we think of having some device that could switch ON/OFF (let's say) Refrigerator (or any other important appliance)for some hours during the day. Today, we are going to make such time scheduled electric switch which switches ON/OFF at times which we set the in our Blynk app. Woah!

Let's begin!
Things we need:
Hardware:5V relayNodeMCUJumper wiresBreadboard3V3 and 5V power sourceElectrical WiresSoftware:Arduino IDEBLYNK app It's circuit is same as we have created for our Smart Switch. So, if you already have that circuit set up, go ahead with Blynk app set up and Start playing.
Connections:D5 pin of NodeMCU connects to IN1 pin of 5V relay.3V3 of NodeMCU connects to 3V3 powers source and GND to GND.Vcc of relay connects to 5V source and GND to GND.Live wire is connected directly to appliance.Neutral wire from source comes to relay NC pin and another wire goes out from COM pin which is connected to the appliance.Let…

Color changing LED Strip with BLYNK app

Hello Sailors! Have you ever thought to own a color changing LED strip, so you could change it's color based on your mood, yes I am taking about Mood Light. Today,  we are back with one more interesting IOT project where are going to create a mood light(LED strip) with BLYNK app. Sounds Romantic, hmm!

Let's Rock' n Roll.
Overview: BLYNK app will send message to your NodeMCU over Wifi, these signals will be translated by NodeMCU and LED strip will change color as received in the message.
Things we need:Hardware:SMD 5050 Led Strip (Color changing LED strip)Jumper WiresTIP 120/122 NPN transistor Buying this from local shops would be a better option12V & 3.3V SupplySoftware:Arduino IDEBLYNK AppCircuit: Connections:D5 pin is connected to TIP 120 NPN(U1) transistor's Base pin.D6 pin to Base pin of U2.D7 pin to Base pin of U3.U1, U2 and U3's Collector pins are connected to respective LED color pinU1, U2 and U3's Emitter pins are grounded. Grounded, That's sad!No…