IOT踩坑路(一)基于Blinker和ESP8266的小爱同学控制灯
在家呆的实在无聊,捣鼓小爱同学打发时间,想试试智能家居的功能,苦于没有智能设备,正好手头有一个WiFi模块,灵感乍现,何不自己DIY一个智能设备呢,一番痛彻心扉的踩坑路由此开始
一、准备材料
- Esp8266WiFi模块
- 带小爱同学的智能设备
- USB转TTL串口模块
- 手机一部(下载米家APP、BlinkerAPP)
二、小爱同学官方开发文档
小爱同学暂不开放个人开发者接口,但是可以基于第三方云服务连接小米云
经过一番人肉对比,最终锁定Blinker物联网平台,最简单,最易入门(官方如是说)
- 小爱开放平台:https://xiaoai.mi.com/documents/Home?type=/api/doc/render_markdown/SkillAccess/SKDes/Qualification
- 小米iot开发者平台:https://iot.mi.com/new/index.html
三、Blinker开放平台
1.Blinker官网
是很简洁,但有一种速成鸡的味道,不管了,好用就行
2.开发环境搭建一波
- 下载安装arduino IDE开发环境
下载地址:https://share.weiyun.com/5aNlfTg
这里有大坑(坑了我足足3天,成功把官方介绍的3分钟搭建智能设备拖成了3天):arduino2/bin/avr-g++: no such file or directory这个BUG,更改环境变量(劳动人民的血和泪啊~)
- 下载打包的esp8266安装包,直接运行并解压即可
下载地址:https://pan.baidu.com/s/19yEQ4UDF-bQCzt3BsdV6Yw
https://share.weiyun.com/5CGEKJO - 下载Blinker库
下载地址:https://github.com/blinker-iot/blinker-library/archive/master.zip
把zip解压到E:\XXOO\XXOO\arduino-1.8.8-windows\arduino-1.8.8\libraries中
- 下载安装Blinker APP
Android:http://cdn.diandeng.tech/blinker-2.3.1-release.apk
IOS:https://apps.apple.com/cn/app/id1498805902
3.使用esp8266 & WiFi接入
-
在blinker中获取设备Secret Key
-
选择ESP8266
-
给ATK-ESP8266烧录固件程序,通过blinker控制板载led
用杜邦线连接USB转TTL串口模块和ATK-ESP8266模块:
线接好后就可以接上PC,回到IDE,打开【文件】–>【示例】–>【Blinker】–>【Blinker_Hello】–>【Hello_WiFi】找到,改成自己的
char auth[] = “abcdefghijkl”; //在前面步骤中在blinker app中获取到的Secret Key
char ssid[] = “abcdefg”; //你的WiFi热点名称
char pswd[] = “123456789”; //你的WiFi密码
待程序上传完成后,拔掉wifi模块IO_0上的线,让其悬空,并重启WiFi模块
- 打开app控制下试试
四、小爱同学接入
1.米家绑定Blinker
打开米家,我的 里面找到第三方设备,找到点灯科技,绑定账号
2.服务接口烧入固件
打开Hello_wifi文件
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT //添加这一行,就能支持小爱控制
#include <Blinker.h>
//setup()函数中
...
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
BlinkerMIOT.attachPowerState(miotPowerState); //添加这一行,作用是注册下面的回调函数
Button1.attach(button1_callback);
...
//setup()函数前添加如下代码
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
修改完成后,重新烧录程序,重启WiFi模块后,再在小爱音箱或者米家中添加设备,就能在小爱音箱的智能家居列表中看到我们diy的设备