Register a Device in the Console

Any device in thinger.io must be registered to get access to the cloud. Each one has its own identifier and credentials and is related to the user account. The most easy way to registering the device is by using the thinger.io cloud console. This post describes the required steps to register a new device.

Adding a device to the thinger.io platform

Once you have been logged in your console dashboard, please go to the Devices section that appears in the left menu.

This section will list your registered devices and will show some information about its connection. Something like the following picture.

In this screen click on Add Device that will open a form form adding some device information.

Add here the device identifier (unique within your devices), a device description that may help you to identify your device, and the device credentials. Each device has its own identifier/credential, so a comprised device will not affect other devices. All your passwords in the server are stored securely using PBKDF2 SHA256 with a 32 bytes salt generated with PRNG and a non-despreciable amount of iterations. Keep your device identifier and device credential, as you will need them for connecting your device (the password is not visible once you set it).

If all goes fine, you should see some success message

Go back to your devices list, and now you should see your new device created.

Now you can use your new device id and the device credentials to connect the new device.

Opening the device dashboard

You can try clicking in the device name for opening its dashboard, that currently displays some information like its connection status, connected time, up and down bytes, and a real time activity state. This dashboard will be improved in the future with more functionality and configurable elements. Also you can see in this dashboard a small button called DEVICE_NAME API. This button will open a screen that allows you interacting directly with the resources programmed in your device.

Hi! I have registered today with my BETA key and added ESP8266 standalone with the console. Works great just “out of the box”. No problem accured during adding device. Great project!
Have any plans for Android/Iphone app?

Thanks for your comment @maxfox04 !! I am glad it worked easily =) Yes! I will release a simple Android app this week for interacting with the devices just like in the Web API Explorer. For the iOS app we will have to wait a little bit more, but it is also being developed. I will keep you updated as soon as the app is on market.

Thank great news, alvarolb!
Cant wait to test Android app. Actually Im not using Apple devices, asked just to know and maybe others are interested. Top things, guys!

Thanks! we are just beginning so all the feedback is welcome.

Sure there is some people out there using iOS :slight_smile:

The first Android version will be more or less simple but useful for controlling the devices. But I am working also in Android Wear, so we can control the devices from the smartwatch.

Hi @maxfox04 the Android app is now available! You can download it from the Android Market:

At this moment is very basic and only allows interacting with the devices just like in the API explorer.

2 Likes

EXTRA great! As I understand, to add new device in the Android app I need to scan QR code, given in the ESP8266Flasher programm?
Unfortunally I leaved my ESP8266 module at work, so can test it tommorow. But I`m sure, it will be great!

@maxfox04 You can generate a QR code from the Console Dashboard. Just enter in the device and create a new Device Token. This token can be shown as a QR code, so just scan it! I will create some tutorial soon! But you are one of the first! :smile:

1 Like

Hi! Yes, thats works! But looks like, that without device connected to server, I cant do anything in the app. It tries to connect, but nothing happens.
Also, what does Settings menu? I cannot enter there. When I press Settings, nothing appears.

Yes! You can only interact with the device if the device is connected to the platform! The Settings menu does nothing at this moment =) Try it again when you have the device online, and the app will fill the device API…

Alvaro, you are awesome.
I too connected my arduino based ESP8266 in 5 minutes. and I’ve practically never touched any arduino.
I even used the token to connect to the Yo! app.

do you have a run down of your code?
this line in your esp example… while i can replicate it blindly, i’d like to really understand how it works.

thing[“led”] << [](pson& in){ digitalWrite(BUILTIN_LED, in ? LOW : HIGH); };

Thanks for your comments @LuisMasg!! I am glad you find it easy o use :grinning:

I should create a new post soon for explaining how the resources works, but I can advance you something I explained in Github. Hope it helps something in the understanding:

There are four different types of device resources:

Input

Using the operator << pointing to the resource name represents input. In this case this function takes one parameter of type pson that is a variable type that can contain booleans, numbers, floats, strings, or even structured information like in a json document. The following example function will receive a boolean that will allow turning on and off the led.

thing["led"] << [](pson& in){
     digitalWrite(BUILTIN_LED, in ? HIGH : LOW);
};

Output

Using the operator >> pointing out of the resource name means output. As the input function, it contains one pson parameter, that will allow storing our output information. In this case each time the function is called it is filled with the millis() value (the time the device has been running), but you can put here your sensors readings.

thing["millis"] >> [](pson& out){
      out = millis();
};

Input/Output

Here it is used the operator = for defining a function that have both input and output. In this case the function takes two different pson parameters. One for input data and another one for output data. The following example will output the sum and multiplication of two different values (value1, and value2) provided as input. Notice here how the pson structure can store values with keys, like any json document. The result provides two different values in sum and mult keys, that it is translated to json when you access them from the API.

thing["in_out"] = [](pson& in, pson& out){
      out["sum"] = (long)in["value1"] + (long)in["value2"];
      out["mult"] = (long)in["value1"] * (long)in["value2"];
};

Function

It is also possible to define resources without any input or output parameter.

thing["reset"] = [](){
      reset();
};

Conclusions

So the basic idea here, is that in the setup method you are basically defining callbacks (functions that can be called remotely) with a name. Those callbacks can be for input, output, input/output, or a simple function. The syntax can appear to be something complex to people not familiarized with C++11 and lambdas functions. But it is quite useful defining resources in this way.

Hi Alvaro , been seeing your good work here. Keep it up.

Can you assist me with creating a token. I don’t seem to understand how to create a token on my thinger.io platform .

Would appreciate a quick response, as i have a project deadline to meet.

Hey Maxfox,

Were you able to connect the device to the server eventually? How did you go about it, please ?

I have generated a token already, and i have a problem connecting the device and the platform.

when i press settings,nothing happens.

Hi @Tolu,

What device do you want to connect to the platform? The access tokens are intended for third-party services using the API. Did you read the documentation at http://docs.thinger.io ?

Best.

Hello sir,
This is what i exactly need. Guide me how to create QR scan code