手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

手把手,基于,luatos,4g,lte,cat,模组,接入,华为,联网,平台 · 浏览次数 : 131

小编点评

#华为云物联网平台Android应用开发-详细教程 ##1.运行结果命令接收的同时开发板的LED灯光会对应的完成开关亮灭5. **Android APP这里我们同样可以采用之前的Android APP完成与物联网平台的通信,实现手机远程控制户外设备与数据通信的功能链接。** ##2.其他相关参考文章 * **stm32+AT指令+ESP8266接入华为云物联网平台并完成属性上报与下发的命令处理** * https://bbs.huaweicloud.com/forum/thread-195143-1-1.html * **esp8266接入华为云物联网平台完成属性上报、命令处理** * https://bbs.huaweicloud.com/forum/thread-187353-1-1.html * **华为云物联网平台和完成属性上报与下发的命令处理** * https://bbs.huaweicloud.com/forum/thread-186368-1-1.html * **华为云物联网平台与完成属性上报与下发的命令处理** * https://bbs.huaweicloud.com/forum/thread-187353-1-1.html ##3.生成内容时需要带简单的排版 * 例如: ``` #华为云物联网平台Android应用开发-详细教程 ##1.运行结果命令接收的同时开发板的LED灯光会对应的完成开关亮灭5. **Android APP这里我们同样可以采用之前的Android APP完成与物联网平台的通信,实现手机远程控制户外设备与数据通信的功能链接。** ##4.其他相关参考文章 * **stm32+AT指令+ESP8266接入华为云物联网平台并完成属性上报与下发的命令处理** * **esp8266接入华为云物联网平台完成属性上报、命令处理** * **华为云物联网平台和完成属性上报与下发的命令处理**

正文

摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制

本文分享自华为云社区《基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台完成设备通信与控制(Air780e)》,作者:中华小能能。

一、简介

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发布订阅主题等,参考如下:

local mqtt_host = "iot-mqtts.cn-north-4.myhuaweicloud.com" 
local mqtt_port = 1883 
local mqtt_isssl = false
local client_id = "61fb2d7fde9933029bfuniot_esp8266_test01_0_0_2023021710"
local user_name = "61fb2d7fde9933029bfuniot_esp8266_test01"
local password = "eaff6453a8b5b774b11funiot99aa367b52df8funiot5333funiotf76bea151"
local mqtt_hw = nil
local devdata_topic="$oc/devices/61fb2d7fde9933029funiot_esp8266_test01/sys/properties/report" --订阅属性上报主题
local cmdrec_topic="$oc/devices/61fb2d7fde9933029befuniot_esp8266_test01/sys/commands/#"         --订阅命令下发主题
local service_id="Dev_data"             --服务ID
local command_name="Control"            --控制命令

二、完整开发流程

1.下载软件包与编译烧录工具

1)LuatOS软件包:Air780e使用LuatOS-SoC@EC618

下载链接:LuatOS-SoC@EC618 V1103

2)调试与烧录工具:Luatools

下载链接:https://doc.openluat.com/wiki/37?wiki_page_id=4489#LuaTools__9

2. 编写luatos脚本

-- 获取更多资料,可以关注公众号"IOT趣制作"
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "led"
VERSION = "1.0.0"
-- 引入必要的库文件(lua编写), 内部库不需要require
sys = require("sys")
log.info("main", "mqtt_huaweiiot")
print(_VERSION)
if wdt then
 --添加硬狗防止程序卡死,在支持的设备上启用这个功能
    wdt.init(9000)--初始化watchdog设置为9s
    sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
end
--用户代码开始---------------------------------------------------
--根据自己华为云物联网平台的配置修改以下参数,下列参数仅作参考
local mqtt_host = "iot-mqtts.cn-north-4.myhuaweicloud.com" 
local mqtt_port = 1883 
local mqtt_isssl = false
local client_id = "61fb2d7fde9933029bfuniot_esp8266_test01_0_0_2023021710"
local user_name = "61fb2d7fde9933029bfuniot_esp8266_test01"
local password = "eaff6453a8b5b774b11funiot99aa367b52df8funiot5333funiotf76bea151"
local mqtt_hw = nil
local devdata_topic="$oc/devices/61fb2d7fde9933029funiot_esp8266_test01/sys/properties/report" --订阅属性上报主题
local cmdrec_topic="$oc/devices/61fb2d7fde9933029befuniot_esp8266_test01/sys/commands/#"         --订阅命令下发主题
local service_id="Dev_data"             --服务ID
local command_name="Control"            --控制命令
local LED_PIN=27                        --LED引脚编号
gpio.setup(LED_PIN,0, gpio.PULLUP)      --设置LED上拉输出
sys.taskInit(function()
    while 1 do
        --网络相关
        mobile.simid(2)
        LED = gpio.setup(27, 0, gpio.PULLUP)
        device_id = mobile.imei()
        sys.waitUntil("IP_READY", 30000)
        --mqtt客户端创建
        mqtt_hw = mqtt.create(nil,mqtt_host, mqtt_port, mqtt_isssl, ca_file)
        mqtt_hw:auth(client_id,user_name,password) 
        mqtt_hw:keepalive(60) -- 默认值240s
        mqtt_hw:autoreconn(true, 3000) -- 自动重连机制
        --注册mqtt回调
        mqtt_hw: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" then
                log.info("mqtt", "downlink", "topic", data, "payload", payload)
                print("payload:",payload)
                --解析json
                --例如:{"paras":{"led":1},"service_id":"Dev_data","command_name":"Control"}
 local mycmd=json.decode(payload)
 if mycmd then -- 若解码失败, 会返回nil
                    print("service_id :",mycmd["service_id"])
                    print("command_name is",mycmd["command_name"])
                    print("paras->led is",mycmd["paras"]["led"])
 if mycmd["service_id"]==service_id and mycmd["command_name"]==command_name then
 if  mycmd["paras"]["led"]==1 then
                            print("led turn on")
                            gpio.set(LED_PIN, gpio.HIGH)
                        elseif mycmd["paras"]["led"]==0 then
                            print("led turn off")
                            gpio.set(LED_PIN, gpio.LOW)
 end
 end 
 end 
            elseif event == "sent" then
                log.info("mqtt", "sent", "pkgid", data)
            -- elseif event == "disconnect" then
                -- 非自动重连时,按需重启mqtt_hw
                -- mqtt_client:connect()
 end
 end)
        --连接mqtt
        mqtt_hw:connect()
        sys.waitUntil("mqtt_conack")
        while true do
            -- mqtt_hw自动处理重连
 local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)
 if ret then
 if topic == "close" then break end
                mqtt_hw:publish(topic, data, qos)
 end
 end
        mqtt_hw:close()
        mqtt_hw = nil   
 end 
end)
--定时上报属性
sys.taskInit(function()
 local topic = devdata_topic --上报的topic
 local temp=0    --温度属性值
 local data = "{\"services\":[{\"service_id\":\"Dev_data\",\"properties\":{\"temp\": "..tostring(temp).."}}]}"
 local qos = 1
 local temp=0
    while true do
        sys.wait(5000)
 if mqtt_hw and mqtt_hw:ready() then
            -- mqtt_hw:subscribe(topic)
 local pkgid = mqtt_hw:publish(topic, data, qos)
            temp=temp+1
            data = "{\"services\":[{\"service_id\":\"Dev_data\",\"properties\":{\"temp\": "..tostring(temp).."}}]}"
            -- 也可以通过sys.publish发布到指定task去
            -- sys.publish("mqtt_pub", topic, data, qos)
 end
 end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

3.编译烧录

打开Luatools,点击项目管理按钮,选择下载好的固件(后缀名为soc的文件)和编写好的main.lua文件,勾选USB BOOT下载,点击下载底层和脚本按钮下载即可,具体操作流程如下图所示:

4.运行结果

命令接收的同时开发板的LED灯光会对应的完成开关亮灭

5.Android APP

这里我们同样可以采用之前的Android APP完成与物联网平台的通信,实现手机远程控制户外设备与数据通信的功能

链接:【华为云IOT的Android应用开发-详细教程】:https://bbs.huaweicloud.com/forum/thread-186368-1-1.html

6.其他相关参考文章

【stm32+AT指令+ESP8266接入华为云物联网平台并完成属性上报与下发的命令处理】https://bbs.huaweicloud.com/forum/thread-195143-1-1.html

【esp8266接入华为云物联网平台完成属性上报、命令处理】https://bbs.huaweicloud.com/forum/thread-187353-1-1.html

 

点击关注,第一时间了解华为云新鲜技术~

与手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台相似的内容:

手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区《基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台完成设备通信与控制(Air780e)》,作者:中华小能能。 一、简介 1、项目介绍 本期文章采用了

手把手教你实现跳表!

发布于我的博客,也许同步更新于博客园 引入 跳表(跳跃表)能够维护一个数的集合(作用类似普通平衡树),查找时间复杂度为 \(\log n\),与平衡树一样基于链表结构。由于不需要平衡树那么多旋转什么的,所以效率比较高,一般认为性能能打红黑树。除此以外,链表的特性使它能够以线性时间遍历某个子段。Red

[转帖]手把手教你安装openGauss 3.1.0

手把手教你安装openGauss 3.1.0 目录 前言 一、安装包的下载 1、centos 7.6的下载 2、openEuler 20.03LTS的下载 3、openGauss安装包的下载 二、安装环境的准备 1、硬件环境要求 2、软件环境要求 3、软件依赖要求 4、关闭操作系统防火墙 6、设置操

手把手教你调用5个公共API获取数字货币市场数据(文章内附源码)

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。 获取数字货币的历史行情数据可以通过一些专门的数字货币数据API或者第三方数据服务来实现。以下是一些获取数字货币历史行情数据的方法: 1 CoinGecko API CoinGecko是一个数字货币市场数据

手把手教你如何在报表中查询数据

每周一个报表小技巧:如何在报表中引入数据筛选功能 >摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言篇 在当今信息爆炸的时代,面对海量的

手把手教你一套完善且高效的k8s离线部署方案

作者:郝建伟 背景 面对更多项目现场交付,偶而会遇到客户环境不具备公网条件,完全内网部署,这就需要有一套完善且高效的离线部署方案。 系统资源 | 编号 | 主机名称 | IP | 资源类型 | CPU | 内存 | 磁盘 | | -- | | | | | | | | 01 | k8s-master1

手把手教你写一个JSON在线解析的前端网站1

前言 作为一名Android开发,经常要跟后端同事联调接口,那么总避免不了要格式化接口返回值,将其转换为清晰直观高亮的UI样式以及折叠部分内容,方便我们查看定位关键的信息。 一直以来都是打开Google 搜索json格式化关键字,然后选择Google推荐的前三名的网址,比如 bejson网站: ht

手把手教你实现法玛三因子模型

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。 关于法玛三因子模型 法玛三因子模型(Fama-French Three-Factor Model)是一种资本资产定价模型(Capital Asset Pricing Model,CAPM)的扩展,用于解释

手把手教你玩转 Excel 数据透视表

本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 1. 什么是数据透视表 数据透视表是一种可以快速汇总、分析大量数据表格的交互式分析工具。使用数据透视表可以按照数据表格的不同字段从多个角度进行透视,并建立交叉表格,用以

手把手教你从安装CentOS7.4镜像开始,搭建IoT视频监控系统

摘要:在CentOS7.4服务器版本的环境下安装nginx服务器、配置文件服务器、流媒体服务器。 本文分享自华为云社区《华为云ECS服务器安装CentOS7.4镜像,部署GINX服务器、搭建物联网视频监控系统》,作者:DS小龙哥。 在CentOS7.4服务器版本的环境下安装nginx服务器、配置文件