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).
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.