Air780E涂鸦云远程开关-LuatOS

news/2025/1/16 2:46:17/

Air780E涂鸦云远程开关-LuatOS

涂鸦智能在远程开关和灯控领域可以算是龙头了,今天就来学习一下,如何接入涂鸦云平台

一、涂鸦云准备

注册账号不写了,自己注册账号即可

1、创建产品

点击产品->极速智能化->产品开发页面的创建产品

image-20221121142238006

选择开关

image-20221121142300596

智能化方式选生态设备接入

image-20221121142326118

填写产品名称,通讯协议选2G/3G/4G,其他默认,然后点创建产品,完成创建

image-20221121142345187

2、功能定义

点击标准功能,添加功能

image-20221121142404002

搜开关1,然后点那个箭头添加到右边

image-20221121151229121

3、添加设备

点击设备开发,选择开放协议接入

image-20221121151347174

找到激活验证,申请免费授权码,每个项目有两个免费码

image-20221121151500950

稍等一下,分配完成以后就能看到我们有2个码了,然后点注册设备

image-20221121151657062

自行填写设备名,其他默认

image-20221121151755107

然后复制凭证供接下来使用

image-20221121151828737

二、设备端开发

1、计算连接参数

涂鸦云是需要鉴权才允许设备连接,因此,我们要首先计算连接参数,这里使用iotauth库可以方便的计算阿里云,腾讯云,百度云,涂鸦云,阿里云,华为云的连接参数。具体协议可以看涂鸦文档Tuya MQTT 标准协议-涂鸦 IoT 开发平台-涂鸦开发者

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

image-20221121152609368

local ProductID= ""
local DeviceID= "" --改为你自己的设备id
local DeviceSecret = "" --改为你自己的设备密钥
local client_id, user_name, password = iotauth.tuya(DeviceID, DeviceSecret,1700561166)
log.info("参数", client_id, user_name, password)

2、连接服务器

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

mqttc = mqtt.create(nil, "m1.tuyacn.com", 8883,true)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("tylink/"..DeviceID.."/thing/property/set")elseif event == "recv" thenlog.info("mqtt", "收到消息", data, payload)local mqtt_date = json.decode(payload)if mqtt_date.data.switch_1 ~= nil thenlog.info("mqtt",mqtt_date.data.switch_1)if mqtt_date.data.switch_1 == true thenLED(1)elseif mqtt_date.data.switch_1 == false thenLED(0)endendelseif event == "sent" thenlog.info("mqtt", "sent", "pkgid", data)endend)mqttc:connect()

3、处理数据

根据涂鸦云的文档,我们使用的switch_1是我们需要的开关参数。我们只需要根据文档对收到的数据解析即可,具体代码看前文代码

三、测试

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

1、烧录代码

代码兼容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 ProductID= ""
local DeviceID= "" --改为你自己的设备id
local DeviceSecret = "" --改为你自己的设备密钥
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)sys.wait(1000)elseif rtos.bsp() == "EC618" then-- mobile.simid(2)LED = gpio.setup(27, 0, gpio.PULLUP)endlocal client_id, user_name, password = iotauth.tuya(DeviceID, DeviceSecret,1700561166)log.info("参数", client_id, user_name, password)mqttc = mqtt.create(nil, "m1.tuyacn.com", 8883,true)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("tylink/"..DeviceID.."/thing/property/set")elseif event == "recv" thenlog.info("mqtt", "收到消息", data, payload)local mqtt_date = json.decode(payload)if mqtt_date.data.switch_1 ~= nil thenlog.info("mqtt",mqtt_date.data.switch_1)if mqtt_date.data.switch_1 == true thenLED(1)elseif mqtt_date.data.switch_1 == false 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()之后后面不要加任何语句!!!!!

2、绑定设备

点击产品的产品配置页面,配置设备的绑定范围,改成全部可用

image-20221121154915485

点到设备管理页面,点击绑定二维码,用APP扫码绑定

image-20221121154957624点击app里的开关就能控制设备上的灯了


http://www.ppmy.cn/news/130576.html

相关文章

SAP GUI 780 for mac M1

About SAP GUI 780 for JAVA 十多年来,唯一运行 SAP GUI for Java 的 CPU 平台是英特尔。 对 Intel 64 位的原生支持始于 2009 年的 SAP GUI for Java 7.20,对 Intel 32 位的支持随着 SAP GUI for Java 7.50 在 2021 年 9 月达到 EOL 而结束。 随着 ARM…

jxls对比_罗技MX Keys与K780对比

罗技MX Keys与K780对比 2020-08-25 10:46:09 32点赞 54收藏 50评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情 创作立场声明:这是我在zdm的首篇文章,废话连篇&语无伦次之处请多多见谅。 大学时代的我是一个入门的机…

Air780E小程序远程开关-LuatOS版本

目前,Air780E的CSDK已经开源了,LuatOS也作为其中的一个部分开源了出来,今天学习一下如何通过小程序远程控制开发板上灯的开关,学会以后可以制作远程开关控制各种设备。 本教程无需拥有服务器和小程序开发经验,会点鼠标…

Air780E连接点灯科技-LuatOS

前面发了腾讯云点灯以后,有朋友提到了点灯科技,人家都叫点灯科技了,那咱们学点灯必须连一下试试呀。本文将记录如何将设备连接点灯云平台,并通过手机进行远程控制 先上成果演示 一、点灯云准备 下载点灯科技的app-blinker&#…

Air780E烧录教程

目录名称 LuaTools 简介环境LuaTools 安装LuaTools 功能介绍烧录固件视频烧录教程 LuaTools 简介 Luatools是合宙提供的单机版调试工具,支持最新固件获取、固件打包、trace打印、单机烧录等功能。此工具适用于合宙的SoC、cat1模块、cat4模块、2G模块。 环境 运行…

Codeforces Round #780 题解

个人思路,仅作记录,可以参考,欢迎交流。 比赛地址:传送门​​​​​ A. Vasya and Coins 传送门 (第一眼看到题面想到了洛谷P3951,不过这两题的区别还是比较大的) 【题意】求用a枚1元硬币和…

Leetcode-780. 到达终点

链接 780. 到达终点 题目 给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。 从点 (x, y) 可以转换到 (x, xy) 或者 (xy, y)。 示例 示例 1: 输入: sx…

Java实现 LeetCode 780 到达终点(逻辑题)

780. 到达终点 从点 (x, y) 可以转换到 (x, xy) 或者 (xy, y)。 给定一个起点 (sx, sy) 和一个终点 (tx, ty),如果通过一系列的转换可以从起点到达终点,则返回 True ,否则返回 False。 示例: 输入: sx 1, sy 1, tx 3, ty 5 输出: True…