Most of the wireless Home automation system having WiFi or Bluetooth have a single CPU operation. Single CPU operation leads to same room automation or has less range.

But using two or more evive we can achieve a long range of automation and less implementation cost. Using two or more CPU connected wirelessly via WiFi is known aa multi-node operation.

In this tutorial, we are implementing multinode wireless home automation which means you can control N numbers of points from the same place.

In this case, we are using two evives to demonstrate two rooms in a house. controlled by attached buttons or wireless remote.

What do you need?


  • evive X 2 ( or more)
  • ESP8266 X 2 ( one esp for each evive)
  • IR remote pair X 1
  • Relays as you need
  • Wires


  • Arduino IDE
  • IR remote Core library
  • Modified Library for IR and WiFi


  • Connect ESP 8266 to evive’s WiFi header
  • Check your internet router is working or not ( You can use Mobile Hotspot instead of router)
    • Internet connection is optional
  • Connect evive with WiFi ( wifi_init(SSID,PASSWORD) )
  • Check Master’s IP Address
    1. Insert AT+CIFSR to master’s Serial
    2. Check on router’s DHCP Client list.
    3. Check in phone’s settings ( If you are using phone’s hotspot)
  • Insert Master’s IP address in slave’s code ( ie slave(IP))
  • now two evives can talk to each other via TCP connection
  • Slave has IR remote attached to RECV_PIN which can be found in IRfunctions.h
  • IR remote have different values of encryption you can find them in core IRremote library
  • zero and one keys are used in this example so they are defined in IRfunctions.h
  • zero key toggles the local variable which is connected to localpin
  • one key toggles the distant variable which is connected to the Host side and defined in write_pin_status(pin)
  • Also, the same distant host pin can be toggled by evive’s button 1 which has the same effect as the remote one key.

Detailed Function List

serialread()This function is used to read data serially from WiFi module and writes on Serial Monitor at 115200 baud
wifi_init( ssid , password )This function connects WiFi module to given Access point
Example wifi_init("SSID","Password123");
atat()This function is used to enter into Serial mode of ESP module.
Using this function with no contain in loop can allow us to communicate with WiFi module directly.
connectionCheck()This function checks connection and also prints IP address on Serial monitor.
wifi_cmd( commands)This function is used to send raw commands to wifi module.
master(port)This function is used to start controller as a master at given port
example master("50")
slave(IP, PORT)
This function is used to start controller as a slave mode at IP of Host and Port of Host
Example slave("","50")
sendPinStatus(pin)This function is used to send physical pin status to end host
example sendPinStatus(52)
write_pin_status(int pin)This function is used to write physical status of pin
dump(decode_results *results)This function is used to dump the results of IR and get new data.
IR_init()This function is used to start IR remote
IRloop()This function is used in void loop which updates the IR received data
localled()This function is used to toggled local pin
send_distant()This function is used to transmit data to remote host and manipulated by host.