前面发了腾讯云点灯以后,有朋友提到了点灯科技,人家都叫点灯科技了,那咱们学点灯必须连一下试试呀。本文将记录如何将设备连接点灯云平台,并通过手机进行远程控制

先上成果演示

一、点灯云准备

下载点灯科技的app-blinker,注册账号,这部分就不用写了

1、添加设备

点击右上角添加设备,设备类型选独立设备

右下角选择网络接入

然后复制得到的key

2、配置设备

点击我们刚添加的设备,根据提示,我们直接点载入示例

二、设备端开发

思路一样,首先找文档,看看如何接入。可以看到有http和mqtt方式接入,那我们肯定是mqtt呀,因为我们要长连接才能保证设备实时被控制。

1、鉴权

所以查找文档点灯科技 (diandeng.tech)可以看到mqtt的鉴权需要先使用http请求获得连接参数

找一下luatos的http的库http2 - http2客户端 - LuatOS 文档可看到很简单,就一行代码,而且接口使用和其他语言基本一致

所以直接上代码,我们直接封装一个函数,传入authKey就可以获得连接参数

local function getDeviceInfo(authKey)local code, headers, data = http2.request("GET", serverAdress .. authKey .. "&protocol=mqtt").wait()if data and json.decode(data) thenlocal authdata = json.decode(data)if authdata.message == 1000 thenlog.info("获取设备信息成功",authdata.detail.host:sub(8, -1),authdata.detail.deviceName,authdata.detail.iotId,authdata.detail.iotToken,authdata.detail.uuid)return true, authdata.detail.host:sub(8, -1), authdata.detail.deviceName, authdata.detail.iotId, authdata.detail.iotToken, authdata.detail.uuidendendreturn false
end

2、连接

连接部分的代码就和昨天连腾讯云没啥两样了,都是连mqtt,然后订阅数据,收到数据以后根据文档进行处理

直接上完整代码吧,一样是Air780E,Air105,ESP32C3通用代码

PROJECT = "gpiodemo"
VERSION = "1.0.0"
local sys = require "sys"
require("sysplus")
--{"deviceType": "OwnApp", "fromDevice": "856ED5F216FO23SKEEDQJ8LL", "toDevice": "0451f7667f1c11ec94755254", "data": {"state": "online"}}
local wifi_ssid = "NAS"
local wifi_password = "Air123456"
--如果是wifi设备,这里改成你的wifi账号和密码
local authKey = "" --点灯云申请的设备authKey
local serverAdress = "http://iot.diandeng.tech/api/v1/user/device/diy/auth?authKey=" --http鉴权地址
local mqttc = nil
local led_state = 0
local num = 0
local function getDeviceInfo(authKey)local code, headers, data = http2.request("GET", serverAdress .. authKey .. "&protocol=mqtt").wait()if data and json.decode(data) thenlocal authdata = json.decode(data)if authdata.message == 1000 thenlog.info("获取设备信息成功",authdata.detail.host:sub(8, -1),authdata.detail.deviceName,authdata.detail.iotId,authdata.detail.iotToken,authdata.detail.uuid)return true, authdata.detail.host:sub(8, -1), authdata.detail.deviceName, authdata.detail.iotId, authdata.detail.iotToken, authdata.detail.uuidendendreturn false
end
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" thenmobile.simid(2)LED = gpio.setup(27, 0, gpio.PULLUP)endresult, host, deviceName, iotId, iotToken, uuid = getDeviceInfo(authKey)if not result thenlog.info("获取设备信息失败")returnendlog.info("result", host, deviceName, iotId, iotToken)mqttc = mqtt.create(nil, host, 1883)-- mqttc:debug(true)mqttc:auth(deviceName, iotId, iotToken)mqttc:keepalive(30) -- 默认值240smqttc:autoreconn(true, 3000) -- 自动重连机制local mqtt_topic = "/device/" .. deviceName .. "/r"mqtt_topic_pub = "/device/" .. deviceName .. "/s"local send_date = {}mqttc:on(function(mqtt_client, event, data, payload)if event == "conack" thensys.publish("mqtt_conack")log.info("mqtt", "mqtt已连接")mqtt_client:subscribe(mqtt_topic)send_date.dedeviceType = "OwnApp"send_date.fromDevice = deviceNamesend_date.toDevice = uuidsend_date.data = {}send_date.data.state = "online"mqttc:publish(mqtt_topic_pub, json.encode(send_date), 0)elseif event == "recv" thenlog.info("mqtt", "收到消息", data, payload)local data = json.decode(payload)if data.data["btn-abc"] == "tap" thenled_state = (~led_state) & 1LED(led_state)send_date.data = {}send_date.data["btn-abc"] = "tap"mqttc:publish(mqtt_topic_pub, json.encode(send_date), 0)elseif data.data.get == "state" thensend_date.data = {}send_date.data.state = "online"log.info("mqtt", "回复状态为在线", json.encode(send_date))mqttc:publish(mqtt_topic_pub, json.encode(send_date), 0)elseif data.data["btn-123"] == "tap" thenlog.info("mqtt", "数字")num = num + 1send_date.data = {}send_date.data["num-abc"] = {}send_date.data["num-abc"].tex = "num"send_date.data["num-abc"].val = nummqttc:publish(mqtt_topic_pub, json.encode(send_date), 0)endelseif event == "sent" thenlog.info("mqtt", "sent", "pkgid", data)endend)mqttc:connect()sys.wait(10000)sys.waitUntil("mqtt_conack")while true do-- mqttc自动处理重连local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)if ret thenif topic == "close" thenbreakendmqttc:publish(mqtt_topic_pub, data, qos)endendmqttc:close()mqttc = nilend
)-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

三、测试

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

底层固件要用最新的,可以自行编译CSDK里的luatos项目,也可以用我这里编译好的LuatOS-SoC_V1001_EC618.soc

烧录好以后,打开点灯app,然后就可以开始测试了。点击开灯按钮可以翻转开发板上带的灯的状态;点击计数按钮,设备端会累加次数并上报,在app可以看到次数不断增加。

Air780E连接点灯科技-LuatOS相关推荐

  1. (含代码)ESP8266+舵机 制作wifi灯控开关(arduino,点灯科技,小爱同学/天猫精灵实现)

    目录 项目涉及的主代码 前言 一.环境搭建 二.开发步骤 1.注册点灯科技平台 2.在点灯科技平台注册设备,获取Secret Key 3.在Arduino IDE中编写代码,写入ESP8266 4.编 ...

  2. NodeMCU连接天猫精灵第二集——开发环境、运行条件、工作代码(基于Blinker点灯科技)

    NodeMCU连接天猫精灵第一集--硬件构架(基于Blinker点灯科技) 根据上面说的硬件部分已经搭建完成了,所以现在说一下软件开发,首先要有一个共识,NodeMCU是可以用Arduino IDE开 ...

  3. NodeMCU连接天猫精灵第一集——硬件构架(基于Blinker点灯科技)

    前段时间搞物联网,学习了一些相关知识,发现ESP8266的确好用,在前几篇文章中已经大概介绍过NodeMCU和ESP8266的关系了,所以现在步入正题,学习NodeMCU接入天猫精灵,其实这是一个点灯 ...

  4. 利用Nodemcu+Arduino nano+TB6612+点灯科技APP制作简易麦克纳姆轮Wi-Fi遥控小车

    摘要 麦克纳姆轮小车由于车轮本身的特殊结构,可以实现全向行驶,可玩性非常强.麦克纳姆轮原理在这里不做展开,麦克纳姆小车主要是通过控制四个轮胎的转与不转以及转动的方向来实现多方向的运动,其中一种X型车轮 ...

  5. 智能照明系统雏形(esp8266nodemcu开发板+点灯科技软件+声控模块+光敏模块+人体感应模块)

    自己的项目一点点成形,很开心.这次就可以用以上的一些模块,实现点灯app上关闭手动模式时,当天黑时,如果检测到有声音或有人体靠近,则esp8266内置灯亮(身边没有别的led灯),当打开手动模式时,以 ...

  6. 点灯科技——小爱同学/RFID/四路继电器

    通过Blinker点灯科技APP连接esp32,并连接小爱同学,同时通过语音模块录入声音识别对应的语句,并通过程序判断需要执行何种操作. #define BLINKER_WIFI //支持wifi / ...

  7. 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计

    实现步骤 1. 简介 -今天一起来学习做一个可以用手机控制的红外遥控器,还可根据需求定时开关电视,一键进入设定电视节目.或者在快到家时,提前开启家中的空调.窗帘等红外遥控装置,为本不支持智能控制的红外 ...

  8. ESP8266 12F 点灯科技APP 控制两个舵机

    第一次写博客,有什么不足,希望大家指正. 文章目录 1.基本功能描述 2.程序 3.接线图 4.配置方法 5.注意事项 custom wifimanager 这个库在云盘在中呢 链接:https:// ...

  9. 基于点灯科技平台的智能开关设计

    基于点灯科技平台的智能开关设计 一.总体方案设计 设计由WIFI模块.电压检测模块.STM32微控制器三部分组成,能够通过ESP8266WIFI模块与点灯科技云平台进行数据的交互,设计间通过UART串 ...

最新文章

  1. python系统问题
  2. 使用应用程序(Java/Python)访问MaxCompute Lightning进行数据开发
  3. gj5 自定义序列类
  4. Linux操作(5)——创建硬链接与软链接
  5. 转:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 .
  6. flash位图技术研究篇(8):扫描像素点
  7. mysql 长连接 has gone away_MySQL server has gone away报错原因分析/
  8. epoll原理_Epoll源码阅读手札
  9. php如何进行微信支付宝,php实现微信和支付宝支付的示例代码
  10. android手表密码忘了咋办,moto 360手表通过Android 5.0系统自动解锁手机教程
  11. Linux的PS1美化
  12. BZOJ 3786: 星系探索 ETT
  13. 计算机学院开学发言,开学典礼 | 计控学院研究生代表发言稿
  14. 出现单实例模式毁坏Destroying singletons
  15. [转]scite文本编辑器的说明
  16. 云计算之存储虚拟化 -02
  17. python列表生成式
  18. 你知道icp许可证与edi许可证的区别吗
  19. php添加学生信息,PHP开发 学生管理系统之添加信息PHP页面
  20. 美国科技博客网:改变世界15种技术

热门文章

  1. Bootstrap学习:bootstrap简介(节选w3c菜鸟日记)
  2. 前端面试第快速复盘,不标准的面试经验分享 (二)
  3. seo关键词排名点击优化软件
  4. 晶体管共射极单管放大电路
  5. 【Runge-Kutta】龙格-库塔法求解微分方程matlab仿真
  6. 如何让多个视频同时倒放,并重新添加背景音乐
  7. php笔试面试题大全
  8. EmguCV-第01讲-EmguCV介绍与安装配置
  9. C语言例题——输入两个正整数m和n,求其最大公约数和最小公倍数。
  10. CNCC 2016 | 山世光:深度化的人脸检测与识别技术—进展与展望