一、简介

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远程点灯)相关推荐

  1. 合宙Air780e+luatos接入华为云物联网平台完成设备通信与控制

    一.简介 1.项目介绍 之前发布的文章有esp8266的wifi模块和BC20的NB模块与华为云物联网通信为主,本期文章采用了合宙的4G LTE Cat.1模块,编程语言用的是lua,整体来说代码比较 ...

  2. 基于阿里云物联网平台的设备之间传输十六进制数据

    基于阿里云物联网平台的设备之间传输十六进制数据 文章目录 基于阿里云物联网平台的设备之间传输十六进制数据 1. 创建阿里云物联网产品 1.1 创建新的产品 1.2 为产品创建自定义topic 1.3 ...

  3. 阿里云物联网平台创建设备

    阿里云物联网平台创建设备 阿里云物联网平台创建设备 创建产品 创建设备 在线调试 阿里云物联网平台创建设备 本文演示使用阿里云物联网平台进行产品.设备的创建和使用,模拟调试,观察日志. 创建产品 1. ...

  4. 微信小程序连接阿里云物联网平台操控设备(IOT)一

    文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...

  5. 微信小程序连接阿里云物联网平台操控设备(IOT)三

    文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...

  6. 微信小程序连接阿里云物联网平台操控设备(IOT)二

    文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...

  7. 阿里云物联网平台实现MQTT通信

    阿里云物联网平台实现MQTT通信 一.环境搭建 一.阿里云物联网平台 二.MQTT.fx 总结 一.环境搭建 一.阿里云物联网平台 1.首先进入阿里云官网https://www.aliyun.com/ ...

  8. 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > CoAP协议接入 >

    CoAP连接通信 更新时间:2020-08-27 17:20:05 编辑我的收藏 本页目录 基础流程 使用对称加密自主接入 使用DTLS自主接入 物联网平台支持CoAP协议连接通信.CoAP协议适用在 ...

  9. 搭建阿里云物联网平台实现MQTT通信

    1,点击进入阿里云官方网站:阿里云-上云就上阿里云 (aliyun.com) 2,注册登录并且进行实名认证: 如下图: 点击右上角 控制台,进入如图界面: 3,在阿里物联网云平台创建设备: 首先创建产 ...

最新文章

  1. springboot2处理跨域
  2. Longest Substring Without Repeating Characters(最长不重复子序列求解)
  3. 如何在面试中介绍自己的项目经验,很重要!
  4. html5标签属性大全_HTML5中video标签如何使用
  5. 八个使前端工程师惊艳的效果设计,码否?
  6. 深入理解softmax函数
  7. 用计算路由的方法优化BI后台性能
  8. 森林结点数,边数与树个数的关系
  9. 《智能路由器开发指南》——2.6 参考资料
  10. python正交表结果生成
  11. EasyAR(一)——显示模型
  12. 数据结构之栈和队列(顺序栈、链栈、循环队列)
  13. 产品经理为什么比程序员工资要高?百度员工:因为他是产品灵魂
  14. 初来乍到,还请多多关照
  15. Holder 方式的单例
  16. 这可能是我用过最好用的SQL工具,免费还免安装,良心推荐SQL Studio
  17. 优质办公体验,掌上OA一机hold住全场
  18. 基于阈值处理的图像分割算法!
  19. 看这玩意复习你还会挂科?《数据结构篇》
  20. 中图分类法----TU 建筑工业

热门文章

  1. 推荐一些非常好玩和可爱的网站
  2. 写文案的技巧如何写出高质量文案
  3. 52单片机led灯闪烁c语言程序,单片机 LED 灯闪烁程序
  4. linux如何做命令审计,linux系统命令审计
  5. 【vs报错】vs2017 无法启动IIS Express Web服务器
  6. 毕业论文数据分析方法分类汇总
  7. 从IE到ME,微软依然在浏览器市场坚持,看看都有些什么新功能?
  8. archlinux安装mysql_Arch Linux 安装 MySQL 8.0
  9. vue中实现图片预览放大,缩小,旋转等功能, 使用viewerjs
  10. linux设置定时关机命令,windows定时关机和linux定时关机的方法(shutdown命令)