AloT 企业物联网业务平台实战03(二)|学习笔记

简介: 快速学习 AloT 企业物联网业务平台实战03

开发者学堂课程【阿里云 AIoT 物联网开发实战:AloT 企业物联网业务平台实战03】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/328/detail/3696


AloT 企业物联网业务平台实战03(二)


二、异步下行和同步下行

1、服务端->设备异步调用 Pub 的问题

image.png

下行的过程本身是异步的过程,如何来匹配设备响应的结果,整个过程比如 APP 发送一条指令到服务器,服务器要做的是把指令先存到比如 redies 或者 APP 里,存下来之后会给物联网平台发一个指令,是信息再发给物联网平台,通过 Pub 接口,物联网平台就会把消息推送到设备上,设备收到的消息执行对应的动作之后,会通过 MQTT 发送一条响应,响应可以通过配置的规则引擎把响应推送给业务服务器,业务服务器需要进入自己的 redies 来查询匹配当前的响应和哪一个请求是相关的,如果匹配上之后会把结果存取过来,APP 端会查询服务器,业务服务器的开机指令处理的结果是怎么样的,如果业务服务器拿到,物联网平台流转过来的结果也匹配上,就可以直接告诉 pad 端的用户,整个过程是相对复杂的,因为本质上是一个异步的过程。

2、服务端->设备实时响应,同步调用 RRPC 实战

image.png

物联网平台提供同步调用的模式,是反向的 RRPC 通过同步调用技术,可以简化企业业务系统的开发难度,采用 RRPC 的调用方式,APP 同样发送开机指令到业务系统,业务系统不是调用这个接口而是调用 RRPC 的接口,需要传递一个等待的超时时间。指令调用到物联网平台之后,物联网平台并不会立刻给业务系统返回结果,而是把消息先推送到设备端,等待设备端的回复,一旦设备端回复之后,物联网平台会自动的匹配和前面的请求关系,最终把洗衣机开机还是关机状态返回到业务系统,业务系统通过一条 HTTP 的调用,直接在 response 里拿到设备的响应结果,所以也是可以实时的通过 API 的方式给到消费端,消费者是也是实时的感知到设备是开机还是关机。

3、同步调用 RRPC 技术原理

image.png

业务器用服务器发起 RRPC 的 API 调用,允许客户来传递超时时间为一到八秒。物联网平台收到请求之后并不会直接返回结果,而是给设备发送 MQTT 的报文,topic 有一定的规则,Topic 上会携带一个 ID,设备收到 topic 消息之后会做业务处理,处理完之后会重新相应一个消息,消息也有一定的要求,一个是前面是 request 加 ID,响应的是 response 加 ID,两个 ID 要保持一致,物联网平台会匹配两个 ID,匹配上之后会给业务服务器返回 HTTP 的 response,有可能是超时,有可能是设备返回业务的结果。

请求:/sys/${productKey}/${deviceName/rrpc/request/${mess ageld}

响应:/sys/${productKey}/${deviceName}/rrpc/**response**/* *${messageld}**

$表示变量,每个设备不同

Messageld 为 loT 平台生成的消息 ID

设备端回复 responseTopic 里的 messageld 要与 requestTopic 一致

示例:

设备端需要订阅:

/sys/${productKey}/${deviceName}/rrpc/request/+

运行中设备收到 Topic:

/sys/PK100101/DN213452/rrpc/request/443859344534

收到消息后,在 timeout 时间内回复 Topic:

/sys/PK100101/DN213452/rrpc/response/443859344534

Topic 以及整个的交互过程,交互的核心是买家 ID 的一致性,通过ID 来匹配,一般设备端会订阅一个 topic this productkey device name2PC加+,在真实的设备运行过程中会替换成一个具体的message ID,设备回复的 topic 需要携带 message ID。

4、同步调用 RRPC 调用示例

设备端建立连接之后,要订阅 topic,第二步是一旦有消息过来之后需要去处理,处理之后要 publish 一个对应的响应,只需要把 request 关键词换成 response 就可以,对于服务端的调用和 Pub 没有太大的差别,只是在参数里多加一个超时时间,调用的 API 换成 RRPC。

image.png

演示:

设备端的模拟代码,设备端会订阅 RRPC 的 topic,然后针对 RRPC来做消息的处理,处理完了之后会及时的有 response 的响应。

const mqtt=require('aliyun-iot-mqtt');

//设备属性

const options ={

productKey:"a1HDWBEeHRa" deviceName:"7rmimujquyh",

deviceSecret:"d19e5469ae45cfaadad48f5443bc6356" regionId:"cn-shanghai"

};

//建立连接

const client =mgtt.getAliyunIotMqttClient(options);

client.subscribe(`/sys/${options.productKey}/${options.deviceName}/rrpc/request/+i)

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

if(topic.indexOf(`/sys/${options.productKey}/${options.deviceName}/rrpc/request/`)>-1){

//接收并处理业务系统 RRPC 指令  

handleRrpc(topic, message)

}

})

function handleRrpc(topic, message){

topic=topic.replace('/request/','/response/');

console.log("topic=" topic)  

console.log("payload="+message)

//响应 RRPC 指令 payload 自定义

const payloadJson={bizCode:0};// 成功,400 充电失败  

client.publish(topic,JSON.stringify(payloadJson));

}

设备端的调用过程,超时是八秒,调用的时候是通过 RRPC 的 API。

});

// 指令内容

const payload ={

power:200,  

port:3

};

//2.构建 RRPC 请求  

const params ={

ProductKey:"a1HDWBEeHRa",

DeviceName:"7rmjmujquyh"RequestBase64Byte:newBuffer(JSON.stringify(payload)).toString("base64"),  

Timeout:8000

};

co(function*(){

//3.发起 API 调用  

try{

const response = yield client.request('Rrpc', params);

console.log(JSON.stringify(response));

console.log(response.RrpcCode);

if(response.RrpcCode=="SUCCESS"){

var resultJSON=new Buffer(response.PayloadBase64Byte,"ba se64').toString();

console.log("RRPC SUCCESS =-==>",JSON.stringify(JSON.pars e(resultJSON)));

}

} catch (err) {

console.log("RRPC ERROR =---=>",JSON.stringify(err.data));

}

});

运行效果:

启动一下设备和云平台建立一个连接。

~fiot -node ChargingStation

wangxm:iot wxm$ node ChargingStation

通过云端的 API 发送一个指令。

~/iot- -bash  

wangxm:iot wxm$ node StartChargingCmd

["RequestId":"B3F2522C-892E-4F85-BD44-3119AA8102F1""PayloadBase64Byte":"eyJiaXpDb2R1IjowfQ==","RrpcCode":"SUCCESS","Success":true,"MessageId":"1308632606480572928"}  

SUCCESS

RRPC SUCCESS -----> {"bizCode":0}  

wangxm:iot wxm$

指令已经发送出去,云端给出了设备端的响应,结果是业务 Code 是零说明成功。

设备端收到 topic 以及需要的报文。

~fiot-node ChargingStation

wangxm:iot wxm$ node ChargingStationtopic=/sys/a1HDWBEeHRa/7rmjmujquyh/rrpc/response/1308632606480572928  

payload={"power":200."port":3}

比如三号端口要充200的电。这是整个的同步过程,发起调用就实时的得到一个结果。如果是异步调用只是拿到一个 request ID 和 message ID,没有业务报文。业务报文需要通过详细队列里的新的上报来匹配。这是反向的 RRPC 同步调用的一个价值。

image.png

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
19天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
32140 117
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
9天前
|
应用服务中间件 API 网络安全
3分钟汉化OpenClaw,使用Docker快速部署启动OpenClaw(Clawdbot)教程
2026年全新推出的OpenClaw汉化版,是基于Claude API开发的智能对话系统本土化优化版本,解决了原版英文界面的使用壁垒,实现了界面、文档、指令的全中文适配。该版本采用Docker容器化部署方案,开箱即用,支持Linux、macOS、Windows全平台运行,适配个人、企业、生产等多种使用场景,同时具备灵活的配置选项和强大的扩展能力。本文将从项目简介、部署前准备、快速部署、详细配置、问题排查、监控维护等方面,提供完整的部署与使用指南,文中包含实操代码命令,确保不同技术水平的用户都能快速落地使用。
4706 4
|
15天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
6793 18
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
13天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
4763 11
|
16天前
|
人工智能 机器人 Linux
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI智能体,支持飞书等多平台对接。本教程手把手教你Linux下部署,实现数据私有、系统控制、网页浏览与代码编写,全程保姆级操作,240字内搞定专属AI助手搭建!
5662 21
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
|
12天前
|
人工智能 JavaScript 安全
Claude Code 安装指南
Claude Code 是 Anthropic 推出的本地 AI 编程助手,支持 Mac/Linux/WSL/Windows 多平台一键安装(Shell/PowerShell/Homebrew/NPM),提供 CLI 交互、代码生成、审查、Git 提交等能力,并内置丰富斜杠命令与自动更新机制。
4214 0
|
16天前
|
存储 人工智能 机器人
OpenClaw是什么?阿里云OpenClaw(原Clawdbot/Moltbot)一键部署官方教程参考
OpenClaw是什么?OpenClaw(原Clawdbot/Moltbot)是一款实用的个人AI助理,能够24小时响应指令并执行任务,如处理文件、查询信息、自动化协同等。阿里云推出的OpenClaw一键部署方案,简化了复杂配置流程,用户无需专业技术储备,即可快速在轻量应用服务器上启用该服务,打造专属AI助理。本文将详细拆解部署全流程、进阶功能配置及常见问题解决方案,确保不改变原意且无营销表述。
6223 6
|
18天前
|
人工智能 JavaScript 应用服务中间件
零门槛部署本地AI助手:Windows系统Moltbot(Clawdbot)保姆级教程
Moltbot(原Clawdbot)是一款功能全面的智能体AI助手,不仅能通过聊天互动响应需求,还具备“动手”和“跑腿”能力——“手”可读写本地文件、执行代码、操控命令行,“脚”能联网搜索、访问网页并分析内容,“大脑”则可接入Qwen、OpenAI等云端API,或利用本地GPU运行模型。本教程专为Windows系统用户打造,从环境搭建到问题排查,详细拆解全流程,即使无技术基础也能顺利部署本地AI助理。
7758 17

相关产品

  • 物联网平台