Using Sigfox Spot’it with thethings.iO to geolocate your Sigfox things

Geolocate a device is very powerful in some use cases. Understand where is an asset, my car or my dog is priceless in specific moments where there is money or life in risk. All of this depends on having GPS availability on the hardware, usually a GPS chip introduced on the shield with an antenna. With the GPRS and 3G, etc the antenna’s triangulation enabled IoT devices (and mobile handsets) to become geolocalized with some errors but without GPS chip. Now Sigfox is releasing a similar feature, Sigfox antennas triangulation enable geolocation with no GPS chip, that makes your hardware cheaper than expected.

Today we are going to connect a Sigfox device with the Spot’it service. Spot’it is the newest location manager of Sigfox. Now with thethings.iO and Sigfox Spot’it you can track all your Sigfox devices in a very simple way. thethings.iO is the most simple Sigfox IoT platform.

Make sure you already have:

Let’s start!

thethings.iO IoT Platform

Once you have an account, if you don’t have a Sigfox product to use, follow this steps:

  1. Enter to your account and click on Things.
  2. Press on Create new IoT product.
  3. Select Sigfox as Serialisation format.
  4. Give a name and choose Akeru for the board.
  5. Click on the previously created product and copy the subscription URL.

Registering the Callback at the Sigfox backend

Once you have copied the previous url, navigate to the Sigfox backend.

  1. Click on your device.
  2. Navigate to callbacks.
  3. Create a new callback. Make sure you choose Service as the type of callback and GEOLOC as the type of service.
  4. Beginning with the previous URL, make sure to erase the data={data} and include lat and lng to the previous url.

The url should look like this: https://subscription.thethings.io/sgfx/geo/1234/abcdefghijklmn?id={device}&lat={lat}&lng={lng}

Also, if you want any other Sigfox variables, feel free to add: &radius={radius}&seqNumber={seqNumber}&snr={snr}&time={time}&station={station}&rssi={rssi}

All the Sigfox variables that you specify will be automatically parsed into resources in your thethings.iO thing.

Showing device location as a path at thethings.iO is simple

First of all go to create a thethings.iO dashboard.

To create a dashboard in your thethings.iO account to show the device location in a map. The location should be presented as a path of different points in a map.

  1. Click on the Add Widget blue button.
  2. Give a name to the Widget.
  3. Select Thing Resource inside Data Source.
  4. Select thing you just created before.
  5. Select ‘Spotit’ as the name of the resource that contains the location.
  6. Check Historical and press the Routes box.
  7. Click on Costumize it and select the number values you want to show. Also select “Activate markers to show each point and Activate path”.
  8. Accept and Save!

Easy right? Now you can geolocate any Sigfox device and see the routes and more information at thethings.iO in just 5 minutes. Try it yourself!

Connect mcThings with thethings.iO IoT platform

Hardware is one of the most important part of the connected products actually. During the prototyping phase it’s important to have great hardware running your use case. We found that mcthings it’s a great hardware platform to build prototypes and real hardware on the top. If you are developing a project in United States, Latam or Oceania using Sigfox, you cannot miss mcThings hardware platform. Of course you also can use this hardware for WiFi and other protocols as we are going to show today with thethings.iO IoT platform.

On todays post we’re going to connect the mcModule 120 with the MQTT protocol and the mcGateway (from mcThings) to thethings.iO.

 

 

Before following some steps, please make sure:

  • You have downloaded and installed mcStudio.
  • A micro usb cable to connect the mcGateway or the mcDongle (to OTA update the devices).
  • A mcGateway, a mcDongle and a mcModule.

 

Lets start! Connecting the mcGateway to the Wi-Fi / Ethernet If you want to connect the mcGateway to the internet using Wi-Fi, as the Quick start guide specifies:

  1. Ensure the Network Mode toggle switch is in the Wi-Fi position. This is indicated by “WIFI” on the underside of your mc-Gateway.
  2. You can connect the gateway via WPS or directly to your WIFI network using the gateway config. For this project, we connect the gateway using WPS.
  3. Start the WPS mode on your Wi-Fi router.
  4. Hold down the push button labeled USER SW for 1 second and release to start the WPS process.
  5. The amber LED labelled CONN will flash while attempting to connect to Wi-Fi
  6. When a network connection is established, the amber LED labeled CONN will turn on.

Otherwise connect the Ethernet cable to the mcGateway.

thethings.iO IoT platform

 

Create a thethings.iO account:

If you still don’t have an account, please register at thethings.iO IoT platform. In order to create a new thing:

  1. Enter to your account and click on Things.
  2. Press on Create new IoT product.
  3. Give a name and choose Other for the board.
  4. Finish the steps and remember the thing Token.

Programming the mcThings mcModules

 

    1. Download or clone thethings.iO mcthings repository. Place the contents in your mcthings project and libraries (by default in “My Documents”).
    2. Open the mcStudio application. Change the thing token with an actual token provided to you in the previous step.

 

    1. Connect to the gateway and to the module. Navigate to “Tools” and click on “Devices”. Select the connected mcGateway.

 

    1. Configure the mcGateway with the correct thethings.iO MQTT broker:

 

  1. Build and deploy the code to the modules.

Create a dashboard with thethings.iO IoT platform

 

  1. Create a thethings.iO dashboard: Now it’s time to create a dashboard in your thethings.iO account to show all the values sent by the mcModules. Lets create some charts:
    1. Click on the Add Widget blue button.
    2. Give a name to the Widget.
    3. Select Thing Resource inside Data Source.
    4. Select thing you just created before.
    5. Select the name of the resource you want to display and the format (pie, chart, graph…).
    6. Click on Customize it and select the number values you want to show.
    7. Accept and Save!

Repeat this last step to build awesome dashboards with thethings.iO!

Upgrading Apache Cassandra Cluster

At thethings.io we use Cassandra as our master time series database. Some weeks ago we needed to upgrade our Cassandra version to a major release version in order to improve the QoS of our architecture.

Cassandra with thethings.iO

This post aims to group all steps that we use for upgrade our Cassandra cluster to a newer version. There are a lot of documentation and sometimes it is a little bit annoying to look at different pages. In case that you use Cassandra for Internet of Things (or any other use case) we hope that this post will be useful.

This section describes how to upgrade Apache Cassandra with zero downtime if your cluster has a replication factor of at least 3.

Note:

  • Be careful when you run these steps on production environments.
  • For command simplicity I don’t include the user and password. Ex: nodetool drain -u username -pw password

Prerequisites

  • Make sure you have an up-to-date daily backup. We use nodetool snapshot tool for that but there are other options as well like OpsCenter.
  • Familiarize yourself with the changes and features in this new release.
  • Remove all dead nodes.
  • Do not run nodetool repair or other tasks.

Please check this link for more information.

Steps for upgrade cassandra version

1. Run nodetool drain before shutting down the existing Cassandra service. This flushes all memtables from the node to SSTables on disk. Cassandra stops listening for connections from the client and other nodes. Also prevents overcounts of counter data, and speeds up restart post-upgrade.

nodetool drain -h hostname

2. Stop cassandra services.

service cassandra stop
service datastax-agent stop

3. Back up your cassandra configuration files from the old installation to safe place.

4. Update java version.

apt-get update
apt-get install oracle-java8-set-default
java -version

5. Install the new version of Apache Cassandra.

apt-get update
apt-get install cassandra=3.0.9

If you are running Cassandra from a source you should download the latest tar.gz instead of using the package manager.

6. Configure the new product. Review, compare, merge and/or update any modifications you have previously made into the new configuration files for the new version (cassandra.yml, cassandra-env.sh, etc.). Take care with the configuration options and check version restrictions.

7. Start the cassandra services.

service cassandra start
service datastax-agent start

Check the logs for warnings, errors, and exceptions.

tail -f /ttio/var/logs/cassandra/system.log # or path where you set your logs.

8. Run nodetool upgradesstables

nodetool upgradesstables

9. Check the logs for warnings, errors, and exceptions.

tail -f /ttio/var/logs/cassandra/system.log # or path where you set your logs.

10. Check the status of the cluster

nodetool -h hostname status

11. Repeat theses upgrade steps on each node in the cluster.

References

 

[Note: this article was first published on Adria Galin’s blog]

The most simple enterprise IoT platform

A year ago, I wrote Keep IoT simple, stupid where I was trying to explain that with thethings.iO we are trying to bring simplicity into the complex ecosystem of the Internet of Things. Store, analyze and visualize data should not be hard or need any specific team with knowledge on scaling machines, among others. This is the reason why one year ago, at thethings.iO we wanted to become the most simple enterprise IoT platform. And here we are!

The most simple enterprise IoT platform

The most simple enterprise IoT platform

During this year we have participated in several events, research documents and interviews and it’s great to see that we are working towards the right direction, to make thethings.iO becoming the most simple enterprise IoT platform instead of a complex mix of several features. Let me give you few examples.

IoT platform Scorecard made by Machnation

One of the most interesting IoT platform reports, mentioned us as one of the best AEP IoT platform. AEP IoT platform means Application Enablement Platforms that bring a collection of services and features to the hardware and IoT devices. We recently received the results from this research made by Machnation. It’s a really interesting document with a scorecard comparing thethings.iO with other 34 IoT platforms in the market (feel free to purchase it and share it).

IoT platform Scorecard 2016 by Machnation

IoT platform Scorecard 2016 by Machnation

Here some of the comments regarding with thethings.iO:

thethings.iO is positioned in the upper right-hand quadrant of the IoT AEP ScoreCard 2×2 matrix.

thethings.iO is ranked higher than established platforms like PTC ThingWorx in the report. And thethings.iO is towards the top of the ranks compared to the other 34 vendors evaluated.

That’s great that someone who is independent says nice things about thethings.iO.

And more

On the other hand we got insightful feedback from customers, friends, competitors and others letting us learn about what are the most interesting next steps. Few days ago, I read one of these lists that appear by the end of the year. In this case it was a list of the best 20 IoT startups in UK (or more potential or something like that I don’t remember now), and it was great to see one of our customers mentioned there. It makes us proud to see that our customers rock and they rock because we do.

thethings.iO the most simple enterprise IoT platform

We are building the most simple enterprise IoT platform in the market. Call it the most simple Sigfox IoT platform, the most simple industrial IoT platform or change *enterprise* by whatever you think it makes sense.

During 2017 you are going to see more and more features that go towards that direction. Feel free to let us know your feelings and feedback and let’s stay connected during 2017.

Connect KEPServerEx to an IoT platform

Industry is getting into the Internet of Things, some call it Industry 4.0 some other use other names. The hard thing of the industry is that sometimes the companies still use old protocols, legacy machines and systems. The protocol OPC UA (Unified Architecture) is one of the most extended IoT industrial standard for automation. At thethings.iO we want to lead industrial companies to get into the Internet of Things (IoT) and Industry 4.0. This is the reason why we are enabling our industrial customers with IoT gateways and compatibility with existing industrial products such as KEPServerEX, to seamlessly stream real-time industrial data to thethings.iO and apply all the operational tools and Big Data with cloud code and build dashboards and apps for final customers, among other features.

kepserverex and thethingsiO IoT platform
Today we will show you how to connect KEPServerEx to thethings.iO with MQTT. KEPServerEX is an OPC server and connectivity platform for industrial automation. As you will see, it is very fast and easy to forward data from your industry to IoT platform of thethings.iO ! So let’s get started!

Step 1: Install KEPServerEX

First, during the installation of KEPServerEx, we choose the IoT Gateway under Plug-Ins to be installed as well. We select ‘Entire feature will be installed on local hard drive’.

kepserverex-thethingsio-iot-platform-step-01

Step 2: Add an agent with REST client

After the installation is finished, we open KEPServerEX and then right-click on ‘IoT Gateway’ and select ‘New Agent’.

kepserverex-thethingsio-iot-platform-step-02

Then we choose a name for your agent and as type “REST Client”. Click ‘Next’.

kepserverex-thethingsio-iot-platform-step-03

Now, at the endpoint configuration, at the URL field we insert http://api.devices.thethings.io/v2/things/THING_TOKEN where THING_TOKEN is the token of the thing you want to send the data to. As method, we choose POST, put the publish rate to 1000 and select ‘Wide Format’.

kepserverex-thethingsio-iot-platform-step-04

After that, we  leave the header configuration empty and click ‘Finish’.

kepserverex-thethingsio-iot-platform-step-05

Step 3: Add IoT Items

The next step is to add an IoT Item to send data from. In order to do that, we click on our freshly created Agent and then on ‘Add IoT items…’.

kepserverex-thethingsio-iot-platform-step-06

For this tutorial we will use a simulator which generates random numbers and send them to thethings.iO

In the Tag Browser, we click on Simulation Examples, then on ‘Functions’ and choose Random4. Then we click ‘Apply’.

kepserverex-thethingsio-iot-platform-step-07

At the window for the item configuration that opens next, in the publish field we select ‘Every Scan’, leave everything else as it is and click ’OK’.

kepserverex-thethingsio-iot-platform-step-08

Step 4: Configure the agent

The last step is to do some final configuration on the agent we created before. For that, we right click on the agent  and choose ‘Properties’.

kepserverex-thethingsio-iot-platform-step-09

Then, in the body tab, we choose ‘Advanced Template’ and put the following:

{
    “values”:[
    |#each VALUES|
        {“key”: “test”, “value”: “|VALUE|”}#unless @last|,|/unless|
    |/each|
    ]
}

kepserverex-thethingsio-iot-platform-step-10

After that,  we click on ‘OK’. If everything went well you will see the following message:

kepserverex-thethingsio-iot-platform-step-11

We can now go to our panel at thethings.iO and see how the random numbers are arriving!

kepserverex-thethingsio-iot-platform-step-12

thethings.iO is the most simple enterprise IoT platform. Do not hesitate to sign up and test it with your KEPServerEX with OPC UA. We are the IoT platform that you are looking for.

Particle Photon with thethings.iO IoT platform

At thethings.iO we love to play with hardware and today we are going to show you how to program and send data with a Particle Photon board to thethings.iO. For this, we are going to use the Particle Buid system as the IDE because it’s more integrated on the Particle system.

Particle loves thethings.iO IoT platform
The Particle Photon is a development kit made with a micro-controller ARM Cortex M3. It brings Digital I/O and Analog input and output, SPI, I2C, CAN, PWM among other.

Particle Photon

Particle Photon

Let’s start showing you how to connect the Particle Photon which is a WiFi board with thethings.iO IoT platform in order to have a Photon on steroids thanks to thethings.iO features.

If you already have an account and your device is already claimed, please jump to step 3.

    1. Claim your photon: Install particle-cli and type “particle setup” from a terminal console. This command will guide through account creation and device claiming (make sure you connect your device via usb first).
    2. Create a thethings.iO account: If you still don’t have an account, please register at thethings.iO IoT platform. In order to create a new thing:
      1. Enter to your account and click on Things.
      2. Press on Create new IoT product.
      3. Give a name and choose Other for the board.
      4. Finish the steps and remember the thing Token.
Particle IDE

Particle IDE

  1. Navigate to the particle build IDE.
      1. Click on the fourth row (Devices) and press the star in order to select the devices as preferred to flash.
      2. Clone our github repository about the Photon Particle. Feel free to reproduce our example or change the code at your own.
    #include "MQTT/MQTT.h"
    
    void callback(char* topic, byte* payload, unsigned int length) {
        // MESSAGE HAS ARRIVED FROM THE THETHINGS.IO
        String text = "";
        for (int i = 0; i < length; i++)
            text.concat((char)payload[i]);
        Serial.println(text);
    }
    
    MQTT client("mqtt.thethings.io", 1883, callback);
    
    int a;
    String TOKEN = "YOUR TOKEN";
    String TOPIC = "v2/things/"+TOKEN;
    String WIFI_SSID = "your wifi";
    String WIFI_PASSWORD = "your password";
    
    void setup() {
        pinMode(D1,INPUT_PULLDOWN);
        digitalWrite(D1, LOW);
        WiFi.on();
        WiFi.setCredentials(WIFI_SSID, WIFI_PASSWORD); 
        while(!WiFi.ready()) {
            Serial.print(".");
        }
        Serial.println("");
        Serial.print("Connected ssid");
        while (!client.connect("photonclient")) {
            Serial.println("Could not subscribe, retrying...");
        }
        client.subscribe(TOPIC);            // SUBSCRIBE TO RECEIVE CHANGED VALUES FROM YOUR RESOURCES
    }
    
    void loop() {
        a = random(0,10);
        if (digitalRead(D1) == HIGH) {
            message = "{\"values\":[{\"key\":\"fun\",\"value\":"+String(a, DEC)+"}]}";
            client.publish(TOPIC, message);
            delay(5000);         // ADDED A LITTLE BIT DELAY TO REDUCE BOUNCES
        }
        if (client.isConnected()) {
            client.loop();
        }
        
    }
    
    1. Flash the code into the Photon using the thunder icon (top left section).
  2. Create a thethings.iO dashboard: Now it’s time to create a dashboard in your thethings.iO account to show all the values sent by the Photon. Lets create some charts:
    1. Click on the Add Widget blue button.
    2. Give a name to the Widget.
    3. Select Thing Resource inside Data Source.
    4. Select thing you just created before.
    5. Select the name of the resource you want to display and the format (pie, chart, graph…).
    6. Click on Costumize it and select the number values you want to show.
    7. Accept and Save!

thethings-particle-post-dashboard

Repeat this last step to build awesome dashboards with thethings.iO!

We are at IoT Solutions World Congress next week

IoT Solution World Congress 2016 starts next week, starting on Tuesday 25th of October until 27th of October. The night before, on Monday at 7pm, there’s also the awesome IoT Stars that thethings.iO is proudly sponsoring.

iotwsc 2016

At thethings.iO we are very excited about participating at the 2nd edition of the IoT Solutions World Congress event at the Barcelona (Gran Via) expo. The industrial IoT is one of thethings.iO main markets and it’s a great opportunity to meet up companies and partners to exchange impressions of the market and show off our new developments to potential customers, resellers and partners.

During the #IoTSWC16, we are going to introduce the last innovations at thethings.iO such as the product analytics, the node code and the marketplace. At thethings.iO we are pushing hard to become the most simple industrial IoT platform in the market.

As exhibitors, we will have a booth at the IoT Solutions World Congress. Looking forward have you visiting our booth at C371 (Barcelona Activa) and chat with us about your needs, experiences, projects and ideas with thethings.iO. Last year it was great, so we hope it will be at least the same!

Our CEO, Marc Pous, is going to give two talks during the IoT Solutions World Congress. The first one on Wednesday 26th of October at 10:00 AM inside the IoT Catalan Alliance, speaking about IoT and innovation. The second talk, it is as well on Wednesday at 3.30 PM at the ISACA Alliance and Marc will speak about industrial IoT and security.

IoT Stars

IoT Stars MWC 2015

IoT Stars MWC 2015

thethings.iO is a proud sponsor of the IoT Stars. Our CEO, Marc Pous and Rudy de Waele are making a big party for IoT again, this time during the IoT Solutions World Congress. Join us to enjoy awesome speakers such as Rob Tiffany, Tom Raftery or Ignasi Vilajosana and fresh beers sponsored by Moritz. Can’t miss it!

Zolertia + thethings.iO Workshop

Finally we will be teaching a workshop with our friends from Zolertia at their event. Meet our team (Miquel and Carles) showing how to connect the Zolertia’s Remote to thethings.iO in just few clicks at this interesting (and free) workshop on Monday 24th.

Looking forward meeting you. If you can’t come to Barcelona this year, you can follow us on Twitter and the blog or just contact us by e-mail. Let’s stay connected!

Connect industrial gateway Option CloudGate to thethings.iO

Some of our customers use industrial routers from 3rd party manufacturers for several reasons. Some of these reasons are important requirement because of the environment, certifications, connectivity or needs on the field. Industrial routers or gateways are getting important on use cases such as the industry. Option have created the CloudGate router which is a really interesting gateway to use if you need to have an IoT swiss army knife.

CloudGate & thethings.iO

CloudGate & thethings.iO

Today we’re going toconnect the CloudGate router, from Option, to thethings.iO IoT platform in 3 simple steps. As an example we are going to connect the DL100-M485 temperature and humidity datalogger to a CloudGate that will send the data to thethings.iO. The DL100-M485 sensor uses the Modbus RTU protocol over the RS485 interface to transmit the temperature (both ºC and ºF) and the relative humidity (%).

The necessary components for this example are:

  • A CloudGate
  • Industrial serial expansion card (from Option)
  • DL-100M485 sensor
  • 12V DC power adapter (to provide power to the sensor)
  • Cables (to connect the sensor to the CloudGate).
  • A 120 Ohm resistor
  • Internet through Ethernet port

Set up the CloudGate hardware for thethings.iO

Option CloudGate connected to thethings.iO

Option CloudGate connected to thethings.iO

This is the step by step to connect the Option CloudGate to thethings.iO IoT platform:

  • Install the industrial serial card on the CloudGate.
  • Connect the green cable (D+) from the sensor to Tx+ pin on the industrial serial card.
  • Connect the white cable (D-) from the sensor to Tx-pin on the industrial serial card.
  • Connect the 120 Ohm resistor form D+ to D-.
  • Connect the 12V+ with de red cable from the sensor.
  • Connect the GND with the black cable from the sensor.

In order to connect the Option CloudGate to the IoT platform thethings.iO we will use Luvit-Red. Remember that the luvit-red package must be installed in our CloudGate. Luvit-red is available in the cloudgate universe. After registering and registering the Cloudgate, choose the latest Luvit-red version available to be installed on the CloudGate. Once the router restarts, the package will be installed. Luvit-Red is a visual tool to program workflows with the sensor data and other data from the CloudCode or from thethings.iO.

Set up a thethings.iO account and dashboard

If you still don’t have an account, please register at thethings.iO IoT platform.

In order to create a new thing:

  1. Enter to your account and click on Things.
  2. Press on Create new IoT product.
  3. Give a name and choose Other for the board.
  4. Finish the steps and remember the thing Token.

Program Luvit-red workflow to send data to thethings.iO

Luvit-red is a visual programming platform based on modules connections. In order to send the sensor values to thethings.iO, we are going to need the Modbus pull, Modbus extract, Function, JSON, and HTTP request modules.

    1. Modbus pull:
      1. Change the serial port to /dev/ttySP4 with 9800 and the parity of 8 bits and 1 stop bit.
      2. In this case we want to read 2 registers, located at the address 30001 and 30002. The operation Read Input Registers starts in the position 30001, so we only need to start at the same address (0 offset) and read 2 registers.

thethings-modbus-module

  1. Modbus extract:
    • With this module we are going to format the values as 16 bit integers. We should read 2 values and divide them to 100 to have the exact value (with commas). The result will be an array of 2 elements called Industrial and addressable in the payload of the message.

    theThings-extract-module

  2. Function:
    • Now we need to create the payload of the message: data and data1 will store the value of both humidity and temperature.

    thethings-parser-module

  3. JSON:
    • This module will transform the previous message into a well-parsed JSON.
  4. HTTP request:
    • All the messages will be sent using and HTTP POST. The URL should be https://api.thethings.io/v2/things/ followed by the thing token you created at thethings.iO

    thethings-POST-module

  5. Final connection:thethings-all-modules
    1. After connecting all the modules with its neighbours we should achieve the same flow as the next one:

Build thethings.iO Dashboard

Now it’s time to create a dashboard in your thethings.iO account to show all the values taken by the sensors. First we are going to create a Product table to show all the sensor values at the same time.

  1. Click on the Add Widget blue button.
  2. Give a name to the Widget.
  3. Select Product inside Data Source.
  4. Select the product you just created before.
  5. Select Table and check Realtime.
  6. Click on Costumize it and select the values you want to show (the name of the key in the function module).
  7. Accept and Save!

Now lets create some charts:

  1. Click on the Add Widget blue button.
  2. Give a name to the Widget.
  3. Select Thing Resource inside Data Source.
  4. Select thing you just created before.
  5. Select the name of the resource you want to display and the format (pie, chart, graph…).
  6. Click on Costumize it and select the number values you want to show.
  7. Accept and Save!

This is an approximate result of the dashboard that we have built in 2 minutes.

thethings-dashboard-cloudgate

Create more widgets and make awesome Dashboards with thethings.iO and let us know why you use Option CloudGate with the IoT platform thethings.iO!