# 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:
[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
* 45 USD
* Texas Instrument CC3200, Cortex-M4 @ 80MHz
* 256kb RAM + 2Mb Flash
[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
* 30 USD
* Unknown memory
* Arduino® IDE, Blynk
## The Good
The smoothest learning curve was definitely provided by the WiPy.
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 192.168.1.1. 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:
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.