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

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

<a href='mailto:'>微wx笑</a>的头像微wx笑 2020-04-27物联网 9 0关键字: 物联网  IoT  

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

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

需要了解或学习的技术

1、IBM Bluemix 账号Aib无知

中国版: https://console.chinabluemix.net/
Aib无知

国际版:https://console.ng.bluemix.net/Aib无知

2、物联网(IoT) 
Aib无知

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

3、Node.jsAib无知

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

4、MQTTAib无知

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

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

5、Node-REDAib无知

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

网站:http://nodered.org/Aib无知

Github:https://github.com/node-red/node-redAib无知

相关资料下载:由于版权原因CSDN停止提供下载,还好有老本,已经合并转存到百度网盘,提取码:ifj8
Aib无知

Bluemix NodeRed Part1.pdf
Aib无知

Bluemix NodeRed Part2.pdf
Aib无知

Bluemix NodeRed Part3.pdf Aib无知


Aib无知

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

创建Node-RED应用程序

基于样板创建就可以了。Aib无知


Aib无知

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


Aib无知

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


Aib无知

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


Aib无知

会看到下面的界面:Aib无知


Aib无知

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

创建 Internet of Things Platform 服务

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


Aib无知

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


Aib无知

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


Aib无知

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


Aib无知

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


Aib无知

点击添加设备按钮Aib无知


Aib无知

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


Aib无知


Aib无知

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


Aib无知

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


Aib无知

下一步Aib无知


Aib无知

创建Aib无知


Aib无知

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


Aib无知

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


Aib无知

保持默认,下一步Aib无知


Aib无知

保持默认,下一步
Aib无知


Aib无知

点击添加按钮Aib无知


Aib无知

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

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


Aib无知

点击右上角的关闭按钮Aib无知

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


Aib无知

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


Aib无知

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

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

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

Aib无知

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


Aib无知

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

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

Aib无知

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 密钥时保存的信息,组织标识要保持一致。Aib无知


Aib无知

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

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

为什么这样设计呢?Aib无知

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

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

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

Aib无知

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


Aib无知

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

5、原理示意图Aib无知


Aib无知

使用NodeRed,拼积木

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

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


Aib无知

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


Aib无知

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


Aib无知

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

例如:0ct4vz.messaging.internetofthings.chinabluemix.netAib无知

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

5、然后选择Security标签:Aib无知


Aib无知

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


Aib无知

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


Aib无知

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

然后点击 DeployAib无知


Aib无知

8、注意左侧的连接状态Aib无知


Aib无知

9、右侧切换到 debug 标签Aib无知


Aib无知

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

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

结束语

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

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

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

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

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


Aib无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/iot/2020-04-27/412.html

很赞哦! () 有话说 ()

上一篇:返回列表

下一篇:返回列表