AllThingsTalk Node.js SDK enables easy access to AllThingsTalk APIs. Use it to write your IoT applications and send data to the AllThingsTalk IoT platform.
After you download and install Node.js, run the command in the terminal:
npm install allthingstalk
This will initialize a new project, and place all dependencies in it.
Basic knowledge of JavaScript is expected in order to use the SDK.
Create an empty .js file and start by importing the library in your code:
const allthingstalk = require('allthingstalk');
In order to connect your physical device, like a RPI or a web application implemented as a device to the platform, you'll need to map it to the device resource in the platform.
Once you register at maker.allthingstalk.com, and create a device, you'll find Device Id and Device Token under Settings > Authentication. Add it to your code:
allthingstalk.credentials = {
"deviceId": "<yourDeviceId>",
"token": "<yourDeviceToken>"
};
You'll need to add assets to your device, in order to map the data you're sending to the platform. For more info on assets see Assets article in our Docs.
In most cases you'll be sending data to the platform, e.g, your room temperature. Use a sensor
asset for that.
allthingstalk.addAsset("counter", "Counter", "Count the number of user's visits", "integer")
This will create an asset with a unique asset name counter
, human friendly title, description of what it represents, and type of data that will be sent. Supported profile types are number
, integer
, string
, boolean
and object
. For more info on profile types see Profiles article in our Docs.
Add a success callback argument to the function if you want to handle the response (e.g. print out a status message):
allthingstalk.addAsset("counter", "Counter", "Count the number of user's visits", "integer",
function (status, statusMsg) {
console.log(statusMsg)
});
Establish a connection to the platform:
allthingstalk.connect();
To send a sensor data to the platform do:
allthingstalk.send(<value>, "<assetName>");
To simulate sending counter values to the counter
asset add:
function sendCount(i) {
setTimeout(function() {
allthingstalk.send(i, "counter");
sendCount(++i);
}, 2000)
};
sendCount(0);
If you wish to send a command from the platform to physical device and actuate it, you can use actuator
assets. In order to create an actuator
you'll pass actuation callback argument to addAsset
function which defines what happens when a command from the platform arrives:
allthingstalk.addAsset("led", "Led", "Blue led lamp", "boolean",
function() {
console.log ("Awaiting a command");
},
function(message) {
led.writeSync(0); // your logic to actuate the device
});
Once the asset is created you'll see in the terminal that your device awaits a command. When that happens a function that turns the led on will run.
To obtain the example you can either clone the repository, or copy the examples directly from GitHub.
Sensor example simulates a device which asks for a message and sends it to the platform.
Navigate to the example folder, and add your Device Id and Device Token to sensor.js file, e.g:
allthingstalk.credentials = {
"deviceId": "71DTRZpn8SzXrfGMM7cGQ9Ui",
"token": "afaketoken:4UT0JCOR9JTfW1VeVsQ1aXliBU4MJtXcLcp9NB7"
};
Save the changes and run the example:
node sensor.js
Enter “hello” in the terminal, and the Message asset will show your message.
Actuator example shows how to send commands from AllThingsTalk Maker and receive them in the terminal.
Navigate to the example folder, and add your Device Id and Device Token to actuator.js file, e.g:
allthingstalk.credentials = {
"deviceId": "71DTRZpn8SzXrfGMM7cGQ9Ui",
"token": "afaketoken:4UT0JCOR9JTfW1VeVsQ1aXliBU4MJtXcLcp9NB7"
};
Save the changes and run the example:
node actuator.js
In AllThingsTalk Maker, send a command from the Commander asset; you should see that the command is received in the terminal.