/* *****************************************************************
* 程序功能:
* 1.使用开发板:nodemcu-ESP8266(模块ESP-12E)
* 2.程序功能:程序功能:使用Blinker 手机APP添加设备并绑定,通过APP远程控制开发板上的灯的亮灭、还有小爱同学控制开发板上的灯的亮灭
* 3.例程文档:https://www.diandeng.tech/doc/xiaoai
*
小爱支持的语音指令:
1.灯
打开/关闭{门口}的{灯}
把{卧室}的{灯}调为{红色}
颜色范围为0-16777215(0xFFFFFF)
把{卧室}的{灯}的{亮度调高一点}
亮度范围为1-100
把{门口}的{灯}的{色温}调到{1400}
色温范围为1000-10000
把{卧室}的{灯}调为{月光模式}
查询{卧室}的{灯}的状态
2.插座
打开/关闭{厨房}的{插座}
{客厅}的{插座}是否打开
3.传感器
{设备名}室内{温度}/{湿度}/{PM2.5}/{空气质量}/{二氧化碳含量}
* *****************************************************************/
//#define LED_BUILTIN 2 //ESP-12E模块自身的LED,对应GPIO2,低电平亮
//#define LED_BUILTIN 16 //nodemcu-esp8266开发板扩展的LED,对应GPIO16,低电平亮
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT //小爱同学支持LED灯控制
#define BLINKER_WITHOUT_SSL //blinker默认使用加密方式进行远程通信,但通信加密会消耗大量的RAM,如果您对通信安全性无要求,
//可以添加宏BLINKER_WITHOUT_SSL用以获得更多可用RAM,BLINKER_WITHOUT_SSL目前仅可用于ESP8266,其他设备的RAM足以进行加密通信
#include //使用第三方库
char auth[] = "aabfdfc3b167";//Blinker APP中获取到的Secret Key(密钥),小爱同学接入,需要选择阿里云broker,点灯broker暂不支持语音控制
char ssid[] = "Xiaomi_123"; //wifi名称
char pswd[] = "felix1234"; //wifi密码
// 新建组件对象
BlinkerButton Button1("btn-abc");//组件对象,要和APP组件中的“数据键名”一致
BlinkerNumber Number1("num-abc");
int counter = 0;//计数器
uint8_t colorR, colorG, colorB, colorW;
// 按下按键即会执行该函数
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);//APP中的Monitor控件打印的信息
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//控制LED灯亮灭,低电平亮,高电平灭
}
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
counter++;//未绑定的组件被触发,就会进行计数
Number1.print(counter);
}
//得到当前的颜色值
uint32_t getColor()
{
uint32_t color = colorR << 16 | colorG << 8 | colorB;
return color;
}
//小爱电源类回调,例如:开灯/关灯
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);//低电平打开LED
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);//高电平关闭LED
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
//小爱设置颜色回调,例如:红色/绿色/蓝色
void miotColor(int32_t color)
{
BLINKER_LOG("need set color: ", color);
colorR = color >> 16 & 0xFF;
colorG = color >> 8 & 0xFF;
colorB = color & 0xFF;
BLINKER_LOG("colorR: ", colorR, ", colorG: ", colorG, ", colorB: ", colorB);
BlinkerMIOT.color(color);
BlinkerMIOT.print();
}
//小爱调亮度回调,例如:调亮一些
void miotBright(const String & bright)
{
BLINKER_LOG("need set brightness: ", bright);
colorW = bright.toInt();
BLINKER_LOG("now set brightness: ", colorW);
BlinkerMIOT.brightness(colorW);
BlinkerMIOT.print();
}
//小爱调色温回调,例如:色温调到1400
void miotColoTemp(int32_t colorTemp)
{
BLINKER_LOG("need set colorTemperature: ", colorTemp);
BlinkerMIOT.colorTemp(colorTemp);
BlinkerMIOT.print();
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);//设置引脚为输出模式
digitalWrite(LED_BUILTIN, LOW);//默认打开LED
// 初始化blinker
Blinker.begin(auth, ssid, pswd);//连接WiFi和设备上线
Blinker.attachData(dataRead);//如果没有被绑定的组件被触发就执行这个回调
Button1.attach(button1_callback);//绑定按键
//小爱同学注册回调
BlinkerMIOT.attachPowerState(miotPowerState);//注册小爱电源回调
BlinkerMIOT.attachColor(miotColor);//注册小爱颜色回调
BlinkerMIOT.attachBrightness(miotBright);//注册小爱亮度回调
BlinkerMIOT.attachColorTemperature(miotColoTemp);//注册小爱色温回调
}
void loop()
{
Blinker.run();
}
1)下载APP并进行安装,打开网址https://www.diandeng.tech/doc/getting-start-8266,找到“下载并安装blinker APP“,根据不同的手机平台,下载对应的APP并进行安装。
2)进入App,点击右上角的“+”号,然后选择 添加设备。
3)点击选择Arduino(独立设备)-> WiFi接入。
4)选择要接入的服务商(阿里云、点灯科技、腾讯云、OneNet),例如选择”点灯科技“,如果要接入小爱同学,则要选择”阿里云“。
5)复制申请到的Secret Key到代码中要填写密钥的一栏中。
修改密钥、wifi名称、wifi密码为自己的。
注意:小爱同学接入,需要选择阿里云broker,点灯broker暂不支持语音控制。
char auth[] = "Your Device Secret Key";//Blinker APP中获取到的Secret Key(密钥)
char ssid[] = "Your WiFi network SSID or name";//wifi名称
char pswd[] = "Your WiFi network WPA password or WEP key";//wifi密码
下载成功后,可以看到开发板上的LED亮了起来,打开VSCODE的串口监视器可以看到打印一些信息,当看到“MQTT Connected!”则证明连接wifi是成功的,当看到"state":"online"则证明设备是在线的。
VSCODE串口监视器打印的信息:
......
[32881] MQTT Connected! //连接wifi成功
[32881] Freeheap: 39456
[48020] Got: {"deviceType":"DiyArduino","data":{"get":"state"},"fromDevice":"eeb71ff85f1d11eb81be5254","toDevice":"C133A71AZPR087CQTZ5FFRXR"}
[48022] data: {"get":"state"}
[48024] fromDevice: eeb71ff85f1d11eb81be5254
[48028] Authority uuid
[48051] available: 1
[48051] checkAvail: 1
[48051] parse data: {"get":"state"}
[48051] defined BLINKER_ARDUINOJSON
[48052] autoManager begin: 0 0
[48053] autoFormatData key: state, json: "state":"online" //设备在线
1)打开”点灯-blinker”APP。
2)在设备列表页,点击设备图标,例如我的设备是:“房间1号”,点击后进入设备控制面板。
3)点击“点我开关灯”,则看到开发板上的LED灯会进行亮和灭的切换。
4)由于“点我计数”在代码未进行绑定,所以会触发dataRead()函数。
1)下载米家APP并打开。通过 我的>其他平台设备>点击添加>点灯科技>绑定账号 ,绑定blinker账号。
2)绑定成功后,支持小爱控制的blinker设备会出现在 我的>其他平台设备>点灯科技 设备列表中。
3)如果设备列表中没有设备,则需要点击“同步设备”。
4)返回到米家APP首页,在首页有一个“语音图标”,点击“语音图标”,说:“关闭房间一号的灯”,则会看到开发板上的LE灯关闭,接着说“打开房间一号的灯”,则会看到LED灯打开。
注意事项:
1)如果绑定blinker账号后,点灯科技列表中没有设备,可能是您设备中没有烧写小爱支持程序,或者设备没有成功上线。
2)绑定blinker账号后,通过手机上的小爱同学也可以控制设备。
3)blinker App中对设备进行修改或新增后,可在米家App中,通过 我的>其他平台设备>点灯科技>同步设备 更新设备信息。
参考文档:
点灯科技:https://www.diandeng.tech/doc/xiaoai
参考例程:
点灯科技blinker库:blinker-library-master\examples\Blinker_MIOT\MIOT_LIGHT