合宙Air780e+luatos+阿里云物联网平台完成设备通信与控制(属性上报+4G远程点灯)
一、简介
1、项目介绍
之前发布的文章有采用合宙的4G LTE Cat.1模块,编程语言用的是lua,整体来说代码比较简洁,实现对华为云物联网平台的设备通信与控制,即采用一个变量作为模拟属性定时上报,并以一个LED灯作为受控设备进行云端命令的控制,本期内容为使用了阿里云物联网平台完成同样上述功能。
准备:
Air780e开发板
usb-typec数据线
4G SIM手机卡(可上网)
2、Air780E模组
Air780E 是合宙通信推出的 LTE Cat.1bis通信模块,采用移芯EC618平台,支持4G全网通 支持双卡单待、支持SPI LCD、支持USB 2.0, 仅CDC功能、支持I2S数字语音接口、支持摄像头等配置,支持AT指令开发、CSDK开发和luatos的lua脚本语言的多种开发,开发板目前淘宝官网是39.9,性价比还是可以的
3、luatos
Lua可以说是目前嵌入式方案中,资源占用最小、运行效率最高、语法最简洁的一门脚本语言。对于编程小白来说,它适合作为你的编程入门语言,因为语法简单。对于会c语言的老手来说,它与c可以完美契合,再加上LuatOS本身就是开源,你可以轻松地使用c为其添加一套c库接口,享受它的高效。在本次教程中,我们便使用lua语言跑luatos实现对阿里云物联网平台的设备通信与控制。
4、阿里云物联网平台
阿里云物联网平台的相关配置在这里就不和大家一一重复了,创建产品、设备、属性等过程大家可以参考官方文档或视频,主要需要提前准备的数据有阿里云物联网平台设备的MQTT连接参数、MQTT发布订阅主题、设备属性等,参考如下:
--根据自己阿里云物联网平台的配置修改以下参数,下列参数仅作参考
local client_id = "a1ZR8uuCkfP.air780e_test|securemode=2,signmethod=hmacsha256,timestamp=1681048410186|"
local user_name = "air780e_test&a1ZR8u41341"
local password = "9b075c78b1a600065d28af9000www.funiot.xyz000www.funiot.xyz000"
local mqtt_host = "a1ZR8uuCkfP.iot-as-mqtt.cn-shanghai.aliyuncs.com"
local mqtt_port = 1883
订阅主题并设置设备属性:
local devdata_topic="/sys/a1ZR8uuCkfP/air780e_test/thing/event/property/post" --订阅属性上报主题
local cmdrec_topic="/sys/a1ZR8uuCkfP/air780e_test/thing/service/property/set" --订阅属性设置主题
local dev_control="thing.service.property.set" --订阅属性控制下发主题
local command_name="LED_Control" --控制命令
二、完整开发流程
1. 下载软件包与编译烧录工具
1) LuatOS软件包:Air780e使用LuatOS-SoC@EC618
下载链接:LuatOS-SoC@EC618 V1103
2) 调试与烧录工具:Luatools
下载链接:luatools调试与烧录工具
2. 编写luatos脚本
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "led"
VERSION = "1.0.0"-- 引入必要的库文件(lua编写), 内部库不需要require
sys = require("sys")log.info("main", "led")print(_VERSION)if wdt then--添加硬狗防止程序卡死,在支持的设备上启用这个功能wdt.init(9000)--初始化watchdog设置为9ssys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
end
--用户代码开始---------------------------------------------------
--根据自己阿里云物联网平台的配置修改以下参数,下列参数仅作参考
local mqtt_host = "a1ZR8uuCkfP.iot-as-mqtt.cn-shanghai.aliyuncs.com"
local mqtt_port = 1883
local mqtt_isssl = false
local client_id = "a1ZR8uuCkfP.air780e_test|securemode=2,signmethod=hmacsha256,timestamp=1681048410186|"
local user_name = "air780e_test&a1ZR81132134"
local password = "9b075c78b1a600065d28afa0d3b42www.funiot.xy&&www.funiot.xyz"
local mqtt_aliyun = nil
local devdata_topic="/sys/a1ZR8uuCkfP/air780e_test/thing/event/property/post" --订阅属性上报主题
local cmdrec_topic="/sys/a1ZR8uuCkfP/air780e_test/thing/service/property/set" --订阅属性设置主题
local dev_control="thing.service.property.set" --订阅属性控制下发主题
local command_name="LED_Control" --控制命令
local LED_PIN=27 --LED引脚编号
gpio.setup(LED_PIN,0, gpio.PULLUP) --设置LED上拉输出sys.taskInit(function()print("connected to aliyun example\r\n")while 1 do--网络相关mobile.simid(2)LED = gpio.setup(27, 0, gpio.PULLUP)device_id = mobile.imei()sys.waitUntil("IP_READY", 30000)--mqtt客户端创建mqtt_aliyun = mqtt.create(nil,mqtt_host, mqtt_port, mqtt_isssl, ca_file)mqtt_aliyun:auth(client_id,user_name,password) mqtt_aliyun:keepalive(60) -- 默认值240smqtt_aliyun:autoreconn(true, 3000) -- 自动重连机制--注册mqtt回调mqtt_aliyun:on(function(mqtt_client, event, data, payload)-- 用户自定义代码log.info("mqtt", "event", event, mqtt_client, data, payload)if event == "conack" then --连接响应成功sys.publish("mqtt_conack")--订阅主题mqtt_client:subscribe(pub_devdata_topic)mqtt_client:subscribe(pub_cmdrec_topic)elseif event == "recv" thenlog.info("mqtt", "downlink", "topic", data, "payload", payload)print("payload:",payload)--解析json--例如:--{"method":"thing.service.property.set","id":"273481693","params":{"LED_Control":1},"version":"1.0.0"}local mycmd=json.decode(payload)if mycmd then -- 若解码失败, 会返回nilprint("method :",mycmd["method"])print("params is",mycmd["params"])print("params->LED_Control is",mycmd["params"]["LED_Control"])if mycmd["method"]==dev_control thenif mycmd["params"]["LED_Control"]==1 thenprint("led turn on")gpio.set(LED_PIN, gpio.HIGH)elseif mycmd["params"]["LED_Control"]==0 thenprint("led turn off")gpio.set(LED_PIN, gpio.LOW)endend end elseif event == "sent" thenlog.info("mqtt", "sent", "pkgid", data)-- elseif event == "disconnect" then-- 非自动重连时,按需重启mqtt_aliyun-- mqtt_client:connect()endend)--连接mqttmqtt_aliyun:connect()sys.waitUntil("mqtt_conack")while true do-- mqtt_aliyun自动处理重连local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)if ret thenif topic == "close" then break endmqtt_aliyun:publish(topic, data, qos)endendmqtt_aliyun:close()mqtt_aliyun = nil end
end)
--定时上报属性
sys.taskInit(function()local topic = devdata_topic --上报的topiclocal temp=0 --温度属性值local data = "{\"method\":\"thing.service.property.set\",\"params\":{\"IndoorTemperature\":"..tostring(temp).."}}"local qos = 1local temp=0while true dosys.wait(5000)if mqtt_aliyun and mqtt_aliyun:ready() then-- mqtt_aliyun:subscribe(topic)local pkgid = mqtt_aliyun:publish(topic, data, qos)temp=temp+1data = "{\"method\":\"thing.service.property.set\",\"params\":{\"IndoorTemperature\":"..tostring(temp).."}}"print(data)-- 也可以通过sys.publish发布到指定task去-- sys.publish("mqtt_pub", topic, data, qos)endend
end)-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
3. 编译烧录
打开Luatools,点击项目管理按钮,选择下载好的固件(后缀名为soc的文件)和编写好的main.lua文件,勾选USB BOOT下载,点击下载底层和脚本按钮下载即可,具体操作流程如下图所示:
4. 运行结果
【注】命令下发通过设置设备属性实现,如下图
命令接收的同时开发板的LED灯会根据发送的对应命令完成开关亮灭
6.其他相关参考文章
【stm32+AT指令+ESP8266接入华为云物联网平台并完成属性上报与下发的命令处理】
【esp8266接入华为云物联网平台完成属性上报、命令处理】
【合宙Air780e+luatos接入华为云物联网平台完成设备通信与控制】
合宙Air780e+luatos+阿里云物联网平台完成设备通信与控制(属性上报+4G远程点灯)相关推荐
- 合宙Air780e+luatos接入华为云物联网平台完成设备通信与控制
一.简介 1.项目介绍 之前发布的文章有esp8266的wifi模块和BC20的NB模块与华为云物联网通信为主,本期文章采用了合宙的4G LTE Cat.1模块,编程语言用的是lua,整体来说代码比较 ...
- 基于阿里云物联网平台的设备之间传输十六进制数据
基于阿里云物联网平台的设备之间传输十六进制数据 文章目录 基于阿里云物联网平台的设备之间传输十六进制数据 1. 创建阿里云物联网产品 1.1 创建新的产品 1.2 为产品创建自定义topic 1.3 ...
- 阿里云物联网平台创建设备
阿里云物联网平台创建设备 阿里云物联网平台创建设备 创建产品 创建设备 在线调试 阿里云物联网平台创建设备 本文演示使用阿里云物联网平台进行产品.设备的创建和使用,模拟调试,观察日志. 创建产品 1. ...
- 微信小程序连接阿里云物联网平台操控设备(IOT)一
文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...
- 微信小程序连接阿里云物联网平台操控设备(IOT)三
文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...
- 微信小程序连接阿里云物联网平台操控设备(IOT)二
文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...
- 阿里云物联网平台实现MQTT通信
阿里云物联网平台实现MQTT通信 一.环境搭建 一.阿里云物联网平台 二.MQTT.fx 总结 一.环境搭建 一.阿里云物联网平台 1.首先进入阿里云官网https://www.aliyun.com/ ...
- 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > CoAP协议接入 >
CoAP连接通信 更新时间:2020-08-27 17:20:05 编辑我的收藏 本页目录 基础流程 使用对称加密自主接入 使用DTLS自主接入 物联网平台支持CoAP协议连接通信.CoAP协议适用在 ...
- 搭建阿里云物联网平台实现MQTT通信
1,点击进入阿里云官方网站:阿里云-上云就上阿里云 (aliyun.com) 2,注册登录并且进行实名认证: 如下图: 点击右上角 控制台,进入如图界面: 3,在阿里物联网云平台创建设备: 首先创建产 ...
最新文章
- springboot2处理跨域
- Longest Substring Without Repeating Characters(最长不重复子序列求解)
- 如何在面试中介绍自己的项目经验,很重要!
- html5标签属性大全_HTML5中video标签如何使用
- 八个使前端工程师惊艳的效果设计,码否?
- 深入理解softmax函数
- 用计算路由的方法优化BI后台性能
- 森林结点数,边数与树个数的关系
- 《智能路由器开发指南》——2.6 参考资料
- python正交表结果生成
- EasyAR(一)——显示模型
- 数据结构之栈和队列(顺序栈、链栈、循环队列)
- 产品经理为什么比程序员工资要高?百度员工:因为他是产品灵魂
- 初来乍到,还请多多关照
- Holder 方式的单例
- 这可能是我用过最好用的SQL工具,免费还免安装,良心推荐SQL Studio
- 优质办公体验,掌上OA一机hold住全场
- 基于阈值处理的图像分割算法!
- 看这玩意复习你还会挂科?《数据结构篇》
- 中图分类法----TU 建筑工业
热门文章
- 推荐一些非常好玩和可爱的网站
- 写文案的技巧如何写出高质量文案
- 52单片机led灯闪烁c语言程序,单片机 LED 灯闪烁程序
- linux如何做命令审计,linux系统命令审计
- 【vs报错】vs2017 无法启动IIS Express Web服务器
- 毕业论文数据分析方法分类汇总
- 从IE到ME,微软依然在浏览器市场坚持,看看都有些什么新功能?
- archlinux安装mysql_Arch Linux 安装 MySQL 8.0
- vue中实现图片预览放大,缩小,旋转等功能, 使用viewerjs
- linux设置定时关机命令,windows定时关机和linux定时关机的方法(shutdown命令)