阿里云物联网平台体验(树莓派+Nodejs篇)

简介: 我们在《阿里云物联网平台体验(树莓派+python篇)》里,写了通过Python语言开发云到端的物联网程序,本篇文章将介绍通过nodejs来实现类似功能。

我们在《阿里云物联网平台体验(树莓派+python篇)》里,写了通过Python语言开发云到端的物联网程序,本篇文章将介绍通过nodejs来实现类似功能。

同样在阿里云官方文档里已经有了一个Nodejs设备接入说明:https://www.yuque.com/cloud-dev/iot-tech/gvttbm

文中的代码也是把模拟的温湿度数据上传到物联网云平台的,我们依然对这个代码进行扩展,实现接入实际的温湿度传感器,把数据上传到云端,同时云端下发控制指令,控制LED的开和闭。

相关硬件平台的搭建由于在python篇里已有描述,我们这里就不在赘言了。

目前用nodejs直接操作GPIO,根据网上的资源,有两种常见方式,一种是采用是操作rpio库(目前最新版本是rpio2 0.4.1),一种是quick2wire-gpio-admin。(其他更好的方案,也希望网友推荐)。根据使用习惯,我这次选用的是rpio2。

需要注意的是,rpio2里面的pin和python操作的有些不一样,它指定的pin是物理排针的pin脚位置。比如我们的LED模块控制脚接入的是GPIO4,在python中我们定义pin=4,在rpio2中,我们需要定义pin=7了。

291b1a08d30bac707190da5d409e0d38a6c3efa4

使用rpio2库之前需要安装一下,输入如下命令:

npm install rpio2 –production

操作GPIO的代码也比较简单,如下面的示例代码:

const Gpio = require('/home/pi/node_modules/rpio2/lib/index.js').Gpio;

var led = new Gpio(7);  //创建 Pin7 引脚 

led.open(Gpio.OUTPUT, Gpio.LOW); //设置为 OUTPUT、默认低电平 

for(var i = 0; i < 20; i++){

    led.toggle();    //切换 led 的电平状态 

    led.sleep(300);  //等待 500ms } 

 }

led.close();  

获取DHT11的值相对麻烦一些,参考国外一篇文章:

https://www.instructables.com/id/Raspberry-Pi-Nodejs-Blynk-App-DHT11DHT22AM2302/   

安装bcm2835-1.46没有出现什么问题,不过安装node-dht-sensor,如果直接输入

 sudo npm install -g node-dht-sensor 命令进行安装会出现如下错误:

177ee27416f9a5824af21306affc75bde1b14378 

我们必须要这样执行命令才行:

1、 先运行:sudo chmod -R 777 /var/root

2、 后运行:sudo npm install -g --unsafe-perm node-dht-sensor则可以正确安装,如下图所示:

b1febe21d9076dbf523f1d6d3b06681029b2a093

获取温湿度的代码比较简单,如下:

var sensorLib = require('node-dht-sensor');

     // Setup sensor, exit if failed

     var sensorType = 11; // 11 for DHT11, 22 for DHT22 and AM2302

     var sensorPin  = 16;  // The GPIO pin number for sensor signal

     if (!sensorLib.initialize(sensorType, sensorPin)) {

          console.warn('Failed to initialize sensor');

          process.exit(1);

     }

     // Automatically update sensor value every 2 seconds

     setInterval(function() {

          var readout = sensorLib.read();

          console.log('Temperature:', readout.temperature.toFixed(1) + 'C');

          console.log('Humidity:   ', readout.humidity.toFixed(1)    + '%');

     }, 2000);

执行sudo NODE_PATH=/usr/local/lib/node_modules node ./nodejs_dht11.js 命令,则运行结果如下:


ac1283ef5a13a4ee569f47090ef5e3a8a4cc0f54

   有了以上的操作,那么我们把上面的代码糅合进阿里云官方的示例,实现阿里云的双向通信。

增加message函数,获取云端发送的数据:

  client.on('message', function(topic, message) {

     var   json = JSON.parse(message.toString());

     console.log("LED="+ json.params.LED.toString());

     led.write( json.params.LED);      

});

getPostData函数需要改造一下,把温湿度函数增加进去:

function getPostData(){  

    var readout = sensorLib.read();

    const payloadJson = {

        id: Date.now(),

        params: {

            temperature: readout.temperature.toFixed(1),

            humidity: readout.humidity.toFixed(1)

        },

        method: "thing.event.property.post"

    }

阿里云物联网平台上我们所创建的设备保持不变(参见Python篇),我们去对接云端的这个设备。

执行代码需要前面加 sudo,否则会出错。执行结果如下:

ff963ed57b20974c171306d4ac0ad1e1cf21e313

本文相关的代码文件:nodejs_dht11_led.js

 

阿里云物联网平台链接:https://dev.iot.aliyun.com/sale?source=deveco_partner_yefan

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
传感器 运维 监控
如何 3 行代码使用 arduino 接入阿里云物联网平台
阿里云物联网平台提供接入物联网场景的一整套基础设施,强大的在线配置能力,基本可以实现无代码开发接入各类应用,实现大规模的物联网应用场景。
14352 1
如何 3 行代码使用 arduino 接入阿里云物联网平台
|
物联网
通过微信小程序体验阿里云IoT物联网平台
通过微信小程序体验阿里云IoT物联网平台
9164 0
|
3月前
|
消息中间件 传感器 物联网
手把手教你搭建物联网平台,轻松实现远程设备管理
嘿,大家好!我是技术小伙伴小米,今天分享的主题是“物联网平台接入”。在这个万物互联的时代,智能设备如雨后春笋般涌现。我们将探讨如何通过物联网平台实现设备远程控制,包括设备数据的上行和指令的下行。上行数据链路涉及设备通过MQTT协议上报数据至平台,并通过消息队列转发至业务系统;下行指令链路则是业务系统通过API调用云端服务,将控制指令下发给设备。整个过程高效便捷,让你轻松掌握物联网技术的核心流程。
61 5
|
JSON JavaScript 前端开发
从零开始搭建物联网平台(六)PC端
从零开始搭建物联网平台(六)PC端
186 0
|
监控 API 数据安全/隐私保护
阿里云物联网平台入门体验
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。此篇文章按照官方入门实例操作下
452 0
阿里云物联网平台入门体验
|
JSON JavaScript 前端开发
阿里云物联网平台实测:HaaS510开发板应用
HaaS510开发板的好处是使用移动网络通信,不用像HaaS100一样配网,因此可以用在缺乏wifi网络支持的场合,例如野外。HaaS510还有一个巨大的优势,就是可以使用JavaScript或者Python进行编程,使我们可以极少的代码实现连接物联网平台的操作。本文就与大家共同学习一下。
阿里云物联网平台实测:HaaS510开发板应用
|
传感器 开发框架 JavaScript
HaaS EDU K1全流程体验阿里云物联网平台开发
最近入手了新玩具 HaaS EDU K1,它丰富的传感器支持、支持python和js语言的轻应用开发非常吸引我,得益于HaaS云端一体开发框架,我这种非嵌入式开发出身的小白也能够体验物联网平台开发的魅力。今天结合官方案例体验阿里云物联网平台开发。
1084 0
HaaS EDU K1全流程体验阿里云物联网平台开发
|
小程序 物联网 数据格式
微信小程序MQTT模拟器阿里云物联网平台测试
微信小程序MQTT模拟器阿里云物联网平台测试
1132 0
微信小程序MQTT模拟器阿里云物联网平台测试
|
网络协议 物联网 数据处理
【平头哥RVB2601开发板试用体验】AT 解析器和通过w800 AT命令接入阿里云生活物联网平台
RISC-V RVB2601 Yoc 实现和测试验证阿里云平台接入的等相关功能,同时去了解YoC中网络设备和AT解析器框架。
701 0
【平头哥RVB2601开发板试用体验】AT 解析器和通过w800 AT命令接入阿里云生活物联网平台
|
网络协议 物联网 数据处理
【平头哥RVB2601开发板试用体验】AT解析器和通过w800 AT命令接入阿里云生活物联网平台
RISC-V RVB2601 Yoc 实现和测试验证阿里云平台接入的等相关功能,同时去了解YoC中网络设备和AT解析器框架。
580 0
【平头哥RVB2601开发板试用体验】AT解析器和通过w800 AT命令接入阿里云生活物联网平台

热门文章

最新文章

相关产品

  • 物联网平台