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.
    – Paul
    Jan 5, 2017 at 18:22

1 Answer 1


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

Your Answer

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

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