失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > ESP8266开发 ESP8266连接阿里云物联网 天猫精灵控制esp8266 esp8266一键配网 智能家居

ESP8266开发 ESP8266连接阿里云物联网 天猫精灵控制esp8266 esp8266一键配网 智能家居

时间:2022-02-19 14:41:16

相关推荐

ESP8266开发 ESP8266连接阿里云物联网 天猫精灵控制esp8266 esp8266一键配网 智能家居

ESP8266开发、ESP8266连接阿里云物联网、天猫精灵控制esp8266、esp8266一键配网、智能家居

项目介绍

最近会 将arduino IDE开发ESP8266中一些值得记录得部分写下来。 我也是借助前者整理得文章与经验进行整合,有些部分过程我会直接将更好得作者链接加上。这篇文章对于新手小白可能无法直接使用。学习的过程就是不断的探索测试总结,需要一点点了解各个知识点后遇到整合瓶颈时使用。我也是这样一点点测试总结推理开发的。

通过这个教程其实可以简单的了解到智能家居的控制基本技术。 通过硬件、软件、app、小程序、网络、语音、等方式搭建各种环境的物联网。由于涉及功能比较多 如服务器端、小程序端、后端语言、域名、ssl、http、post、get、阿里云iot、mqtt 等 每一项都需要了解一些,所以以下部分内容我会将我开发时的一些有用地址附上,大家自行查看。可能看不懂可以加我微信look10086说明你的情况

本文主要目标是通过阿里的天猫精灵控制esp8266模块,esp8266模块再继续控制其他元器件的工作。

中间涉及的知识点有

esp8266在arduino ide环境开发前的搭建(包含搭建操作流程) 地址:/tiandiren111/article/details/107032096 阿里云物联网iot创建设备 获取 设备mqtt连接三元素esp8266与阿里云物联网iot mqtt连接 上报信息 地址:/tiandiren111/article/details/107032096 天猫精灵设置技能 地址:/walkline/aligenie_voice_skills/tree/master 天猫精灵发送指令 服务器处理执行服务器控制阿里云物联网与esp8266交互 服务器端开发语言php 使用阿里云php iot SDK esp8266一键配网

流程:

测试视频连接:/x/page/z3216x7calp.html


文章目录

ESP8266开发、ESP8266连接阿里云物联网、天猫精灵控制esp8266、esp8266一键配网、智能家居项目介绍前言一、服务器环境要求?二、开发逻辑三、资料arduino AliyunIoTSDK库中文件修改esp8266中代码 代码中包含一键配网

前言

本文主要介绍 如何通过服务器处理天猫精灵发送的指令 并将指令发给esp8266模块进行执行 知识点主要是5、6两部分


一、服务器环境要求?

服务器环境要求是 可以做域名解析 安装php运行环境 (后端代码使用php语言,主要看自己用什么语言开发后端)。

二、开发逻辑

服务器端工作主要逻辑是

接收天猫精灵发送过来的指令指令解析根据解析后的结果 发送给阿里云iot指令阿里云iot将服务器指令通过mqtt协议发给esp8266

esp8266逻辑

接收数据 根据数据状态 控制gpio端子输出

三、资料

资料这部分我主要整理了 后端执行代码、php版本的阿里云iot SDK 、esp8266带一键配网的代码、修改了arduino中的阿里云iot的库。

arduino AliyunIoTSDK库中文件修改

文件路径 C:\Users\cola\Documents\Arduino\libraries\AliyunIoTSDK\src\AliyunIoTSDK.cpp修改内容是 callback这个函数中的代码// 所有云服务的回调都会首先进入这里,例如属性下发static void callback(char *topic, byte *payload, unsigned int length){Serial.print("Message arrived jiang [");Serial.print(topic);Serial.print("] ");payload[length] = '\0';Serial.println((char *)payload);if(strstr(topic,"/user/get")){Serial.println("this is /user/get");StaticJsonDocument<200> doc;DeserializationError error = deserializeJson(doc, payload); //反序列化JSON数据Serial.println("error is befor");if (!error) //检查反序列化是否成功{Serial.println("error is false");parmPass(doc.as<JsonVariant>()); //将参数传递后打印输出}}if(strstr(topic,"/rrpc/request")){Serial.println("this is /user/get");StaticJsonDocument<200> doc;DeserializationError error = deserializeJson(doc, payload); //反序列化JSON数据Serial.println("error is befor");if (!error) //检查反序列化是否成功{Serial.println("error is false");parmPass(doc.as<JsonVariant>()); //将参数传递后打印输出}}if (strstr(topic, AliyunIoTSDK::ALINK_TOPIC_PROP_SET)){StaticJsonDocument<200> doc;DeserializationError error = deserializeJson(doc, payload); //反序列化JSON数据Serial.println("error is befor");if (!error) //检查反序列化是否成功{Serial.println("error is false");parmPass(doc.as<JsonVariant>()); //将参数传递后打印输出}}}

esp8266中代码 代码中包含一键配网

一键配网需要搭配乐鑫官网中的EspTouch App应用使用(连接wifi后打开应用 确定wifiSSID后输入wifi密码 点击确认)。

一键配网学习地址:/video/BV197411B725?t=995

#include <ESP8266WiFi.h>int count=0;bool WIFI_Status = true;//iotstatic WiFiClient espClient;// 引入阿里云 IoT SDK#include <AliyunIoTSDK.h>// 设置产品和设备的信息,从阿里云设备信息里查看#define PRODUCT_KEY "123" //修改成自己阿里云iot的#define DEVICE_NAME "Unit01" //修改成自己阿里云iot的#define DEVICE_SECRET "1111111111111111111111111111" //修改成自己阿里云iot的#define REGION_ID "cn-shanghai"int ledpin = 2;void setup() {Serial.begin(115200);delay(10);pinMode(LED_BUILTIN, OUTPUT);Serial.println("\r\n正在连接");// 下面判断一键配网while(WiFi.status()!=WL_CONNECTED){if(WIFI_Status){Serial.print(".");digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); count++;if(count>=5)//5s{WIFI_Status = false;Serial.println("WiFi连接失败,请用手机进行配网"); }}else{smartConfig(); //智能配网}} Serial.println("连接成功"); Serial.print("IP:");Serial.println(WiFi.localIP());// iot开始执行// 初始化 iot,需传入 wifi 的 client,和设备产品信息AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);// 绑定一个设备属性回调,当远程修改此属性,会触发 powerCallback// PowerSwitch 是在设备产品中定义的物联网模型的 idAliyunIoTSDK::bindData("PowerSwitch", powerCallback);// 发送一个数据到云平台,LightLuminance 是在设备产品中定义的物联网模型的 idAliyunIoTSDK::send("LightLuminance", 100);pinMode(ledpin,OUTPUT);}void loop() {AliyunIoTSDK::loop();}// 电源属性修改的回调函数 iot执行函数void powerCallback(JsonVariant p){// {"params":{"PowerSwitch":1}}Serial.print("ppppp: ");int PowerSwitch = p["PowerSwitch"];if (PowerSwitch == 1){Serial.println("进入启动设备");digitalWrite(ledpin,HIGH);// 启动设备}else if(PowerSwitch == 2){Serial.println("进入启动设备222");digitalWrite(ledpin,LOW);}}//配网函数void smartConfig(){WiFi.mode(WIFI_STA);Serial.println("\r\nWait for Smartconfig...");WiFi.beginSmartConfig();//等待手机端发出的用户名与密码while (1){Serial.print(".");digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); if (WiFi.smartConfigDone())//退出等待{Serial.println("SmartConfig Success");Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());break;}}}

如果觉得《ESP8266开发 ESP8266连接阿里云物联网 天猫精灵控制esp8266 esp8266一键配网 智能家居》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。