Blinker天猫精灵接入流程
设备上线
authKey对应的设备若需要更换接入的设备类型,重新设置设备类型并下载代码。
代码下载后在天猫精灵App中解除blinker账号绑定,重新绑定后即可更新设备类型。
绑定天猫精灵
其他说明
1.如果绑定blinker账号后,天猫精灵App中没有出现对应设备,可能是您设备中没有烧写天猫精灵支持程序,或者设备没有成功上线。
教程
示例开发教程
示例程序
Arduino(esp8266/esp32):
GITHUB
NodeJs/TypeScript:
GITHUB
Blinker天猫精灵接口函数
天猫精灵设备配置
根据您定义的设备品类选择不同的参数用于配置Blinker
light:
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_LIGHT
#include <Blinker.h>
outlet:
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET
#include <Blinker.h>
sensor:
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_SENSOR
#include <Blinker.h>
multi_outlet:
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_MULTI_OUTLET
#include <Blinker.h>
同步设备后可显示一个插座和四个插孔(名为插孔的插座设备)
fan:
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_FAN
#include <Blinker.h>
aircondition:
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_AIRCONDITION
#include <Blinker.h>
设备设置后即可使用 天猫精灵 BlinkerAliGenie
天猫精灵数据管理
智能音箱接口, 反馈数据到天猫精灵
任何控制务必即时反馈
超时2s以上再反馈,天猫精灵就默认设备不在线,天猫精灵会反馈“智能家居控制出了点问题”
函数 :
天猫精灵设备支持的控制类型
天猫精灵电源类的操作接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachPowerState()
用户自定义电源类操作的回调函数:
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();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerAliGenie.powerState("off");
BlinkerAliGenie.print();
}
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachPowerState(aligeniePowerState);
天猫精灵颜色的设置接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachColor()
用户自定义颜色设置的回调函数:
void aligenieColor(const String & color)
{
BLINKER_LOG("need set color: ", color);
if (color == "Red") {
colorR = 255; colorG = 0; colorB = 0;
}
else if (color == "Yellow") {
colorR = 255; colorG = 255; colorB = 0;
}
else if (color == "Blue") {
colorR = 0; colorG = 0; colorB = 255;
}
else if (color == "Green") {
colorR = 0; colorG = 255; colorB = 0;
}
else if (color == "White") {
colorR = 255; colorG = 255; colorB = 255;
}
else if (color == "Black") {
colorR = 0; colorG = 0; colorB = 0;
}
else if (color == "Cyan") {
colorR = 0; colorG = 255; colorB = 255;
}
else if (color == "Purple") {
colorR = 128; colorG = 0; colorB = 128;
}
else if (color == "Orange") {
colorR = 255; colorG = 165; colorB = 0;
}
BlinkerAliGenie.color(color);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
详见文档末尾
天猫精灵支持控制的颜色表
详见文档末尾
天猫精灵支持查询的颜色表
注册回调函数:
BlinkerAliGenie.attachColor(aligenieColor);
天猫精灵模式的设置接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachMode()
用户自定义模式设置的回调函数:
void aligenieMode(const String & mode)
{
BLINKER_LOG("need set mode: ", mode);
if (mode == BLINKER_CMD_READING) {
// Your mode function
}
else if (mode == BLINKER_CMD_MOVIE) {
// Your mode function
}
else if (mode == BLINKER_CMD_SLEEP) {
// Your mode function
}
else if (mode == BLINKER_CMD_HOLIDAY) {
// Your mode function
}
else if (mode == BLINKER_CMD_MUSIC) {
// Your mode function
}
else if (mode == BLINKER_CMD_COMMON) {
// Your mode function
}
wsMode = mode;
BlinkerAliGenie.mode(mode);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
详见文档末尾
天猫精灵支持控制的模式表
注册回调函数:
BlinkerAliGenie.attachMode(aligenieMode);
BlinkerAliGenie.attachCancelMode()
用户自定义取消模式设置的回调函数:
void aligeniecMode(const String & cmode)
{
BLINKER_LOG("need cancel mode: ", cmode);
if (cmode == BLINKER_CMD_READING) {
// Your mode function
}
else if (cmode == BLINKER_CMD_MOVIE) {
// Your mode function
}
else if (cmode == BLINKER_CMD_SLEEP) {
// Your mode function
}
else if (cmode == BLINKER_CMD_HOLIDAY) {
// Your mode function
}
else if (cmode == BLINKER_CMD_MUSIC) {
// Your mode function
}
else if (cmode == BLINKER_CMD_COMMON) {
// Your mode function
}
wsMode = BLINKER_CMD_COMMON; // new mode
BlinkerAliGenie.mode(wsMode); // must response
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
详见文档末尾
天猫精灵支持控制的模式表
注册回调函数:
BlinkerAliGenie.attachCancelMode(aligeniecMode);
天猫精灵亮度的控制接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachBrightness()
用户自定义亮度控制的回调函数:
void aligenieBright(const String & bright)
{
BLINKER_LOG("need set brightness: ", bright);
if (bright == BLINKER_CMD_MAX) {
colorW = 255;
}
else if (bright == BLINKER_CMD_MIN) {
colorW = 0;
}
else {
colorW = bright.toInt();
}
BLINKER_LOG("now set brightness: ", colorW);
BlinkerAliGenie.brightness(colorW);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachBrightness(aligenieBright);
BlinkerAliGenie.attachRelativeBrightness()
用户步长设置亮度的回调函数:
void aligenieRelativeBright(int32_t bright)
{
BLINKER_LOG("need set relative brightness: ", bright);
colorW += bright;
BlinkerAliGenie.brightness(bright);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachRelativeBrightness(aligenieRelativeBright);
天猫精灵色温的控制接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachColorTemperature()
用户自定义色温控制的回调函数:
void aligenieColoTemp(int32_t colorTemp)
{
BLINKER_LOG("need set colorTemperature: ", colorTemp);
colorT = colorTemp;
BlinkerAliGenie.colorTemp(colorTemp);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachColorTemperature(aligenieColoTemp);
BlinkerAliGenie.attachRelativeColorTemperature()
用户步长设置亮度的回调函数:
void aligenieRelativeColoTemp(int32_t colorTemp)
{
BLINKER_LOG("need set relative colorTemperature: ", colorTemp);
colorT += colorTemp;
BlinkerAliGenie.colorTemp(colorTemp);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachRelativeColorTemperature(aligenieRelativeColoTemp);
天猫精灵风速/挡位的控制接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachLevel()
用户设置风速/挡位控制的回调函数: 风扇/空调:
void aligenieLevel(uint8_t level)
{
BLINKER_LOG("need set level: ", level);
// 0:AUTO MODE, 1-3 LEVEL
setLevel = level;
BlinkerAliGenie.level(level);
BlinkerAliGenie.print();
}
空调:
void aligenieLevel(const String & level)
{
BLINKER_LOG("need set level: ", level);
// auto 自动风
// low 低风
// medium 中风
// high 高风
setLevel = level;
BlinkerAliGenie.level(level);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachLevel(aligenieLevel);
BlinkerAliGenie.attachRelativeLevel()
用户步长设置风速/挡位控制的回调函数: 风扇:
void aligenieRelativeLevel(int32_t level)
{
BLINKER_LOG("need set relative level: ", level);
setLevel += level;
BlinkerAliGenie.level(setLevel);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachRelativeLevel(aligenieRelativeLevel);
天猫精灵上下/左右摆风的控制接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachHSwing()
用户设置风扇/空调左右摆风的回调函数:
void aligenieHSwingState(const String & state)
{
BLINKER_LOG("need set HSwing state: ", state);
// horizontal-swing
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerAliGenie.hswing("on");
BlinkerAliGenie.print();
hsState = true;
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerAliGenie.hswing("off");
BlinkerAliGenie.print();
hsState = false;
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachHSwing(aligenieHSwingState);
BlinkerAliGenie.attachVSwing()
用户设置风扇/空调上下摆风的回调函数:
void aligenieVSwingState(const String & state)
{
BLINKER_LOG("need set VSwing state: ", state);
// vertical-swing
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerAliGenie.vswing("on");
BlinkerAliGenie.print();
vsState = true;
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerAliGenie.vswing("off");
BlinkerAliGenie.print();
vsState = false;
}
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachVSwing(aligenieVSwingState);
天猫精灵温度的控制接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachTemp()
用户设置空调温度控制的回调函数:
voidaligenieTemp(uint8_t temp){BLINKER_LOG("need set temp: ", temp);
setTemp = temp;
BlinkerAliGenie.temp(temp);
BlinkerAliGenie.print();}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachTemp(aligenieTemp);
BlinkerAliGenie.attachRelativeTemp()
用户步长设置空调温度控制的回调函数:
void aligenieRelativeTemp(int32_t relTemp)
{
BLINKER_LOG("need set temp: ", relTemp);
setTemp = setTemp + relTemp;
BlinkerAliGenie.temp(setTemp);
BlinkerAliGenie.print();
}
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachRelativeTemp(aligenieRelativeTemp);
天猫精灵设备查询接口
当天猫精灵向设备发起控制, 设备端需要有对应控制处理函数
BlinkerAliGenie.attachQuery()
用户自定义设备查询的回调函数:
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(wsState ? "on" : "off");
BlinkerAliGenie.color(getColor());
BlinkerAliGenie.colorTemp(colorT);
BlinkerAliGenie.brightness(colorW);
BlinkerAliGenie.print();
break;
case BLINKER_CMD_POWERSTATE_NUMBER :
BLINKER_LOG("AliGenie Query Power State");
BlinkerAliGenie.powerState(wsState ? "on" : "off");
BlinkerAliGenie.print();
break;
case BLINKER_CMD_COLOR_NUMBER :
BLINKER_LOG("AliGenie Query Color");
BlinkerAliGenie.color(getColor());
BlinkerAliGenie.print();
break;
case BLINKER_CMD_QUERY_MODE_NUMBER :
BLINKER_LOG("AliGenie Query Mode");
BlinkerAliGenie.mode(wsMode);
BlinkerAliGenie.print();
break;
case BLINKER_CMD_COLORTEMP_NUMBER :
BLINKER_LOG("AliGenie Query ColorTemperature");
BlinkerAliGenie.colorTemp(colorT);
BlinkerAliGenie.print();
break;
case BLINKER_CMD_BRIGHTNESS_NUMBER :
BLINKER_LOG("AliGenie Query Brightness");
BlinkerAliGenie.brightness(colorW);
BlinkerAliGenie.print();
break;
default :
break;
}
}
支持查询的状态码:
务必在回调函数中反馈该控制状态
注册回调函数:
BlinkerAliGenie.attachQuery(aligenieQuery);
天猫精灵支持的语音指令
天猫精灵支持控制的颜色表
颜色 | 中文描述 |
Red | 红色 |
Yellow | 黄色 |
Blue | 蓝色 |
Green | 绿色 |
White | 白色 |
Black | 黑色 |
Cyan | 青色 |
Purple | 紫色 |
Orange | 橙色 |
天猫精灵支持查询的颜色表
(支持控制的颜色也可以查询)
颜色 | 中文描述 |
Pink | 粉红 |
Violet | 紫罗兰 |
Magenta | 洋红 |
Indigo | 靛青 |
SlateBlue | 蓝灰色 |
DarkBlue | 深蓝色 |
SkyBlue | 天蓝色 |
DarkCyan | 深青色 |
Beige | 浅褐色 |
Brown | 棕色 |
天猫精灵支持控制的模式表
模式 | 中文描述 |
reading | 阅读 |
movie | 影院 |
sleep | 睡眠 |
holiday | 假日 |
music | 音乐 |
common | 普通 |
auto | 自动 |
cold | 制冷 |
heat | 制热 |
ventilate | 通风 |
airsupply | 送风 |
dehumidification | 除湿 |
normalWind | 正常风模式 |
natureWind | 自然风模式 |
sleepWind | 睡眠风模式 |
quietWind | 静音风模式 |
comfortableWind | 舒适风模式 |
babyWind | 宝宝风模式 |