使用Artik创建物联网项目

Artik IoT平台是一个端到端的物联网平台,可协助我们构建出物联网项目。它是一个开放的平台,对多种不同设备提供云支持。通过Artik IoT,成功连接的设备和传感器可将数据发送至云端。其他应用程序,服务或已连接的设备可按需其使用云端数据。

本教程将说明使用Artik IoT去实现物联网项目的步骤。主要包含:

  • 如何配置设备。
  • 如何在Artik IoT中创建物联网数据模型。
  • 如何编写应用程序发送数据到IoT平台。

Artik IoT概述

Artik IoT平台支持多种数据交换模式,并根据不同的计算机语言提供相应的SDK。

Artik IoT提供的主要功能包括:

  • 数据驱动的开发。
  • 使用WebSockets的实时数据。
  • 不同数据和设备支持。

Artik是一个结构良好的物联网平台,但在使用之前,我建议您阅读本文,了解如何使用物联网平台。此外,Artik是一个文档齐全的平台,里面有许多实用、有趣的例子。您可以点击此链接获得更多信息。比如,平台提供了云API,使外部设备都能够连接到这个平台并交换数据。

在Artik中配置设备

首先,需要有一个帐户用来配置设备,该帐户是免费的。本教程基于Raspberry Pi,但配置过程与设备无关。登录到Samsung Artik IoT界面后,必须点击设备并进行配置:

添加一个唯一的设备名称,用于识别您的设备。像这样!您已经创建了第一个准备发送数据的设备。下一步是使用Manifest配置数据模型。

实现Artik IoT数据模型

完成上一步之后,我们还需要配置项目处理过程中的变量。使用传感器测量的参数会由设备发送到云端,传入到变量之中。

在这个项目中,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开发完整的物联网项目已经有一个总体的认识了。

本文的版权归 小芬达 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网研发闲思录

手机QQ公众号亿级消息实时群发架构

编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由孙子荀分享。转载请注明来自高可用架构公众号 ArchNotes。

35640
来自专栏云计算

云计算领域中你需要知道的 52 个术语

你觉得你已经对云服务的所有东西了如指掌了吗?那么,来看一下这份由云服务相关的术语、短语、工具和服务提供商组成的列表来确保你确实做到了这一点吧。

35090
来自专栏测试开发架构之路

程序员面试之软件测试面试问答

1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理库里面进行备案。 然后,要获取判断的依据和标准...

644140
来自专栏全栈数据化营销

搜索课程脑图:快速找到你要的人脉、资源、信息资料、

27750
来自专栏软件

ERP管理软件系统设计方案

【微信运营】微信公众号开发、朋友圈广告、微信运营活动、微信小程序、微商城搭建; 【电脑端网站】网站建设、网站结构、网站功能、关键字策划、UI设计、网站SEO、升...

58350
来自专栏携程技术中心

干货 | 携程第四代架构探秘之运维基础架构升级(下)

作者简介 本文由携程技术中心框架研发部吴其敏、王兴朝,技术保障中心高峻、王潇俊、陈劼联合撰写。 作为国内最大的OTA公司,携程为数以亿计的海内外用户提供优质的旅...

54390
来自专栏北京马哥教育

游族网络运维总监:如何运维千台以上游戏云服务器

? 作者:李志勇 来源: http://www.csdn.net/article/2016-03-21/2826611 偶然在网上看到游族网络运维总监李志勇先...

79580
来自专栏CSDN技术头条

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学

【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。 在过去的工...

227100
来自专栏未闻Code

英文文档帮查&翻译计划

以CSDN为首,知乎其次,cnblog带路的一大批博客上充斥着大量低质量的编程入门教程,代码粗制滥造,毫无缩进,没有高亮,东抄西抄。初学者如果长期参照这种垃圾博...

29580
来自专栏算法channel

如何做才能真正提升计算速度?

遇上项目紧急情况,面对大量需要试算的数据时,如何快速提升计算效率,可能是最现实的问题。计算机操作系统提供了进程和线程模型,各种语言都有对这些模型的抽象,并且大多...

20220

扫码关注云+社区

领取腾讯云代金券