AIR724 4G模块云平台使用技巧(1)- MQTT 控制GPIO
项目应用中最常见的需要就是通过云平台下发消息,控制DTU上的外设,先从基础的开始,介绍如果操作GPIO。
准备
- 连接:配置连上EMQTT服务器(aliyun,onenet同理),配置过程比较常见,参考云平台接入教程。
- DTU参数配置:网络通道1配置连接EMQ服务器,绑定的串口号1;另外配置了两个远程参数,用于在脚本里面实现自己的功能,分别是gpio、uid。
DTU脚本
require "log"
require "default"
-- 这一句非常重要,不能删除和修改。
module("remotedbg", package.seeall)
local dtu = default.getDtu()
-- 远程配置的参数,gpio代表操作的gpio号,比如19
-- 远程配置的参数,uid代表要拦截的数据通道,因为emq绑定的串口1,这里uid = 1
log.info("aliyun gpio set", dtu.userparam.gpio)
local setGpio = pins.setup(dtu.userparam.gpio,0)
-- 消息处理的钩子函数
function msgSubHook(uid, data)
--直接解析服务器下发的json
-- {"params":{"UnlockCode":1}}
local buff= json.decode(data)
log.info("aliyun sub1", data)
-- 根据UnlockCode控制gpio
if buff.params.UnlockCode ~= nil then
if buff.params.UnlockCode > 0 then
-- 设置gpio高电平
setGpio(1)
else
-- 设置gpio低电平
setGpio(0)
end
end
end
-- 原来的数据是mqtt -> uart, 这一步是增加了一个订阅钩子,并没有影响原来的订阅,所以数据还是会通过串口下发
sys.subscribe("UART_SENT_RDY_" .. dtu.userparam.uid, msgSubHook)
-- 如果要拦截数据,不下发到串口 ,使用以下代码
--sys.unsubscribe("UART_SENT_RDY_" .. dtu.userparam.uid, default.write)
--sys.subscribe("UART_SENT_RDY_" .. dtu.userparam.uid, msgSubHook)
启动脚本
推荐使用远程脚本一键启动和更新;
否则需要和固件代码一起烧录,并启动测试。
如何使用远程脚本:使用说明
淘宝
对我们产品感兴趣请查看淘宝,免费定制项目:
DEVELOPLINK ______ Air724核心板