Recently I purchased a TP-Link HS100 smart plug which I configured using an app and all is working well. Now I am trying to understand the underlying software and hardware architecture for such an implementation. Based on simple Google searches, the following is my understanding.

The headless smart plug makes a peer to peer connection to a device such as a mobile phone or computer. Using a device with a UI, network configurations are entered into the IoT device. The IoT device then connects to the access point to make some type of authentication with a cloud service, and establishes a connection. The mobile app communicates the commands to the cloud service which then relays the command to the smart plug. This is pretty straightforward.

I like to understand a little bit deeper in both software and hardware architecture for this type of design. It is fair say that there is some type of Wi-Fi device like the CC3100 Wi-Fi chip or similar. There is some type of microcontroller like an ARM Cortex. It could be an integrated Wi-Fi controller such as a CC3200.

What is the underlying software and hardware architecture to implement such a design to setup and establish a secure communication link? What type of minimum security needs to be implemented to secure the device? I am hoping someone on this site has experience with such an adaptation (2.4 GHz) and is willing to share their experience.

  • 5
    Check out this blog post for a lot of information about the newer HS110: softscheck.com/en/reverse-engineering-tp-link-hs110
    – Helmar
    Dec 17, 2016 at 16:33
  • 1
    Well, you're going to have: power, Wi-Fi and a controller on a PCB, and some software code to go with it, and that makes it do what it does.
    – aaa
    Jan 5, 2017 at 18:22

2 Answers 2


One of the underlying software and hardware architectures you can use to implement such a design is:

Arduino core for ESP8266 WiFi chip

It is based in a low cost single chip solution and it can use WPA2 for security.

On the server side you can use SSL/TLS. Check thinger.io arduino libraries 2.5+

For the server side you can also use thinger.io.

  • Note that you can also run MicroPython on the ESP8266. That has a number of benefits, one being that it's a lot easier than C/++, unless you are already fluent in C/++.
    – Petri
    Jan 8, 2017 at 16:52

You can also use a raspberry Pi. It comes with the wifi, ethernet, usb hardware. You can, for instance, install Linux on it. Then you have the full fledged support for any of the communication technologies.

I am using a raspberry pi 3+ with a relay board to effectively press buttons on the remote of my gate controller. I have software running on it that emulates a Rest api. My home automation server then communicates with it using this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.