# Venturing down the IoT Rabbit Hole The [Microsoft Hackathon](https://blogs.microsoft.com/firehose/2016/07/25/oneweek-2016-kicks-off-with-hackathon-and-bright-ideas/#sm.00000davkjlyn8d5yzdy4v2krpizx) found us this year tinkering with some IoT-related technologies. [Bernd](https://medium.com/@berndplontsch), [Bence](https://medium.com/@bfaludi), [Balázs](https://medium.com/@bbonis) and me also tried to evaluate the reality of the commercially available iOT devices — and found a promising, but somewhat grim landscape. We tried to bring to life the following four devices in different scenarios: ![](https://raw.githubusercontent.com/soobrosa/soobrosa.github.io/master/images/1*B1BfJm45Y9va9h_WJprIoQ.jpeg) [Samsung Artik 5](https://www.artik.io/modules/overview/artik-5/) * 100 USD * ARM Cortex A7x2 @ 1GHz * 512MB LPDDR3 + 4GB eMMC * WiFi, Bluetooth, Zigbee, Ethernet * Fedora, Arduino® IDE, C, C++, Java, JavaScript, Python, (Go) ![](https://raw.githubusercontent.com/soobrosa/soobrosa.github.io/master/images/1*rDk2uiXtNXLTjP0kf1Piqw.png) [WiPy](https://www.pycom.io/solutions/py-boards/wipy/) * 45 USD * Texas Instrument CC3200, Cortex-M4 @ 80MHz * 256kb RAM + 2Mb Flash * WiFi * MicroPython ![](https://raw.githubusercontent.com/soobrosa/soobrosa.github.io/master/images/1*4rjHFHWoMZWTO2THmBpGHg.jpeg) [Raspberry Pi 3](https://www.raspberrypi.org/products/raspberry-pi-3-model-b/) * 40 USD * 1.2GHz 64-bit quad-core ARMv8 CPU * 1GB RAM * WiFi, Bluetooth, Bluetooth LE, Ethernet * proper Linux and what not ![](https://raw.githubusercontent.com/soobrosa/soobrosa.github.io/master/images/1*u5-QluMSyBBVoA4iq1lo8w.jpeg) [Sparkfun Blynk](https://www.sparkfun.com/products/13794) * 30 USD * ESP8266 * Unknown memory * WiFi * Arduino® IDE, Blynk ## The Good The smoothest learning curve was definitely provided by the WiPy. ![](https://raw.githubusercontent.com/soobrosa/soobrosa.github.io/master/images/1*oXRF6itgalZfcM2_xAKT1g.jpeg) WiPy with an infrared distance sensor connected **“When the WiPy boots with the default factory configuration starts in Access Point mode with ssid that starts with: wipy-wlan and key: www.wipy.io. Connect to this network and the WiPy will be reachable at In order to gain access to the interactive prompt, open a telnet session to that IP address on the default port (23). You will be asked for credentials: login: micro and password: python.”** Connecting a sensor and typing the following lines in the prompt will give you instant gratification — and data. ``` > from machine import Pin, ADC > import time > adc = ADC() > apin = adc.channel(pin=’GP4') > while True: … print(apin()) … time.sleep(1) ``` We also verified that IoT cloud services are abundant ([MS](https://www.microsoft.com/en-us/cloud-platform/internet-of-things-azure-iot-suite), [AWS](https://aws.amazon.com/iot/), [Samsung Artik](https://artik.cloud/), [IBM BlueMix](http://www.ibm.com/cloud-computing/bluemix/internet-of-things/) et al) and they are providing a good and free playground for the amateur to start out. The most promising emerging communication technology seems to be [LoRa](https://www.lora-alliance.org/) as energy consumption will go down and communication range will go up. [Go and add](https://www.thethingsnetwork.org/) your own endpoint ;) ## The bad Getting serious is still hard given the immaturity of the ecosystems: * *khm* patchy documentation is everywhere as most devices are still works-in-progress, * setup and discoverability is far from trivial, default settings raise serious security concerns— remember, even the Amazon Dash has to chirp home, * talking securely to remote services is hard — the OAuth dance is very outlandish to iOT (you have to have an own, exposed IP, maybe be able to handle web callbacks, even HTTPS), * there’s no de-facto communication model (push/pull, broadcast/poll) and developers are not even nudged in either direction with best practices, * the current state of the union is that IoT devices have to be considered as ‘dumb’, local sensors and you need a bridge (at least a RasPi) to connect them to the outer world.