Artik IoT平台是一个端到端的物联网平台,可协助我们构建出物联网项目。它是一个开放的平台,对多种不同设备提供云支持。通过Artik IoT,成功连接的设备和传感器可将数据发送至云端。其他应用程序,服务或已连接的设备可按需其使用云端数据。
本教程将说明使用Artik IoT去实现物联网项目的步骤。主要包含:
Artik IoT平台支持多种数据交换模式,并根据不同的计算机语言提供相应的SDK。
Artik IoT提供的主要功能包括:
Artik是一个结构良好的物联网平台,但在使用之前,我建议您阅读本文,了解如何使用物联网平台。此外,Artik是一个文档齐全的平台,里面有许多实用、有趣的例子。您可以点击此链接获得更多信息。比如,平台提供了云API,使外部设备都能够连接到这个平台并交换数据。
首先,需要有一个帐户用来配置设备,该帐户是免费的。本教程基于Raspberry Pi,但配置过程与设备无关。登录到Samsung Artik IoT界面后,必须点击设备并进行配置:
添加一个唯一的设备名称,用于识别您的设备。像这样!您已经创建了第一个准备发送数据的设备。下一步是使用Manifest配置数据模型。
完成上一步之后,我们还需要配置项目处理过程中的变量。使用传感器测量的参数会由设备发送到云端,传入到变量之中。
在这个项目中,Raspberry Pi使用两个传感器(为了使项目变得简单)。
第一个传感器DHT11测量温度和湿度,而第二个传感器BMP180测量温度和压力。在后面的文章中,我们会介绍如何将它们连接到Pi。目前,我们首先需要知道Pi发送的三个不同参数:
这些是需要我们在Artik IoT中配置的变量。图像下方描述了配置具体的说明:
在上图中,我们需要把DHT11传感器上传的不同温度保存在一个温度域中。添加其他参数,可重复相同的步骤。最后,会得到下面的图:
现在你可以激活它了!
配置完成后,下一步是将Raspberry Pi连接到传感器。注意接线,否则可能会对设备或传感器造成损害。Raspberry Pi
和两个传感器之间的连接如下图所示:
使用传感器,需要预先安装wiringPi库。数据到Artik IoT的代码默认是Node.js进行编写的,但您也可以使用其他的计算机语言。在获取传感器值之前,安装以下两个Node.js库:
这两个库可以帮助您轻松读取传感器数据。首先,让我们来导入它们:
var sensor = require ('node-dht-sensor' );
var RaspiSensors = require ('raspi-sensors' );
现在,可以读取传感器:
var BMP180 = new RaspiSensors.Sensor({
type: 'BMP180',
address: 0x77
}, 'BMP180');
BMP180.fetchInterval(function(err, data) {
if (data.type == 'Temperature') {
console.log("Temperature ["+data.value+"]");
}
else if (data.type == 'Pressure') {
console.log("Pressure ["+data.value+"]");
var data = {"Press": data.value };
}
}, 5);
在阅读DHT11时,你必须编写下面的代码:
setInterval(function() {
var readout = sensor.read();
console.log('Temp:' + readout.temperature.toFixed(2)
+ "Hum:" + readout.humidity.toFixed(2));
}, 2000);
连接到传感器部分就是这样。下一步我们需要将数据发送给Artik。
最后一步,我们需要将传感器数据发送到云端。有一点需要特别注意,在发送数据之前设备必须先经过认证。认证需要使用到设备创建时的密令和云平台下发的设备ID。
首先,使用WebSocket进行连接:
var artikUrl=</code><code class="js string">"wss:api.artik.cloud/v1.1/websocket?ack=true";
function connect() {
// connecting
ws = new WebSocket(artikUrl);
ws.on('open', function() {
console.log("Connected...");
registerDevice();
});
ws.on('message', function(data, flags) {
console.log("Message [" + data + "]");
});
ws.on('close', function() {
console.log("Websocket is closed");
});
}
连接一旦被建立,接下来就需要进行设备的注册。
// Register the Raspberry device first
function registerDevice() {
try {
console.log("Registering device..");
var message = '{"sdid": "d5f71b368bf148xxx","type": "register",
"Authorization": "bearer fcf3bf9cbf7d49xxx","cid":"1983274" }';
console.log("Message: " + message);
ws.send(message, {mask:true});
console.log("Device registered");
}
catch(e) {
console.error("Exception while sending data...");
}
}
最后是发送数据的方法:
function sendMessage(message) {
console.log("Sending data to artik...");
try {
var payload = '{"sdid": "d5f71b368bf148c9xxxxx", "ts":"' + Date.now().toString() + '","data":'
+ JSON.stringify(message) + '}';
console.log("Message: " + payload);
ws.send(payload, {mask:true});
console.log("Message sent");
}
catch(e) {
console.error("Exception while sending data...");
console.log(e.toString());
}
}
代码中“sdid”是所使用的设备ID,“data”是来自传感器的值。他满意JSON的格式进行消息传输。
最后需要创建消息。从传感器迅速获取到数据。以温度为例:
var data = {"Temp": readout.temperature.toFixed(2),
"Hum": readout.humidity.toFixed(2)};
压力参数也非常类似。
var data = {"Press": data.value };
启动Node.js应用程序,它就会开始向Artik发送数据。访问Artik IoT界面,您可以验证数据并创建图表:
基本配置都已经完成!现在,相信您对如何使用Artik IoT开发完整的物联网项目已经有一个总体的认识了。