阿里云物联网平台体验(树莓派+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

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
29天前
|
传感器 JavaScript 数据可视化
开源视频联动物联网平台】Node-RED规则引擎
开源视频联动物联网平台】Node-RED规则引擎
90 1
|
9月前
|
存储 运维 监控
物联网平台常见类别及对应平台(一)
物联网平台常见类别及对应平台(一)
575 0
|
29天前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
238 1
|
22天前
|
Cloud Native 安全 物联网
【阿里云云原生专栏】云边端一体化:阿里云如何利用云原生技术赋能物联网
【5月更文挑战第22天】阿里云借助云原生技术赋能物联网,实现云边端一体化,提升系统弹性与敏捷性。通过容器化部署,保证高可用性与可靠性。在智能交通等领域,阿里云提供高效解决方案,实现实时数据分析与决策。代码示例展示如何使用阿里云服务处理物联网数据。同时,阿里云重视数据安全,采用加密和访问控制保障数据隐私。丰富的工具和服务支持开发者构建物联网应用,推动技术广泛应用与发展。
186 1
|
29天前
|
运维 JavaScript Java
Serverless 应用引擎产品使用之阿里云Serverless函数计算中,在Node.js环境中执行jar文件如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
29天前
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
149 6
阿里云IOC物联网异步处理基础概念
|
9月前
|
存储 机器学习/深度学习 监控
物联网平台常见类别及对应平台(二)
物联网平台常见类别及对应平台(二)
268 0
|
29天前
|
消息中间件 网络协议 物联网
MQTT协议问题之阿里云物联网服务器断开如何解决
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
299 1
|
29天前
|
存储 安全 物联网
安防摄像头IPC如何快速接入阿里云Link Visual视频服务(阿里云生活物联网)
Link Visual是生活物联网平台针对视频产品推出的增值服务,提供视频数据上云、存储、转发、AI计算等能力。 大白话就是:通过阿里云的Link Visual视频服务,可以让你的IPC摄像头设备完成上云功能,并快速实现如下功能介绍中的功能。其中可以享受阿里云P2P协议支持,帮助企业节省流量服务器流量带宽。
388 7
|
29天前
|
SQL Prometheus 监控
助力工业物联网,工业大数据之服务域:node_exporter插件【三十七】
助力工业物联网,工业大数据之服务域:node_exporter插件【三十七】
44 1

热门文章

最新文章

相关产品

  • 物联网平台