物联网您现在的位置是:首页 > 博客日志 > 物联网

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

<a href='mailto:'>微wx笑</a>的头像微wx笑2020-04-27 20:07:05物联网人已围观关键字: 物联网  IoT  

在上篇文章“IBM Bluemix 中文公众版初体验”中提到昨天又参加了“物联网及NodeRed 技术讲解及动手实践 ”活动,这里把活动学习的内容分享给大家。通过昨天的学习,对MQTT有了

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

需要了解或学习的技术

1、IBM Bluemix 账号P0w编程技术_踩坑日志_进阶指南_无知人生

中国版: https://console.chinabluemix.net/
P0w编程技术_踩坑日志_进阶指南_无知人生

国际版:https://console.ng.bluemix.net/P0w编程技术_踩坑日志_进阶指南_无知人生

2、物联网(IoT) 
P0w编程技术_踩坑日志_进阶指南_无知人生

我有一些相关的文章大家可以了解一下:http://blog.csdn.net/testcs_dn/article/category/6420588P0w编程技术_踩坑日志_进阶指南_无知人生

3、Node.jsP0w编程技术_踩坑日志_进阶指南_无知人生

关于环境的配置请参考:http://blog.csdn.net/testcs_dn/article/category/6072291P0w编程技术_踩坑日志_进阶指南_无知人生

4、MQTTP0w编程技术_踩坑日志_进阶指南_无知人生

MQTT 已经快20年了,可靠、不需要那么长的Header,省电省带宽。
P0w编程技术_踩坑日志_进阶指南_无知人生

相关资料下载:MQTT协议说明书P0w编程技术_踩坑日志_进阶指南_无知人生

5、Node-REDP0w编程技术_踩坑日志_进阶指南_无知人生

Node-RED是一个独立应用,适合做可视化的流程控制,只要有Node环境就可以了。
P0w编程技术_踩坑日志_进阶指南_无知人生

网站:http://nodered.org/P0w编程技术_踩坑日志_进阶指南_无知人生

Github:https://github.com/node-red/node-redP0w编程技术_踩坑日志_进阶指南_无知人生

相关资料下载:由于版权原因CSDN停止提供下载,还好有老本,已经合并转存到百度网盘,提取码:ifj8
P0w编程技术_踩坑日志_进阶指南_无知人生

Bluemix NodeRed Part1.pdf
P0w编程技术_踩坑日志_进阶指南_无知人生

Bluemix NodeRed Part2.pdf
P0w编程技术_踩坑日志_进阶指南_无知人生

Bluemix NodeRed Part3.pdf P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

本实例源码下载:http://download.csdn.net/detail/testcs_dn/9701705P0w编程技术_踩坑日志_进阶指南_无知人生

创建Node-RED应用程序

基于样板创建就可以了。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

输入应用程序名称,其它保持默认,点击“创建”按钮。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

稍等一会你将看到下面的页面,显示您的应用程序正在运行,点击查看应用程序P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

点击“Go to your Node-RED flow editor”打开一个在线的编辑器P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

会看到下面的界面:P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

这一步就到这里就可以了,后面再来介绍它的使用。P0w编程技术_踩坑日志_进阶指南_无知人生

创建 Internet of Things Platform 服务

点击目录,然后在左侧选择Internet of Things,点击 Internet of Things Platform 服务P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

服务名称可以保持默认的,你也可以输入一个P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

拖动滚动条到下面,套餐选择免费,然后点击创建P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

创建完成后,点击启动仪表板P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

鼠标移动到左侧菜单,选择设备P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

点击添加设备按钮P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

首次应用需要先创建设备类型P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

输入设备名称,然后点击下一步P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

现在很多使用默认项就可以,以后管理自己真实的设备时,最好都填上。
P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

下一步P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

创建P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

设备类型添加完成之后,选择设备类型,下一步P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

输入设备标识,最好英文半角字符,不要超过23个字符,下一步P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

保持默认,下一步P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

保持默认,下一步
P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

点击添加按钮P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

创建完成之后会看到下图的信息P0w编程技术_踩坑日志_进阶指南_无知人生

注意:一定要将红框中的信息复制出来保存到其它位置,一会儿还要用到,关闭对话框之后就找不到了。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

点击右上角的关闭按钮P0w编程技术_踩坑日志_进阶指南_无知人生

选择左侧的应用程序菜单,然后点击右侧的生成API密钥P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

点击生成按钮,同样要把红框中的信息保存下来,一会儿要用到。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

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

下载本示例程序包:[源码]物联网及NodeRed 技术讲解及动手实践活动分享P0w编程技术_踩坑日志_进阶指南_无知人生

1、使用Nodejs将数据发送到物联网平台上,程序文件:mqtt-device-pub-china.js
P0w编程技术_踩坑日志_进阶指南_无知人生

P0w编程技术_踩坑日志_进阶指南_无知人生

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");});});


P0w编程技术_踩坑日志_进阶指南_无知人生

这里用到的就是创建设备时保存下来的信息,需要修改的位置都添加了注释。P0w编程技术_踩坑日志_进阶指南_无知人生

2、使用Nodejs订阅发送到物联网平台上的数据,程序文件:mqtt-application-sub-china.js
P0w编程技术_踩坑日志_进阶指南_无知人生

P0w编程技术_踩坑日志_进阶指南_无知人生

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 密钥时保存的信息,组织标识要保持一致。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

3、关于两个文件中的“clientId”说明:P0w编程技术_踩坑日志_进阶指南_无知人生

我们注意到一个是以“a:”开头代表APP(应用),一个是以“d:”开头代表Device(设备);P0w编程技术_踩坑日志_进阶指南_无知人生

为什么这样设计呢?P0w编程技术_踩坑日志_进阶指南_无知人生

因为只有应用可以订阅,应用需要等待就是Looping,耗电较大,通常运行在服务器端;P0w编程技术_踩坑日志_进阶指南_无知人生

设备要接收指令,不需要等什么;所以Command的只能给设备,不能给应用;P0w编程技术_踩坑日志_进阶指南_无知人生

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

P0w编程技术_踩坑日志_进阶指南_无知人生

两端的启动顺序不分先后,启动后在发布端输入信息,在订阅端就会看到了。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

注意:这个数据是经过IBM Bluemix 上的物联网平台的。P0w编程技术_踩坑日志_进阶指南_无知人生

5、原理示意图P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

使用NodeRed,拼积木

一开始我们就创建了Node-RED应用程序,打开了一个在线的流程编辑器却没有使用,现在它被派上用场了。P0w编程技术_踩坑日志_进阶指南_无知人生

1、首先,我们通过按下拖动鼠标来选中Flow1中的图形,然后按Delete键将其删除。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

2、在左侧的 input 中选择 mqtt 拖动添加到 Flow 1 中,双击它 P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

3、然后点击Server 后面的编辑按钮P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

4、输入Server信息,就是上面js文件中的:组织标识+.messaging.internetofthings.chinabluemix.netP0w编程技术_踩坑日志_进阶指南_无知人生

例如:0ct4vz.messaging.internetofthings.chinabluemix.netP0w编程技术_踩坑日志_进阶指南_无知人生

Client ID,可以和上面订阅程序文件中的一样。P0w编程技术_踩坑日志_进阶指南_无知人生

5、然后选择Security标签:P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

这里就是你生成的API 密钥和认证令牌,然后点击Update按钮。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

6、在左侧的 output 中选择 debug 拖动添加到 Flow 1 中P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

7、在 mqtt 的右侧按下鼠标拖动到 debug 的左侧,这样两个组件就建立了连接,也就是 mqtt 的输出作为 debug 的输入。P0w编程技术_踩坑日志_进阶指南_无知人生

然后点击 DeployP0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

8、注意左侧的连接状态P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

9、右侧切换到 debug 标签P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

10、再回到我们刚刚运行的发布端程序,输入信息发布吧,然后在上图的 debug 信息中就可以看到发布的信息了。P0w编程技术_踩坑日志_进阶指南_无知人生

是不是很有意思呢?Node-Red的功能远不止于此。P0w编程技术_踩坑日志_进阶指南_无知人生

结束语

之前一直想尝试Bluemx上的物联网和Node-Red,但限于能力一直也没搞清楚怎么用。P0w编程技术_踩坑日志_进阶指南_无知人生

非常感谢詹总的分享,让我们吃着零食,喝着饮料,边听边动手实践,非常容易的就掌握了使用方法。P0w编程技术_踩坑日志_进阶指南_无知人生

希望以后能多组织一些这样的活动,提供一些最佳实践;这里面有一些需要注意的地方,P0w编程技术_踩坑日志_进阶指南_无知人生

如果不是有人指导,自己就要去看文档,可能会有很多弯路要走。P0w编程技术_踩坑日志_进阶指南_无知人生

这样让我们大大的节省了探索的时间,直接走上捷径。P0w编程技术_踩坑日志_进阶指南_无知人生


P0w编程技术_踩坑日志_进阶指南_无知人生

本文由 微wx笑 创作,采用 CC BY-NC 4.0 许可协议。 非商业性使用可自由转载、引用、甚至修改,但需署名作者且注明出处。

很赞哦! () 有话说 ()

上一篇:返回列表

下一篇:返回列表