What if I told you that you could connect any sensor you wanted to the internet without a single bit of code or wiring for less than $30? What if I told you that you could also control connected outputs with your phone from anywhere?
Well, you better believe me because the Wio Link is an internet-connected plug-and-play board that delivers all of that for an unbelievably small price tag.
Seeed Studio’s Kickstarter labels it as an ESP8266-based open-source WiFi solution to simplify IoT development by virtualizing plug-and-play modules to the Web of Things. The lowest price tier for the Wio Link gives it to you for just $9. NINE DOLLARS. This super low price is mainly due to the fact that the Wio uses the increasingly popular ESP8266 WiFi module.
Now, I’ve had some experience with the ESP8266 and, while it’s cheap, it can be a real pain to program. The Wio Link completely removes code from the picture (not to say that you can’t still write your own programs to interface with it to get fancy – more on that below).
The board also removes the need for circuit-building and wiring. I’ve reviewed Grove sensors before (also made by Seeed) which use the same universal 4 pin connectors that the Wio interfaces with. Everything just plugs in and is immediately accessible.
Seeed claims that with the Wio Link you can build an IoT application in just 5 minutes and that is not just Kickstarter hype. They actually sent me one to play with and it is just as incredible as it sounds. The device itself is super easy to use and the companion app is very impressive.
I put together a mini tutorial on hooking up the Wio Link to stream to Initial State (create an account here) to show exactly how it works. I stream two different ways – with IFTTT and with Python.
Setting up the Wio Link
Getting the Wio up and running is super easy. You just plug in the Wio, open the Wio Link app (after you’ve created an account), and do as it says. When you first reset the Wio, it acts as an access point. You then connect to it to configure your desired WiFi settings.
Once it’s done connecting to WiFi, you’re ready start attaching sensors.
Click on the desired Wio in the list of connected Wios to go to a screen where you can update what’s attached to the board and where.
Select which slot you’d like to connect something to and you’ll be taken to a list of which sensors are compatible with that pin type.
There’s already an extensive list of sensors that Seeed has fitted with the universal 4 pin connector, so you’ll probably find what you’re looking for.
Select your sensor – in my case I attached a DHT11 temperature and humidity sensor to the Digital0 port and a DHT22 pro temperature and humidity sensor to the Digital1 port.
Once you’ve attached and selected the correct sensors and ports, you update the boards firmware from the app by pressing the Update Firmware link on the top right corner of the app window. Over-the-Air firmware updates are another cool feature of the Wio Link.
Now to actually test if data is being read correctly.
Go back out to the list of Wio Link devices, swipe left, and click on API.
What you’ll see is a long list of URLs, followed by a Request Method and examples of Returns. The Wio Link is interesting because it communicates it’s data by broadcasting a URL that, when visited, returns information in a JSON format. If all of that sounds foreign to you, no worries – the Wio also has an IFTTT connection.
Streaming Wio Sensor Data to Initial State (IFTTT)
If This Then That is a service that lets you setup triggers between services like email and Google Sheets. Seeed has setup a Wio Link integration, which makes getting the sensor data from the Wio really easy.
I went through and created a “recipe” to stream data to Initial State (you’ll have to do this for every signal you want to send):
- Create an IFTTT account
- Create a Recipe
- Click on “this” then search for and select “Seeed”
- Select “Monitor a sensor value”
- Under “Which sensor value?” you’ll find a dropdown that lists valid sensor readings you can get from your Wio. For temperature, I select “greater or equal” for my “Compare condition” and then entered zero so that any temperature reading over 0 degrees would trigger a response (in this case stream to Initial State).
- Click on “that” then search for and select the “Maker” channel
- Select “Make a web request”
- This is the part where we stream to Initial State. In the URL box, we are sending to the Initial State API. Be sure to put your Initial State access key after “accessKey=” and change your bucket key to whatever you want. I set mine to “wio-ifttt”. The Method is “POST”, and Content Type is “application/json”. The Body is where we specify what we want the signal name to look like in our Initial State dashboard and which value to stream. If you click the little flask in the upper right corner of the box, you can see what Seeed ingredients you can insert. I have “GroveName”, “SensorName”, and “SensorValue” in mine, though really “SensorValue” is the only necessary one. “key” is the name of the signal and “value” is the sensor reading.
- Create the recipe!
- The last step is to create our Initial State bucket (it holds our data according to bucket key) so we can actually see the data coming in. You can do this a couple ways, but the easiest is just to create one directly from the bucket shelf. Click the +cloud icon at the top of your bucket shelf to create a new bucket. Be sure to name the bucket, then check the “Configure Endpoint Keys” checkbox to change the bucket key. Make this the same bucket key that you used in Step 8 (in my example, “wio-ifttt”).
Go to Initial State to check out your data! I’ve been running this Recipe for about a week now and it seems to poll anywhere between every 3-15 minutes. I wanted to compare the DHT11 vs the DHT22 (Pro). You can see the resolution difference just by looking at the graphs!
Streaming Wio Sensor Data to Initial State (Python)
I also wrote a Python script to parse the Wio Link’s JSON output and stream it to Initial State. You can run this script on any device with an internet connection like your laptop or a Raspberry Pi.
- First you’ll need to install the Initial State Python Streamer
- Then just run a script like this that has your Wio Link Access Token and Initial State Access Key. Certain parts will need to be changed depending on what sensors you have attached to the Wio and where (marked in comments), but those are easy changes to make!
I also wrote one for the IR distance interruptor.
Here’s what the data looks like in Initial State:
This is polling every 5 minutes and also displays error messages when they occur. You can see that the data is a bit more “noisy” because there are more data points than in the IFTTT stream. You’ll notice that the maximum and minimum values are basically the same, though.
As you can see, the Wio Link is a super affordable and easy way to put internet connected sensors wherever you want! And getting that data into something like Initial State for collection and visualization is also very easy.
The Wio Link Kickstarter has already reached full funding, but it’s open until January 6th, so be sure to back a Wio Link while you still can!