目前,Air780E的CSDK已经开源了,LuatOS也作为其中的一个部分开源了出来,今天学习一下如何通过小程序远程控制开发板上灯的开关,学会以后可以制作远程开关控制各种设备。

本教程无需拥有服务器和小程序开发经验,会点鼠标会复制粘贴就能做

先来效果演示

一、腾讯云准备

1、新建项目

我们用到的是腾讯云的物联网开发平台https://console.cloud.tencent.com/iotexplorer

没账号的自己注册,每个账号都有免费额度,足够我们自己玩玩了。点进公共实例。

新建项目

项目名称自己起一个,描述写不写都行,填完保存

2、新建产品

然后在页面上就能看到我们新建的项目了,点击项目名称,进去新建产品,名称我这里叫远程开关,可以随便写。然后品类选标准品类,点进去搜索开关,勾选一路开关,如下图。通信方式选2G/3G/4G,其他默认。点击确定。

3、添加设备

点进我们刚新建的产品,点4设备调试页面,点击新建设备。

填写设备名称,建议用设备imei等唯一标识,我这里演示方便就写了air780e 

点击我们刚新建的设备,记录以下几个参数,一会要用。

二、设备端开发

可以自行编译CSDK里的luatos项目,也可以用我这里编译好的LuatOS-SoC_V1001_EC618.soc

具体怎么编译以后再写教程

1、计算连接参数

腾讯云是需要鉴权才允许设备连接,因此,我们要首先计算连接参数,这里使用iotauth库可以方便的计算阿里云,腾讯云,百度云,涂鸦云,阿里云,华为云的连接参数。

根据api的说明,结合前面我们在腾讯云注册的设备,代码就很简单了

代码如下,参数以变量的形式定义好了,改成自己的就行

2、连接服务器

获取参数以后,根据返回值就可以得到连接mqtt服务器的信息,根据mqtt库的说明,代码如下

mqttc = mqtt.create(nil, product_key .. ".iotcloud.tencentdevices.com", 1883)mqttc:auth(client_id, user_name, password)mqttc:keepalive(240) -- 默认值240smqttc:autoreconn(true, 3000) -- 自动重连机制mqttc:on(function(mqtt_client, event, data, payload)if event == "conack" thensys.publish("mqtt_conack")log.info("mqtt", "mqtt已连接")mqtt_client:subscribe("$thing/down/property/" .. product_key .. "/".. device_id)elseif event == "recv" thenlog.info("mqtt", "收到消息", data, payload)local json = json.decode(payload)if json.method == "control" thenif json.params.power_switch == 1 thenLED(1)elseif json.params.power_switch == 0 thenLED(0)endendelseif event == "sent" thenlog.info("mqtt", "sent", "pkgid", data)endend)mqttc:connect()sys.wait(10000)mqttc:subscribe("$thing/down/property/" .. product_key .. "/" .. device_id)sys.waitUntil("mqtt_conack")while true dolocal ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)if ret thenif topic == "close" thenbreakendmqttc:publish(topic, data, qos)endendmqttc:close()mqttc = nil

3、处理数据

根据腾讯云的文档,我们使用的物模型中power_switch是我们需要的开关参数。我们只需要根据文档对收到的数据解析即可,具体代码看前文代码

三、测试

把完整代码烧录进设备,不会烧录的可以看 AIR780E二次开发点灯(LuatOS)

代码兼容Air780E,ESP32C3和Air105+W5500,注意修改相应参数为自己的。

PROJECT = "gpiodemo"
VERSION = "1.0.0"
local sys = require "sys"
require("sysplus")
local wifi_ssid = ""
local wifi_password = ""--如果是wifi设备,这里改成你的wifi账号和密码
local product_key = ""
local device_id = "" --改为你自己的设备id
local device_secret = "" --改为你自己的设备密钥
local mqttc = nil
sys.taskInit(function()log.info("BSP", rtos.bsp())if rtos.bsp() == "ESP32C3" thenLED = gpio.setup(12, 0, gpio.PULLUP)wlan.init()wlan.setMode(wlan.STATION)wlan.connect(ssid, password, 1)local result, data = sys.waitUntil("IP_READY")log.info("wlan", "IP_READY", result, data)elseif rtos.bsp() == "AIR105" thenw5500.init(spi.HSPI_0, 24000000, pin.PC14, pin.PC01, pin.PC00)w5500.config() --默认是DHCP模式w5500.bind(socket.ETH0)LED = gpio.setup(62, 0, gpio.PULLUP)elseif rtos.bsp() == "EC618" thenLED = gpio.setup(27, 0, gpio.PULLUP)endlocal client_id, user_name, password = iotauth.qcloud(product_key, device_id, device_secret, "sha1", 1700561166)log.info("参数", client_id, user_name, password)mqttc = mqtt.create(nil, product_key .. ".iotcloud.tencentdevices.com", 1883)mqttc:auth(client_id, user_name, password)mqttc:keepalive(240) -- 默认值240smqttc:autoreconn(true, 3000) -- 自动重连机制mqttc:on(function(mqtt_client, event, data, payload)if event == "conack" thensys.publish("mqtt_conack")log.info("mqtt", "mqtt已连接")mqtt_client:subscribe("$thing/down/property/" .. product_key .. "/".. device_id)elseif event == "recv" thenlog.info("mqtt", "收到消息", data, payload)local json = json.decode(payload)if json.method == "control" thenif json.params.power_switch == 1 thenLED(1)elseif json.params.power_switch == 0 thenLED(0)endendelseif event == "sent" thenlog.info("mqtt", "sent", "pkgid", data)endend)mqttc:connect()sys.wait(10000)mqttc:subscribe("$thing/down/property/" .. product_key .. "/" .. device_id)sys.waitUntil("mqtt_conack")while true dolocal ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)if ret thenif topic == "close" thenbreakendmqttc:publish(topic, data, qos)endendmqttc:close()mqttc = nilend
)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

点击腾讯云设备的二维码

使用腾讯连连小程序扫码添加设备,添加完就能看到我们设备在线了

点击总开关,改变开关状态,就能看到,设备上的灯跟着改变状态了

日志也可以看到收到的消息,可用根据消息调试其他功能,比如倒计时开启

Air780E小程序远程开关-LuatOS版本相关推荐

  1. 不到20元成本 自己做一个小程序 远程开关 远程通断器

    准备材料 SRD-03VDC-SL-C 5脚 继电器 *1 220v-3.3v 电源 *1 KF129 5.0接线端子 2脚 *1 KF129 5.0接线端子 3脚 *1 4脚微动开关 20mm *1 ...

  2. 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用

    原标题:鸿蒙远程交互应用 vs 微信小程序远程交互应用 鸿蒙的远程交互组件应用相对复杂,访问网络时,首先要配置网络权限,华为官方文档有问题,在此引用我老师配置的模板,见附件. 过程: 导入鸿蒙的网络请 ...

  3. 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2...

    今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enab ...

  4. 微信小程序开发手册离线版本-下载

    微信小程序 微信官方日前发布了关于小程序的帮助手册,起地址为: https://mp.weixin.qq.com/debug/wxadoc/dev/ 如果需要最新离线版,可以打开 https://we ...

  5. 抖音壁纸小程序v1.0.2版本功能,新增达人入住功能

    抖音壁纸小程序v1.0.2版本功能 抖音壁纸小程序源代码 此次新增和优化功能如下: 达人入住 达人审核 收益管理 下载壁纸页面UI优化 素材管理 素材上传 新增抖音图片检测接口 消息通知 达人搜索 收 ...

  6. uniapp 微信小程序开发 解决旧版本缓存

    1.uniapp 微信小程序如何解决旧版本缓存问题 在小程序发布新版本后,小程序端是异步更新,新版本覆盖较慢.如果用户之前已经打开过小程序,通过 热启动 再进入小程序时,可能访问的还是旧版本,需要一段 ...

  7. 【微信小程序】【云开发】微笑考试答题小程序1.0.0版本 —— 小小成果

    部分相关页面模板.功能模板地址:https://gitee.com/nanfangzhe/Wechat_Assistant 微笑考试答题小程序1.0.0版本 [展示图] [体验方式] [更多小程序] ...

  8. 微信小程序连接物联网(三):微信小程序远程遥控宿舍开门 基于NodeMCU通过MQTT协议连接阿里云物联网平台

    索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...

  9. 微信小程序0.11.122100版本新功能解析

    微信小程序0.11.122100版本新功能解析 我的知乎专栏-小楼昨夜又秋风 https://zhuanlan.zhihu.com/oldtimes 新版本就不再吐槽了,整的自己跟个愤青似的.人老了, ...

最新文章

  1. 操作系统-命令解释程序(实验一)
  2. C#笔记(二):委托与事件
  3. CABasicAnimation x y z 轴旋转动画
  4. MySQL基本的SELECT语句,SQL语言概述,基础和重要不冲突,完整详细可收藏
  5. linux mysql revoke_Linux环境下MySQL基础命令(4)----数据库的用户授权
  6. hdoj 3376,2686 Matrix Again 【最小费用最大流】
  7. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 10 章 类型转换_10.5. UNION、CASE和相关结构...
  8. Linux鼠标回报率修改,鼠标回报率怎么调? 设置鼠标回报率的三种方法
  9. android分享到新浪微博,认证+发送微博
  10. 腾讯管家for android,腾讯手机管家(原QQ手机管家)V6.1.0 for Android 官方版
  11. CodeForces Cude In
  12. html自动弹图片,JS自动适应的图片弹窗实例
  13. 24V转5V降压芯片,24V转3.3V的稳压芯片,中文规格书
  14. 你了解Android中的Activity吗?
  15. 又拍云php接口,又拍云 API 使用的那些小事
  16. 【板栗糖GIS】DOS—如何在目录文件中批量建立子文件夹
  17. outlook安全模式修复_Outlook Com安全漏洞Microsoft无法修复
  18. linux系统打补丁
  19. python爬虫爬取当当网的商品信息
  20. 浏览器 下载文件/课件

热门文章

  1. linux 交换机实例,华为路由器和交换机实例配置
  2. VUE纯前端导出excel表格功能《转载》
  3. 数据采集上报之灯塔SDK详解
  4. 从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能(转)
  5. 统计字符出现的次数(输出由多到少)
  6. Centos7 升级 glibc 教程,解决各种报错
  7. 2022年研究生初试成绩终于来了-文都管联院
  8. 【人月神话】第二章:人月神话
  9. Mac软件:分享五款实用的Mac软件,值得收藏
  10. Java注解是怎么成功上位的?