I created this project to learn more about IoT. For hardware, I used the ESP8266, and for software, I created a mobile app to interface with it. The app was created with Meteor JS, and I used MQTT for communication between the app and the ESP8266 (device).
Ultimately, I ended up with an app that can connect to multiple devices to control relays (turn on and off lights and LEDs) and read sensors (temperature and humidity).
If you are considering I0T, then you need to learn about MQTT.
MQ Telemetry Transport Protocol (MQTT) is a lightweight publish/subscribe messaging protocol that offers a number of advantages over HTTP. It is binary and has a much smaller payload, which reduces power usage and transmit times with devices.
I thought about writing an article about this, but to be honest, HiveMQ has a great write up here that I recommend checking out.
Mosquito is an open source MQTT broker. I also recommend this if you want to run your own server. I have this running on a Raspberry Pi to support one of my projects.
I plan on publishing more posts on this topic. Please, join my mailing list, so I can notify you when new posts are available.