NodeMCU连接天猫精灵第一集——硬件构架(基于Blinker点灯科技)
根据上面说的硬件部分已经搭建完成了,所以现在说一下软件开发,首先要有一个共识,NodeMCU是可以用Arduino IDE开发的,只需要安装完成Arduino IDE之后进行几个步骤就OK了

1.开发环境

A.Arduino IDE

官方安装地址:Arduino
直接下载即可,如果嫌弃官网速度慢的可以自己找资源下载,找不到的就基本告别搞开发了
安装好Arduino IDE之后,打开软件,找到菜单栏>文件>首选项,添加以下网址到 附加开发板管理器网址
http://arduino.esp8266.com/stable/package_esp8266com_index.json
操作如图所示:

B.ESP8266模组

之后找到 菜单栏>工具>开发板>开发板管理器,搜索“esp8266”,并选择最新版本安装


等待安装完成之后就可以在 菜单栏>工具>开发板>开发板管理器找到Generic ESP8266 Module选中Generic ESP8266 Module就可以开始开发了。

C.点灯科技的Arduino库

下载并安装点灯科技的Arduino库:点击下载

Windows:将下载好的blinker库解压到 我的电脑>文档>Arduino>libraries 文件夹中
Mac OS:将下载好的blinker库解压到 文稿>Arduino>libraries 文件夹中

今后用到的库文件都是放在上述目录下。

2.运行条件

该设备要使用天猫精灵控制就必须联网控制,接下来就是几个必要条件:

  1. 有WiFi可以用
  2. 一台不算太过老旧的智能手机
  3. 手机安装点灯科技(blinker)图标是一个蓝色发光二极管
  4. 手机安装天猫精灵APP

首先要在点灯科技APP内创建设备并获取设备的专用密钥,操作过程如图所示
得到设备密钥后先记下来,一会儿有用

然后就是测试一下自己的天猫精灵有没有联网了,确定连上网络之后,就开始敲代码

3.工作代码

由于暂时在实验阶段,工作代码就用来点亮NodeMCU上的LED为目的;对于Arduino的基本操作和NodeMCU的GPIO和AD转换我在之前的文章讲过,下面附上链接
NodeMCU的基础控制(GPIO)
NodeMCU的AD转换
我就直接放代码了:

#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET#include <Blinker.h>char auth[] = "***********";    //填上刚刚记下来的密钥
char ssid[] = "***********"; //填上你家WiFi名字
char pswd[] = "***********"; //填上你家WiFi密码bool oState = false;           //记录状态量void aligeniePowerState(const String & state)    //天猫精灵电源状态函数
{BLINKER_LOG("need set power state: ", state);    //获取电源状态if (state == BLINKER_CMD_ON)          //状态为开{         digitalWrite(LED_BUILTIN, HIGH);    //状态为开的对应动作BlinkerAliGenie.powerState("on");  //返回开状态BlinkerAliGenie.print();oState = true;}else if (state == BLINKER_CMD_OFF)         //状态为关{ digitalWrite(LED_BUILTIN, LOW);     //状态为关的对应动作BlinkerAliGenie.powerState("off"); //返回关状态BlinkerAliGenie.print();oState = false;}
}void aligenieQuery(int32_t queryCode)      //天猫精灵查询函数
{BLINKER_LOG("AliGenie Query codes: ", queryCode);    //天猫精灵状态查询switch (queryCode){case BLINKER_CMD_QUERY_ALL_NUMBER :BLINKER_LOG("AliGenie Query All");BlinkerAliGenie.powerState(oState ? "on" : "off");BlinkerAliGenie.print();break;case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :BLINKER_LOG("AliGenie Query Power State");BlinkerAliGenie.powerState(oState ? "on" : "off");BlinkerAliGenie.print();break;default :BlinkerAliGenie.powerState(oState ? "on" : "off");BlinkerAliGenie.print();break;}
}void dataRead(const String & data) //点灯科技的数据读取
{BLINKER_LOG("Blinker readString: ", data);Blinker.vibrate();uint32_t BlinkerTime = millis();Blinker.print(BlinkerTime);Blinker.print("millis", BlinkerTime);
}void setup()   //初始化设备
{Serial.begin(115200);      //初始化串口#if defined(BLINKER_PRINT)BLINKER_DEBUG.stream(BLINKER_PRINT);#endifpinMode(LED_BUILTIN, OUTPUT);    //LED设定为输出模式digitalWrite(LED_BUILTIN, LOW);     //LED低电平Blinker.begin(auth, ssid, pswd);    //连接网络并接入物联网平台Blinker.attachData(dataRead); BlinkerAliGenie.attachPowerState(aligeniePowerState);   //启动天猫精灵电源状态函数BlinkerAliGenie.attachQuery(aligenieQuery);               //启动天猫精灵查询函数
}void loop()        //进入主循环
{Blinker.run();     //Blinker状态运行
}

将上述代码复制到Arduino IDE的编辑界面,并连接好NodeMCU和电脑后点击工具–>串口–>选择NodeMCU对应的串口,点击Arduino IDE的编辑界面左上角的右箭头,直接编译下载程序到NodeMCU上,等待下载完毕。

在这个时候就可以打开天猫精灵APP,在天猫精灵中绑定自己的Blinker账号,刚刚下了点灯科技的肯定一个都有吧,绑定方式是点击天猫精灵app右下角的我家–>添加设备–>搜索栏搜索blinker–>选择中心的插座图标就会跳出你刚刚在blinker创建的设备,点击同步设备即可,流程如下:

如果NodeMCU没有上线的话是看不到第五步的内容哦,看不到就要检查网络状态。
之后在天猫精灵APP内修改设备名称就可以叫天猫精灵打开或者关闭设备了,具体操作示例在天猫精灵app里点击需要控制的设备后下方会有相应操作。

搞定上面的问题,如果可以用过天猫精灵把NodeMCU上的灯叫亮之后基本就没有什么问题了,下面我放上我的多个插座的代码,祝大家玩的愉快!!!

#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_MULTI_OUTLET#include <Blinker.h>BlinkerButton Button1("btn-lt1");     //设置blinkerapp内数据键名
BlinkerButton Button2("btn-lt2");   //这里只用了其中三个
BlinkerButton Button3("btn-lt3");
BlinkerButton Button4("btn-lt4");
BlinkerText Text1("text_1");char i;char auth[] = "***********";    //填上刚刚记下来的密钥
char ssid[] = "***********"; //填上你家WiFi名字
char pswd[] = "***********"; //填上你家WiFi密码bool oState[5] = { false };void aligeniePowerState(const String & state, uint8_t num)
{BLINKER_LOG("need set outlet: ", num, ", power state: ", state);if(num == 1){i=0;          //指定每一路开关对应在开发板上的通道接口}else if(num == 2){i=2;}else if(num == 3){i=4;}else if(num == 4){i=5;}if (state == BLINKER_CMD_ON) {digitalWrite(i, HIGH);Blinker.delay(200);digitalWrite(i, LOW);BlinkerAliGenie.powerState("on",num);BlinkerAliGenie.print();oState[num] = true;}else if (state == BLINKER_CMD_OFF) {digitalWrite(i, HIGH);Blinker.delay(200);digitalWrite(i, LOW);BlinkerAliGenie.powerState("off",num);BlinkerAliGenie.print();oState[num] = false;if (num == 0){for (uint8_t o_num = 0; o_num < 5; o_num++){oState[o_num] = false;}}  }
}void aligenieQuery(int32_t queryCode, uint8_t num)
{BLINKER_LOG("AliGenie Query outlet: ", num,", codes: ", queryCode);switch (queryCode){case BLINKER_CMD_QUERY_ALL_NUMBER :BLINKER_LOG("AliGenie Query All");BlinkerAliGenie.powerState(oState[num] ? "on" : "off",num);BlinkerAliGenie.print();break;case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :BLINKER_LOG("AliGenie Query Power State");BlinkerAliGenie.powerState(oState[num] ? "on" : "off",num);BlinkerAliGenie.print();break;default :BlinkerAliGenie.powerState(oState[num] ? "on" : "off",num);BlinkerAliGenie.print();break;}
}void dataRead(const String & data)
{BLINKER_LOG("Blinker readString: ", data);Blinker.vibrate();uint32_t BlinkerTime = millis();Blinker.print(BlinkerTime);Blinker.print("millis", BlinkerTime);
}void button1_callback(const String & state)     //点灯app内控制按键触发
{BLINKER_LOG("get button state: ", state);digitalWrite(0, HIGH);Blinker.delay(200);digitalWrite(0, LOW);Blinker.print("灯具操作已处理");Text1.print("shuju");}void button2_callback(const String & state)     //点灯app内控制按键触发
{BLINKER_LOG("get button state: ", state);digitalWrite(2, HIGH);Blinker.delay(400);Blinker.print("灯具操作已处理");digitalWrite(2, LOW);
}void button3_callback(const String & state)     //点灯app内控制按键触发
{BLINKER_LOG("get button state: ", state);digitalWrite(4, HIGH);Blinker.delay(300);Blinker.print("灯具操作已处理");digitalWrite(4, LOW);
}void button4_callback(const String & state)     //点灯app内控制按键触发
{BLINKER_LOG("get button state: ", state);digitalWrite(5, HIGH);Blinker.delay(300);Blinker.print("灯具操作已处理");digitalWrite(5, LOW);
}void setup()
{Serial.begin(115200);#if defined(BLINKER_PRINT)BLINKER_DEBUG.stream(BLINKER_PRINT);#endifpinMode(0, OUTPUT);digitalWrite(0, LOW);pinMode(2, OUTPUT);digitalWrite(2, LOW);pinMode(4, OUTPUT);digitalWrite(4, LOW);pinMode(5, OUTPUT);digitalWrite(5, LOW);pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, LOW);Blinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);BlinkerAliGenie.attachPowerState(aligeniePowerState);BlinkerAliGenie.attachQuery(aligenieQuery);Button1.attach(button1_callback); Button2.attach(button2_callback); Button3.attach(button3_callback);Button4.attach(button4_callback);
}void loop()
{Blinker.run();
}

注意填自己的设备信息,不然控不住哦!

NodeMCU连接天猫精灵第二集——开发环境、运行条件、工作代码(基于Blinker点灯科技)相关推荐

  1. NodeMCU连接天猫精灵第一集——硬件构架(基于Blinker点灯科技)

    前段时间搞物联网,学习了一些相关知识,发现ESP8266的确好用,在前几篇文章中已经大概介绍过NodeMCU和ESP8266的关系了,所以现在步入正题,学习NodeMCU接入天猫精灵,其实这是一个点灯 ...

  2. TB-02_Kit 开发板连接天猫精灵

    TB-02_Kit 开发板简介 Tb-02_Kit是安信可设计的一款蓝牙开发板,支持二次开发,串口烧录.除了基础蓝牙功能外,还支持BLE Mesh,可连接天猫精灵. 安信可串口烧录工具 TBXX_Fl ...

  3. 名派照明连接天猫精灵_统一的动态精灵照明

    名派照明连接天猫精灵 Sprites in Daedalus make use of Unity's lighting system to appear with 3D-like properties ...

  4. 【TB-02 Kit 蓝牙Mesh连接天猫精灵】 --AT固件适配任意设备(风扇空调饮水机)

    摘要 这篇文章主要介绍了如何使用天猫精灵AT固件对接天猫精灵音箱,包括如何烧录三元组,解析串口数据,上报状态,解除绑定,与手机通信等等.硬件主要基于安信可TB-02 Kit开发板,采用的是泰凌微(Te ...

  5. stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备

    stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备 博主还是菜鸟,只是这段时间DIY弄了这些东西,让同样喜欢动手的朋友有个参考,我这个开发超级简单, ...

  6. 人称小HomeKit的智汀,如何连接天猫精灵音箱?

    如何连接天猫精灵 1.在智汀家庭云APP内完成产品联网配置 根据APP内引导完成设备联网配置 2.配置天猫精灵 (如果您已经配置好了天猫精灵,您可以跳过这一步) ① 下载并安装天猫精灵APP. ② 注 ...

  7. 连接手表_FERACE手表新玩法:连接天猫精灵

    天猫精灵! "懒鬼!该动动啦" FERACE手表只是适用于"抛开手机去运动"? 那怎么能成? 我们和大家一起不断探索新的玩法! FERACE飞锐思 连接天猫精灵 ...

  8. python集成开发环境运行快捷键_Python初学者选择集成开发环境必看 python开发

    编程语言在进行编程时,都需要借助一定的集成开发环境和代码编辑器,Python编程亦如此,以下是在Python初学者在选择Python编辑器时,可以从以下几个方面着手: 1. 保存和重载代码文件 如果一 ...

  9. 四,产品创建和开发板连接天猫精灵后台

    一,WiFi设备接入天猫精灵 https://living.aliyun.com/建议使用Chrome浏览器 接入流程: 产品的product secret: 手机下载天猫精灵app,扫码配网. 测试 ...

最新文章

  1. Web.py Cookbook 简体中文版 - Hello World!
  2. Linux编程获取网络信息总结
  3. HTTP 返回状态消息讲解
  4. WinPcap过滤串表达式的语法
  5. 什么是“GB/T ”? 计算机术语你又知道多少? 想不想别人听不懂的语言搞定别人!...
  6. 编写Play 2的模块,第2部分:拦截器
  7. 该文件没有与之关联的程序来执行该操作_Liunx tty子系统分析之三 tty字符设备文件操作接口说明...
  8. pyqt 取鼠标处文字_顶级玩家首选 赛睿QcK Edge鼠标垫体验评测
  9. npm、webpack、vue-cli
  10. 结合使用 Hadoop 和 Couchbase
  11. 网络管理与维护作业7
  12. 程序员需知的 58 个网站!个个经典
  13. android 如何启动nfc卡模拟模式_用手机模拟小区业主卡,出入更加便捷,免去带卡的烦恼,(限安卓)...
  14. Eclipse 2021-09最新版安装图文教程(详细包会)
  15. java计算机毕业设计HTML5旅游网站源码+mysql数据库+系统+lw文档+部署
  16. SwiftUI教程第1章第13节:Divider
  17. 【1、雅思听力】B站听力中每单元的生词
  18. 8道C语言笔试题及答案(2022发布)
  19. ZYNQ中的AXI总线时序详解
  20. TimesTen 应用层数据库缓存学习:12. 管理缓存环境

热门文章

  1. 高焕堂《嵌入式UML设计》读书笔记_第三章
  2. OpenHarmony适配移植:X86、ARM、RISC-V、MIPS、LoongArch芯片架构简析
  3. 密码泛在化实践者之路
  4. 公钥私钥 多久过期_公钥和私钥的解释
  5. 超详细拆机攻略之联想IdeaPad310S-14ISK
  6. Linux下的Makefile规则(隐式规则和模式规则)
  7. 计算机网络/通信 常用词和基本常识!(很有用的东西哦~~)
  8. 谷歌earth下载_Google Earth闪闪发光,亚马逊街也闪闪发光
  9. 如何使用SQL Server 2014 创建数据库
  10. 建荣Ax3268工作简记