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.
I have used the Arduino for a few projects, but I recently learned about these new (and very tiny) all-in-one programmable WiFi enabled micro-controllers called ESP8266. While the ESP8266 are extremely small and cheap ($2-4), they are challenging to use for learning and development.
During my investigation into the ESP8266, I came across the NodeMCU, which is an ESP8266 breakout board that handles 5v->3.3V leveling, USB to Serial (UART), and exposes all the GPIO pins. Due to the size, cost ($8-15 shipped from the US and $4-7 from China) and built in WiFi, I cannot really recommend using an Arduino to start learning with anymore. The NodeMCU is a really great option for starting to play with programmable micro-controllers.
I have a Mac, so I wanted to make sure that I could connect to and program the NodeMCU. I noticed a few differences with these boards. All of these boards come from China and to make them slightly cheaper, they tend to use two different types of USB to Serial chips.
One of them is the CH340G and it does not use a signed Mac driver. I was not excited about disabling (or lowering) the security level in the Mac OS to make this work. It does work with Linux and they have Windows drivers, but the badly translated Chinese website kinda turned me off a bit.
The chip I ended up going with is the CP2102 from SiLabs. I tend to trust the driver for this chip a bit more. The boards are slightly more expensive ($1-3), but I can verify from personal experience that they work with Macs.