开发者社区> KB小秘书> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云物联网平台体验(树莓派+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了。
1.jpg
使用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 命令进行安装会出现如下错误:
2.jpg
我们必须要这样执行命令才行:
1、先运行:sudo chmod -R 777 /var/root
2、后运行:sudo npm install -g --unsafe-perm node-dht-sensor则可以正确安装,如下图所示:
3.jpg
获取温湿度的代码比较简单,如下:

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 命令,则运行结果如下:
4.jpg

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

增加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,否则会出错。执行结果如下:

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Arduino中使用PubSubClient对接阿里云物联网平台
Arduino中使用PubSubClient对接阿里云物联网平台
0 0
阿里云物联网平台入门-设备消息上传
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。此篇文章按照官方入门实例操作下设备消息的上传
0 0
光照传感器作为采集对象上传到阿里云物联网平台
本文将以光照传感器作为采集对象,使用海创微联采集控制系统对光照进行采集,然后将采集到的数据上传到阿里云物联网平台将数据实时可视化。
0 0
阿里云物联网平台入门体验
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。此篇文章按照官方入门实例操作下
0 0
EMQX +阿里云计算巢,一站式构建云上物联网平台
本文是NebulaGraph上架到计算巢的方案介绍,原文请查看:https://mp.weixin.qq.com/s/FL8mju_D-O91Z8-vaG9MjA随着物联网技术的逐步成熟,海量设备产生的数据为企业数字化提供了更加丰富的数据基础。如何将海量设备数据与企业生产管理系统、业务应用系统以及运维监控系统有机结合,是企业在未来实现差异化竞争与业务创新的关键。在以物联网数据为基础的数字化转型过程
0 0
阿里云iot物联网平台监控设备 在线离线状态 解决方案
阿里云iot物联网平台监控设备 在线离线状态 解决方案
0 0
《打造基于阿里云物联网平台的业务模型》电子版地址
打造基于阿里云物联网平台的业务模型
0 0
《阿里云Link物联网平台全链路的一站式开发》电子版地址
阿里云Link物联网平台全链路的一站式开发
0 0
阿里云物联网平台设备分发实战
物联网平台通过设备分发实现设备跨地域、跨实例或跨账号的分发。分发后,物联网平台下发新的连接地址给设备,设备本地固化收到信息之后,直接连接新的地址,免去二次烧录设备信息。本文主要演示指定地域的分发方式,设备完成分发后,通过向认证中心请求新的连接地址,重新建立连接。
0 0
《阿里云物联网平台属性,事件,服务详解》电子版地址
阿里云物联网平台属性,事件,服务详解
0 0
+关注
文章
问答
来源圈子
更多
阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖阿里云 MVP 奖项为我们提供了这样一个机会,向杰出的意见领袖表示感谢,更希望通过 MVP 将开发者的声音反映到我们的技术路线图上。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
阿里云Link物联网平台全链路的一站式开发
立即下载
阿里云物联网平台(五)
立即下载
阿里云物联网平台技术白皮书V1.0
立即下载