【物联网(IoT)开发】物联网及NodeRed 技术讲解及动手实践活动分享

简介: 在上篇文章“IBM Bluemix 中文公众版初体验”中提到昨天又参加了“物联网及NodeRed 技术讲解及动手实践 ”活动,这里把活动学习的内容分享给大家。通过昨天的学习,对MQTT有了更深的了解,学会如何使用Nodejs将数据发送到物联网平台上,学会如何使用NodeRed像拼积木一样查看传上来的设备数据。

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

在上篇文章“IBM Bluemix 中文公众版初体验”中提到昨天又参加了“物联网及NodeRed 技术讲解及动手实践 ”活动,这里把活动学习的内容分享给大家。通过昨天的学习,对MQTT有了更深的了解,学会如何使用Nodejs将数据发送到物联网平台上,学会如何使用NodeRed像拼积木一样查看传上来的设备数据。为大家做分享的是IBMGCG 的技术“旗帜”詹海萍总经理。早些年,詹总主管大中华区的软件技术团队很多年,后来又去国外实验室10多年,有雄厚的技术背景和丰富的应用经验。

需要了解或学习的技术

1、IBM Bluemix 账号

中国版: https://console.chinabluemix.net/

国际版:https://console.ng.bluemix.net/

2、物联网(IoT) 

我有一些相关的文章大家可以了解一下:http://blog.csdn.net/testcs_dn/article/category/6420588

3、Node.js

关于环境的配置请参考:http://blog.csdn.net/testcs_dn/article/category/6072291

4、MQTT

MQTT 已经快20年了,可靠、不需要那么长的Header,省电省带宽。

相关资料下载:MQTT协议说明书

5、Node-RED

Node-RED是一个独立应用,适合做可视化的流程控制,只要有Node环境就可以了。

网站:http://nodered.org/

Github:https://github.com/node-red/node-red

相关资料下载:

Bluemix NodeRed Part1.pdf

Bluemix NodeRed Part2.pdf

Bluemix NodeRed Part3.pdf

本实例源码下载:http://download.csdn.net/detail/testcs_dn/9701705

创建Node-RED应用程序

基于样板创建就可以了。


输入应用程序名称,其它保持默认,点击“创建”按钮。


稍等一会你将看到下面的页面,显示您的应用程序正在运行,点击查看应用程序


点击“Go to your Node-RED flow editor”打开一个在线的编辑器


会看到下面的界面:


这一步就到这里就可以了,后面再来介绍它的使用。

创建 Internet of Things Platform 服务

点击目录,然后在左侧选择Internet of Things,点击 Internet of Things Platform 服务


服务名称可以保持默认的,你也可以输入一个


拖动滚动条到下面,套餐选择免费,然后点击创建


创建完成后,点击启动仪表板


鼠标移动到左侧菜单,选择设备


点击添加设备按钮


首次应用需要先创建设备类型



输入设备名称,然后点击下一步


现在很多使用默认项就可以,以后管理自己真实的设备时,最好都填上。


下一步


创建


设备类型添加完成之后,选择设备类型,下一步


输入设备标识,最好英文半角字符,不要超过23个字符,下一步


保持默认,下一步


保持默认,下一步


点击添加按钮


创建完成之后会看到下图的信息

注意:一定要将红框中的信息复制出来保存到其它位置,一会儿还要用到,关闭对话框之后就找不到了。


点击右上角的关闭按钮

选择左侧的应用程序菜单,然后点击右侧的生成API密钥


点击生成按钮,同样要把红框中的信息保存下来,一会儿要用到。


编程:发布和订阅设备数据

下载本示例程序包:[源码]物联网及NodeRed 技术讲解及动手实践活动分享

1、使用Nodejs将数据发送到物联网平台上,程序文件:mqtt-device-pub-china.js

var mqtt = require('mqtt');
// 这里是非常重要的,填写错误了就不通;0ct4vz是组织标识
var client = mqtt.connect("tcp://" + "0ct4vz" + ".messaging.internetofthings.chinabluemix.net:1883", 
  {
  // d 代表设备,0ct4vz组织标识,设备类型,设备标识
    "clientId" : "d:0ct4vz:type1:devcie1",   //dev1  must be less than 23 characters
    "keepalive" : 30,
    "username" : "use-token-auth",  // 这里是配置认证的方式,而不是通常认为的用户名
    "password" : "wf8fP(pld7UlcQ(9Q*"     // 设备 devcie1 的认证令牌
  });

client.on('connect', function() {
  console.log('MQTT mqtt dev client connected to IBM IoT Cloud. Publish side');
});

client.on('error', function(err) {
  console.log('client error' + err);
  process.exit(1);
});

client.on('close', function() {
  console.log('client closed');
  process.exit(1);
});

var stdin = process.openStdin();
console.log("Type some text and press <ENTER>:\t");
stdin.on('data', function(inputStr) {
  //console.log("Your input: " + inputStr);
  if (inputStr.toString() == "end") { process.exit(1)};

  // iot-2/evt/事件标识/数据格式/数据类型
  client.publish('iot-2/evt/XY/fmt/string', inputStr, function() {
      console.log("push " + inputStr+ " to IOT");    
  });
});

这里用到的就是创建设备时保存下来的信息,需要修改的位置都添加了注释。

2、使用Nodejs订阅发送到物联网平台上的数据,程序文件:mqtt-application-sub-china.js

var mqtt = require('mqtt');
// 组织标识
var client = mqtt.connect("tcp://" + "0ct4vz" + ".messaging.internetofthings.chinabluemix.net:1883", 
  {
	// a代表应用,组织标识,test 是应用名称,自己随便起
    "clientId" : "a:0ct4vz:test",
    "keepalive" : 30,
    "username" : "a-0ct4vz-igsow2ncjn", // API 密钥
    "password" : "3c&1_i)VgPCnolB(hx"   // 认证令牌
  });

client.on('connect', function() {
  console.log('MQTT app client connected to IBM IoT Cloud. Subscribe side'); 

  // iot-2/type/设备类型/id/设备标识/evt/事件标识/数据格式/数据类型
  client.subscribe('iot-2/type/type1/id/devcie1/evt/XY/fmt/string');
});

client.on('error', function(err) {
  console.log('client error' + err);
  process.exit(1);
});

client.on('close', function() {
  console.log('client closed');
  process.exit(1);
});

client.on('message', function(topic, message) {
  console.log("message received: " +  message);
  //console.log(JSON.parse(message)); 
});
这个文件中用到的就是生成 API 密钥时保存的信息,组织标识要保持一致。

3、关于两个文件中的“clientId”说明:

我们注意到一个是以“a:”开头代表APP(应用),一个是以“d:”开头代表Device(设备);

为什么这样设计呢?

因为只有应用可以订阅,应用需要等待就是Looping,耗电较大,通常运行在服务器端;

设备要接收指令,不需要等什么;所以Command的只能给设备,不能给应用;

4、运行发布和订阅端测试

两端的启动顺序不分先后,启动后在发布端输入信息,在订阅端就会看到了。


注意:这个数据是经过IBM Bluemix 上的物联网平台的。

5、原理示意图


使用NodeRed,拼积木

一开始我们就创建了Node-RED应用程序,打开了一个在线的流程编辑器却没有使用,现在它被派上用场了。

1、首先,我们通过按下拖动鼠标来选中Flow1中的图形,然后按Delete键将其删除。


2、在左侧的 input 中选择 mqtt 拖动添加到 Flow 1 中,双击它 


3、然后点击Server 后面的编辑按钮


4、输入Server信息,就是上面js文件中的:组织标识+.messaging.internetofthings.chinabluemix.net

例如:0ct4vz.messaging.internetofthings.chinabluemix.net

Client ID,可以和上面订阅程序文件中的一样。

5、然后选择Security标签:


这里就是你生成的API 密钥和认证令牌,然后点击Update按钮。


6、在左侧的 output 中选择 debug 拖动添加到 Flow 1 中


7、在 mqtt 的右侧按下鼠标拖动到 debug 的左侧,这样两个组件就建立了连接,也就是 mqtt 的输出作为 debug 的输入。

然后点击 Deploy


8、注意左侧的连接状态


9、右侧切换到 debug 标签


10、再回到我们刚刚运行的发布端程序,输入信息发布吧,然后在上图的 debug 信息中就可以看到发布的信息了。

是不是很有意思呢?Node-Red的功能远不止于此。

结束语

之前一直想尝试Bluemx上的物联网和Node-Red,但限于能力一直也没搞清楚怎么用。

非常感谢詹总的分享,让我们吃着零食,喝着饮料,边听边动手实践,非常容易的就掌握了使用方法。

希望以后能多组织一些这样的活动,提供一些最佳实践;这里面有一些需要注意的地方,

如果不是有人指导,自己就要去看文档,可能会有很多弯路要走。

这样让我们大大的节省了探索的时间,直接走上捷径。

===========文档信息============ 
版权声明:非商用自由转载-保持署名-注明出处 
署名(BY) :testcs_dn(微wx笑) 
文章出处:[无知人生,记录点滴](http://blog.csdn.net/testcs_dn)

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
4天前
|
存储 安全 物联网
未来交织:区块链、物联网与虚拟现实的技术融合与应用革新
【5月更文挑战第9天】 随着科技的迅猛发展,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在逐渐渗透到我们生活的各个角落。这些技术不仅单独发展,而且越来越多地相互融合,催生出新的应用场景和商业模式。区块链技术以其去中心化和不可篡改的特性,为数据安全提供了坚实的保障;物联网通过智能化连接日常设备,极大地提升了生活和工作效率;而虚拟现实则通过沉浸式体验,改变了人们的娱乐和学习方式。本文将探讨这些技术的发展趋势,并分析它们在不同领域的结合应用,从而描绘出一个由新技术驱动的未来蓝图。
|
4天前
|
安全 物联网 区块链
未来技术的融合潮流:区块链、物联网与虚拟现实的交汇点
【5月更文挑战第9天】 在数字化时代的浪潮中,新技术不断涌现,重塑着商业模式、社会互动和日常生活。本文聚焦于三项前沿技术——区块链、物联网(IoT)和虚拟现实(VR),探讨它们各自的发展趋势以及如何相互交织,共同构建一个更加智能、安全和沉浸式的未来世界。通过分析每项技术的核心优势和潜在挑战,文章描绘了一个多技术融合的应用蓝图,旨在为读者提供一个关于这些技术如何联合起来改变未来世界的清晰视角。
17 5
|
1天前
|
供应链 物联网 区块链
未来技术纵横谈:区块链、物联网与虚拟现实的融合与创新
【5月更文挑战第18天】 随着科技的迅猛发展,新兴技术正不断重塑我们的世界。本文将深入探讨区块链技术、物联网(IoT)以及虚拟现实(VR)等前沿技术的最新发展趋势和多样化应用场景。文章旨在提供一个全景式的视角,分析这些技术如何单独及共同作用,推动着金融、医疗、娱乐等行业的变革,并预测它们在未来社会中的角色和影响。
|
2天前
|
供应链 安全 物联网
未来技术浪潮:区块链、物联网与虚拟现实的融合与革新
【5月更文挑战第17天】 随着科技的不断进步,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在重塑我们的世界。本文旨在探讨这些技术的发展趋势以及它们在不同领域的应用前景。区块链技术以其独特的去中心化特性和不可篡改的数据记录能力,在金融、供应链管理及身份验证等方面展现出巨大潜力。物联网通过使设备互联互通,推动了智能家居、智慧城市和工业自动化的发展。而虚拟现实技术则在娱乐、教育和远程工作等领域提供了沉浸式体验。这三者的融合预示着一个更加智能、互联和虚拟的未来。
16 4
|
2天前
|
供应链 安全 物联网
新兴技术浪潮:区块链、物联网与虚拟现实的未来融合
【5月更文挑战第17天】 随着科技的快速进步,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在重塑我们的世界。这些技术不仅独立发展,而且越来越多地相互融合,创造出全新的应用场景和商业模式。本文将探讨这些技术的发展趋势,分析它们如何协同工作,以及在不久的将来可能对社会和经济产生的影响。
|
3天前
|
供应链 物联网 区块链
未来技术纵横谈:区块链、物联网与虚拟现实的融合革新
【5月更文挑战第16天】在数字技术的迅猛发展中,区块链、物联网(IoT)和虚拟现实(VR)等新兴技术正不断突破边界,形成交叉融合的新趋势。本文旨在探讨这些技术的最新发展趋势以及它们在不同应用场景中的结合与创新,揭示它们如何协同工作以推动商业模式、治理结构和用户体验的变革。
17 6
|
4天前
|
传感器 监控 安全
IoT,即物联网
【5月更文挑战第15天】IoT,即物联网
10 1
|
4天前
|
存储 安全 物联网
未来技术纵横谈:区块链、物联网与虚拟现实的融合前景
【5月更文挑战第14天】 随着科技不断进步,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐渐改变我们的生活和工作方式。本文将深入探讨这些技术的发展趋势,并分析它们在不同应用场景中的融合潜力。区块链技术以其不可篡改和去中心化的特性,为数据安全和信息透明度带来了革命性的提升。物联网通过智能设备和传感器的广泛部署,实现了物理世界与数字世界的无缝对接。而虚拟现实技术则通过沉浸式体验,为用户创造了全新的交互空间。这三者的交汇预示着一个更加智能、安全和互动的未来。
12 1
|
4天前
|
存储 NoSQL 物联网
【MongoDB 专栏】MongoDB 在物联网(IoT)领域的应用
【5月更文挑战第11天】MongoDB,一种灵活可扩展的非关系型数据库,在物联网(IoT)领域中大放异彩。应对海量设备产生的多样化数据,MongoDB的文档型数据结构适应性强,适合存储设备信息及传感器读数。其实时更新、强大查询语言、索引机制和扩展性(通过分片技术)满足物联网的高实时性、复杂查询和数据增长需求。尽管面临数据安全和管理挑战,MongoDB已广泛应用于智能家居、工业 IoT 和智能交通等领域,并有望随着物联网技术进步和与其他领域的融合,如人工智能、大数据,持续发展。未来,优化数据质量、提升并发处理能力将是关键,MongoDB将在物联网的智能未来中扮演重要角色。
【MongoDB 专栏】MongoDB 在物联网(IoT)领域的应用
|
4天前
|
监控 物联网
LabVIEW开发基于物联网的多功能功率分析仪
LabVIEW开发基于物联网的多功能功率分析仪
10 2

相关产品

  • 物联网平台
  • http://www.vxiaotou.com