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

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联携手阿里云构筑高可用物联网消息中枢
面对换电生态高速发展的通信挑战,易易互联通过采用阿里云 MQTT + RocketMQ 的融合解决方案,成功构建了“海量接入、实时响应、弹性处理、安全可信”的物联网通信底座。该架构不仅显著提升了系统稳定性与可扩展性,更保障了高并发场景下的业务连续性,为实现“让换电成为营运补能第一选择”的战略目标提供了坚实的技术支撑。
200 36
|
6月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
2423 42
|
9月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
9月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
8月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
8月前
|
存储 监控 安全
工业物联网关应用:PLC数据通过智能网关上传阿里云实战
本文介绍如何使用智能网关将工厂PLC数据传输至阿里云平台,适合中小企业远程监控设备状态。硬件准备包括三菱FX3U PLC、4G智能网关和24V电源。接线步骤涵盖PLC编程口与网关连接、运行状态检测及天线电源接入。配置过程涉及通讯参数、阿里云对接和数据点映射。PLC程序关键点包括数据上传触发和温度值处理。阿里云平台操作包含实时数据查看、数据可视化和规则引擎设置。最后提供常见故障排查表和安全建议,确保系统稳定运行。
773 1
|
9月前
|
物联网 数据挖掘 BI
基于阿里云物联网平台(IoT)的智能家居系统开发与部署
随着物联网技术的发展,智能家居成为提升生活品质的重要方向。阿里云物联网平台提供设备接入、数据管理及应用开发能力,支持亿级设备接入、高效数据管理和灵活应用开发,确保系统安全。本文通过实战案例展示如何基于该平台构建智能家居系统,涵盖设备接入、远程控制、场景联动与数据分析等功能,助力企业快速部署智能家居解决方案。
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
1462 5
|
存储 运维 监控
阿里云物联网平台的优势
【7月更文挑战第19天】阿里云物联网平台的优势
459 1
|
缓存 JavaScript Serverless
阿里云云效产品使用合集之如何在Serverless Devs阶段指定Node.js版本
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

相关产品

  • 物联网平台
  • 下一篇
    oss云网关配置