上一篇我们介绍了阿里物联网平台的使用,并使用MQTT.fx软件来模拟实际的硬件设备。这一篇来实际操作如何使用esp8266接入到阿里物联网平台中,并控制一个LED灯。阿里物联网平台实际上是一个一站式的开发套件,我们可以在该平台中最终生成一个连接esp8266硬件的android版本、ios版本的APP,或者一个web控制界面,我们可以通过这些在移动场景下操控接入的设备,非常强大。接下来我们来介绍如何实际使用esp8266接入该平台。

1.硬件准备

首先我们要准备一个esp8266模组,这里我们使用的是搭载esp8266-12F的nodemcu模组。如下:

我们将LED接入到D0、3V引脚。

2.烧写nodemcu镜像

往nodemcu刷入带MQTT、SJSON模块的nodemcu镜像。具体的如何刷入nodemcu镜像,这里就不再赘述,请参考我前面的博文:

ESP8266 制作烧写nodemcu镜像以及简单测试

我们选择刷入的功能模块有:

crypto, ds18b20, encoder, file, gpio, http, i2c, mqtt, net, node, pwm, sjson, spi, tmr, uart, wifi.
3.阿里物联网平台创建产品及设备

如何在阿里物联网平台创建产品及设备我前面的博文已经有描述过,可以参考我前面的博文:阿里物联网平台的使用

这里再简单叙述一下如何操作。

进入阿里物联网接入平台:https://iot.console.aliyun.com/product

首先点击设备管理目录下的产品,再点击创建产品

在出现的窗口想都不用想,直接选高级版(高级版拥有更多的功能,我们可以在线调试,设备联动功能等,而且高级版也不要钱啊~_~),点击下一步

这一步我们完成设备的取名,我这里取名为 esp8266_灯2,所属分类选择为 (所属分类的选择会默认添加相应电器类型的一些控制指令,例如灯会有开关,如果是调光灯的话会有灯亮度百分比的一些控制指令),数据格式为ICA类型 ,其他的默认选择。点击完成,这样就完成了一个产品的创建了。

然后我们会在产品列表里看到自己创建的产品---esp8266_灯2,点击查看

然后显示了当前产品的一些信息,接下来我们点击前往管理,在当前产品下添加 灯类型的一些具体设备

我们在设备管理界面里点击 添加设备按钮

输入设备名,这里我设置设备名为 led2,点击确定,即可完成一个设备的生成

最后会弹出一个窗口。这个上面的ProductKey、DeviceName、DeviceSecret为nodemcu 通过MQTT协议与阿里物联平台对接的鉴权证书。

接下来我们需要用到一个MQTT的转换软件,直接贴出网页版的:

http://www.norra.cn:9091/?spm=a2c4e.11153940.blogcont625885.13.641064c5oG4krM

如上所述:我们可以通过它输入ProductKey、DeviceName、DeviceSecret计算出MQTT连接域名、端口、ClientId、用户名和密码。具体如下:

生成的域名、端口、客户端编号、用户名和密码我们保存好,在接下来的nodemcu程序中需要填入这些信息。

4.nodemcu端设备编程

我们使用lua语言来进行设备端的程序编写。使用Esplorer软件进行代码编写及烧录调试。
led2.lua

myMQTTport      = 1883 --端口Port
myMQTThost      = "*********.iot-as-mqtt.cn-shanghai.aliyuncs.com" --域名Domain Name
myMQTTusername  = "**********" --用户名Username
myMQTTpassword  = "*************************************" --密码Password
myMQTTClientId  = "**********************************************" --客户端编号ClientIdtopic_pub = "/sys/a1i91nbPAGj/led2/thing/event/property/post" --发布
topic_sub = "/sys/a1i91nbPAGj/led2/thing/service/property/set"--订阅

这里的topic_pub和topic_sub 来自于设备中的topic列表中,

我们通过topic_pub来向物联网平台报告当前的设备状态(例如当前灯是开的还是关的等设备信息),topic_sub来接收物联网平台发送过来的开关指令。

--led灯一端接V3口
led = 0
led_flag = 0
gpio.mode(led,gpio.OUTPUT)
gpio.write(led,gpio.HIGH) --默认led关闭
function func_setLed(bool_led)print('function set led:'..bool_led)if bool_led==1 thenled_flag = 1gpio.write(led,gpio.LOW) --点亮LEDmyMQTT:publish(topic_pub,"{'params':{'LightSwitch':1}}",1,0,function(client)print("publish ok")end)elseled_flag = 0gpio.write(led,gpio.HIGH) --关闭LEDmyMQTT:publish(topic_pub,"{'params':{'LightSwitch':0}}",1,0,function(client)print("publish ok")end)end
endmyMQTT=mqtt.Client(myMQTTClientId, 120,myMQTTusername,myMQTTpassword)MQTTconnectFlag=0
tmr.alarm(1,1000,1,function()if myMQTT~=nil thenprint("Attempting client connect...")myMQTT:connect(myMQTThost, myMQTTport,0,MQTTSuccess,MQTTFailed)end
end)function MQTTSuccess(client)print("MQTT connected")client:subscribe(topic_sub,0, function(conn)--设备连接成功后订阅topic,接收云端控制指令print("subscribe success")end)myMQTT=clientMQTTconnectFlag=1tmr.stop(1)--设备连接成功后首先报告设备的状态,默认上报灯的状态是关的myMQTT:publish(topic_pub,"{'params':{'LightSwitch':0}}",1,0,function(client)print("publish success")end)
endfunction MQTTFailed(client,reson) --连接失败时重启定时器,不停尝试连接print("Fail reson:"..reson)MQTTconnectFlag=0tmr.start(1)
endmyMQTT:on("offline", function(client)--设备掉线时print ("offline") tmr.start(1)
end)myMQTT:on("message", function(client, topic, data) print(topic..":") if data ~= nil thenprint(data)-- decode json --local jsonData = sjson.decode(data)switch_led = jsonData["params"]["LightSwitch"]func_setLed(switch_led)-- decode json --end
end)

完整的直接烧录运行的代码已经上传到csdn下载页,请点击下载

https://download.csdn.net/download/zz531987464/11094938

5.阿里物联网平台进行nodemcu端的远程调试

当我们往nodemcu烧写好上面的代码后,当nodemcu正常运行时打开管理控制台后能够看到设备在线字样。我们点击运行状态,查看当前nodemcu中上报的LED的状态,我们需要首先开启右边的实时刷新按钮,这样才会实时获取到nodemcu上报的LED状态。这个窗口一直保存着不要关闭!!!

接下来我们新开一个窗口,用于模拟移动Android端的APP模拟点击打开关闭的按钮

进入到调试界面

我们在步骤4中设置0,在右侧的实时日志窗口首先就可以看到云端下发数据,然后nodemcu端的灯灭了,接着根据nodemcu的代码中的执行,灯的状态灭了之后会上报一下当前nodemcu的led的状态,接下来可以看到实时日志窗口显示设备上报数据,然后我们在刚打开的设备状态窗口就可以看到设备运行状态显示为 0.

操作正确说明我们的阿里物联网平台控制nodemcu中LED的流程是ok的,nodemcu端上报的LED的状态也是ok的。那么接下来我们通过阿里物联网平台创建一个关联的APP来进行设备的控制。web的这里就不详细介绍了,基本都是一个套路。

6. 通过物联平台创建Android APP控制nodemcu LED

点击开发服务,选择IOT Studio,进入后点击右边的新建项目,输入项目名称,这里我定义名称为 智能家居管理,描述什么的可写可不写。创建完成后点击查看

点击 导入产品,将前面创建的 esp8266_灯 产品导入进来,接下来点击移动可视开发创建一个移动端的APP。设置应用的名称为 智能家居APP


接下来我们进入到APP的IDE界面,在这定义新增页中拖拽一个开关的控件,在界面上点击开关,为该开关配置数据,数据来源选择前面创建的esp8266_灯,配置好后点击 确定。然后我们点击 确定,接着会弹出一个现实配置数据正确的弹框。

接下来我们只需要将新增的自定义新增页关联到首页模块即可。

链接选择为 自定义新增页1,点击确定。当我们点击首页的页面标题时会跳转到自定义新增页1,就可以看到一个开关按钮。

接下来我们开始构建一个android应用。点击上面的保存,然后点击构建,选择Android,会弹出19的这样一个框子。Android报名选择随机生成,点击下一步,就会显示正在构建Android 应用中。

构建完成后,最后会弹出一个带有二维码的界面,我们扫码下载注册登录进去。

进入到APP里面后我们可以看到首页里面有一个标题,然后点击进去,进入到我们的自定义新增页1,里面有一个开关按钮,点击开关按钮就可以看到nodemcu端LED的状态是否发生变化了。

7.总结

至此,一个完整的esp8266 连接阿里物联网平台实现远程控制的demo基本完成,从这个demo工程中我们可以看到,阿里物联网在我看来确实是十分强大,一站式开发的平台,在该平台上能够实现一套完整的物联网的方案。(ps:哈哈,有打广告的嫌疑,但是原谅我确实没用过其他平台的产品 ~.~)

并且在该平台上我们可以结合数据整合收集,AI分析,最终实现一个AIOT的方案。这个是后话,暂时还是没能力研究这个==!。当前已经入手了方糖,接下来再看看怎么捣鼓用方糖语音控制esp8266吧,给马上到手的房子做一套完整的智能家居,这篇终了。。。

ESP8266 接入阿里物联网平台实现远程控制LED相关推荐

  1. MCU接入阿里物联网平台遇到的各种坑

    使用阿里物联网sdk3.2.0 1.cJson相关坑,修改了cJSON_malloc和cJSON_free的指向以后,忘记修改realloc的指向了,结果csjon创建字符串的时候调用了系统的real ...

  2. STM32F103+ESP8266接入阿里云平台(曲折的上云之路)

    STM32接入阿里云 文章目录 STM32接入阿里云 前言 一.所需环境 二.配置步骤 1.烧录固件 2.stm32的配置 总结 前言 在这之前学习了ESP8266接入阿里云,平台是arduino,虽 ...

  3. 【物联网 · 嵌入式】使用 ESP8266 接入 Blinker 物联网平台

    一.介绍 Blinker 是一个简单易用的物联网平台,只需要几行代码,就可以开发出物联网应用. 这里我们使用 NodeMCU(一种基于esp8266的开发板)接入Blinker平台. NodeMCU ...

  4. 阿里物联网平台的使用

    此处我们不使用具体的硬件设备来与物联网平台进行交互,我们可以使用MQTT.fx软件来模拟相关的硬件设备,让该设备与阿里物联网平台进行通信. 下篇我们将介绍如何使用esp8266 实际与阿里物联网平台进 ...

  5. Esp8266(NodeMcu)接入新大陆物联网平台并且上传温湿度

    Esp8266[NodeMcu]接入新大陆物联网 1.平台注册和产品创建 2.代码协议部分2.1 连接请求协议:2.2 数据上报部分协议 3.完整代码部分 3.1 效果图: 使用Esp8266接入新大 ...

  6. ESP-8266接入阿里云开关LED

    ESP-8266接入阿里云开关LED 我们通过esp8266连接到阿里云,再通过阿里云绑定修改led属性,esp8266接收到mqtt协议报文处理我们的开关灯函数 阿里云控制台添加设备,esp8266 ...

  7. ESP32/ESP8266/ESP32C3系列模组 AT固件MQTT 对接阿里物联网平台

    文章目录 一.前言 二.一机一密接入 三.一型一密接入 四.订阅&发布 4.1 订阅 4.2 发布 五.总结 一.前言 本文介绍如何使用AT指令MQTT接入阿里云物联网平台,包括一机一密.一型 ...

  8. [笔记]阿里云物联网之业务服务端(java、php)接入阿里云平台

    文章目录 前言 准备 相关资料 相关介绍 消息通信 云产品流转 RocketMQ 服务订阅 MNS AMQP Topic通信 创建设备 Mqttfx设备接入(模拟设备) 安装mqtt.fx 1.71版 ...

  9. 安信可ESP8266接入阿里生活飞燕平台国际版,实现亚马逊Alexa Echo音响语音控制;

    文章目录 一.博主寄言 二.中国站和国际站 2.1 中国站与国际站的区别: 2.2 站点切换 三.设备固件烧录 四.设备接线 五.下载国际版APP授权Alexa音响: 六.控制指令 一.博主寄言 给大 ...

最新文章

  1. 的g极串一个电阻_负载电阻的原理及应用
  2. 小森生活显示无可用服务器,《小森生活》无可用游戏服务器解决教程 无可用网关服务器怎么办...
  3. DevExpress v15.1:CodeRush控件功能增强
  4. rust进水器怎么用_喷丝板钻孔速度太慢怎么办?用这款增速器,效率提高35%
  5. 博弈论(一):Nim游戏
  6. 结对编程1-基于GUI的四则运算生成器
  7. javascript中构造StringBuffer实例
  8. c语言extern_C语言中#if,#if defined ,#ifdef,extern的用法描述
  9. python中怎样使用re模块_python如何导入re模块
  10. 【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
  11. oracle银行借贷系统,Oracle ERP系統借贷关系表
  12. 【紫书】UVA714 抄书 Copying Books
  13. 笔记本驱动图标消失怎么办
  14. C/C++时间字符串和时间戳的相互转化
  15. 网易云刷歌python
  16. 线性代数之矩阵的秩(2)
  17. Maven私服创建--Nexus
  18. springcloud和分布式微服务学习笔记
  19. 前端学习日志-7-浏览器
  20. 看图记设计模式【四】,创建模式系列:生成器模式

热门文章

  1. Redis资料汇总(二) 数据类型
  2. 系统分析与设计之用例图
  3. python复数计算符号_Python:基本运算、基本函数(包括复数)、Math模块、NumPy模块...
  4. 阿里云Centos系统下部署静态前端页面
  5. 显卡的各种故障维修方法
  6. 主Module(app)直接跳转到子Module,子Module跳转到主Module(app)要借助Router
  7. 基于Angularjs框架实现HTML5在线查看OFD文件
  8. New情报:APT28,TA505 黑产组织,VenusLocker Ransomware组织,ROKRAT远控
  9. r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文
  10. r语言绘制精美pcoa图_[R语言 学习笔记]用R做主坐标分析(PCoA)