查看: 250|回复: 0

[求助] 请教同时接入小爱小度天猫精灵的问题

[复制链接]
  • TA的每日心情
    开心
    2020-7-20 14:58
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-7-14 18:47 | 显示全部楼层 |阅读模式
    新人请教,同时接入小爱、小度、天猫精灵,请帮忙看看代码是否存在问题

    1. #define BLINKER_WIFI
    2. #define BLINKER_MIOT_OUTLET
    3. #define BLINKER_DUEROS_OUTLET
    4. #define BLINKER_ALIGENIE_OUTLET

    5. #include <Blinker.h>

    6. char auth[] = "4c55****e9**"; // Blinker APP中添加设备时生成的Secret Key
    7. char ssid[] = "tymishop"; // WIFI名称
    8. char pswd[] = "155*****425"; // WIFI密码

    9. const int GPIO = D1; // 定义继电器输入引脚为GPIO5

    10. #define BUTTON_1 "btn-abc"
    11. // 新建组件对象
    12. BlinkerButton Button1(BUTTON_1);

    13. bool oState = false;

    14. // 按下按键即会执行该函数
    15. void button1_callback(const String & state)
    16. {
    17.     BLINKER_LOG("get button state: ", state);
    18.     if (state == BLINKER_CMD_ON) {
    19.         BLINKER_LOG("Toggle on!");

    20.         Button1.icon("fal fa-light-switch-on");
    21.         Button1.color("#0000FF");
    22.         Button1.text("ON");
    23.         Button1.print("on");

    24.         oState = true;
    25.     } else if(state == BLINKER_CMD_OFF) {
    26.         BLINKER_LOG("Toggle off!");

    27.         Button1.icon("fal fa-light-switch-off");
    28.         Button1.color("#FF0000");
    29.         Button1.text("OFF");
    30.         Button1.print("off");

    31.         oState = false;
    32.     }
    33.    
    34.     BlinkerMIOT.powerState(oState ? "on" : "off");
    35.     BlinkerMIOT.print();
    36.     BlinkerDuerOS.powerState(oState ? "on" : "off");
    37.     BlinkerDuerOS.report();
    38.     BlinkerAliGenie.powerState(oState ? "on" : "off");
    39.     BlinkerAliGenie.print();

    40.     digitalWrite(LED_BUILTIN, oState);
    41.     digitalWrite(GPIO, oState);
    42. }

    43. // 小爱电源类的操作接口
    44. // 用户自定义电源类操作的回调函数
    45. void miotPowerState(const String & state)
    46. {
    47.     BLINKER_LOG("need set power state: ", state);

    48.     if (state == BLINKER_CMD_ON) {
    49.         digitalWrite(LED_BUILTIN, HIGH);
    50.         digitalWrite(GPIO, LOW);

    51.         BlinkerMIOT.powerState("on");
    52.         BlinkerMIOT.print();

    53.         oState = true;
    54.     }
    55.     else if (state == BLINKER_CMD_OFF) {
    56.         digitalWrite(LED_BUILTIN, LOW);
    57.         digitalWrite(GPIO, HIGH);

    58.         BlinkerMIOT.powerState("off");
    59.         BlinkerMIOT.print();

    60.         oState = false;
    61.     }
    62. }

    63. // 小爱设备查询接口
    64. // 用户自定义设备查询的回调函数
    65. void miotQuery(int32_t queryCode)
    66. {
    67.     BLINKER_LOG("MIOT Query codes: ", queryCode);

    68.     switch (queryCode)
    69.     {
    70.         case BLINKER_CMD_QUERY_ALL_NUMBER :
    71.             BLINKER_LOG("MIOT Query All");
    72.             BlinkerMIOT.powerState(oState ? "on" : "off");
    73.             BlinkerMIOT.print();
    74.             break;
    75.         case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
    76.             BLINKER_LOG("MIOT Query Power State");
    77.             BlinkerMIOT.powerState(oState ? "on" : "off");
    78.             BlinkerMIOT.print();
    79.             break;
    80.         default :
    81.             BlinkerMIOT.powerState(oState ? "on" : "off");
    82.             BlinkerMIOT.print();
    83.             break;
    84.     }
    85. }

    86. // 小度电源类的操作接口
    87. // 用户自定义电源类操作的回调函数
    88. void duerPowerState(const String & state)
    89. {
    90.     BLINKER_LOG("need set power state: ", state);

    91.     if (state == BLINKER_CMD_ON) {
    92.         digitalWrite(LED_BUILTIN, HIGH);
    93.         digitalWrite(GPIO, LOW);

    94.         BlinkerDuerOS.powerState("on");
    95.         BlinkerDuerOS.print();

    96.         oState = true;
    97.     }
    98.     else if (state == BLINKER_CMD_OFF) {
    99.         digitalWrite(LED_BUILTIN, LOW);
    100.         digitalWrite(GPIO, LOW);

    101.         BlinkerDuerOS.powerState("off");
    102.         BlinkerDuerOS.print();

    103.         oState = false;
    104.     }
    105. }

    106. // 小度设备查询接口
    107. // 用户自定义设备查询的回调函数
    108. void duerQuery(int32_t queryCode)
    109. {
    110.     BLINKER_LOG("DuerOS Query codes: ", queryCode);

    111.     switch (queryCode)
    112.     {
    113.         case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
    114.             BLINKER_LOG("DuerOS Query power state");
    115.             BlinkerDuerOS.powerState(oState ? "on" : "off");
    116.             BlinkerDuerOS.print();
    117.             break;
    118.         case BLINKER_CMD_QUERY_TIME_NUMBER :
    119.             BLINKER_LOG("DuerOS Query time");
    120.             BlinkerDuerOS.time(millis());
    121.             BlinkerDuerOS.print();
    122.             break;
    123.         default :
    124.             BlinkerDuerOS.powerState(oState ? "on" : "off");
    125.             BlinkerDuerOS.print();
    126.             break;
    127.     }
    128. }

    129. // 天猫精灵电源类的操作接口
    130. // 用户自定义电源类操作的回调函数
    131. void aligeniePowerState(const String & state)
    132. {
    133.     BLINKER_LOG("need set power state: ", state);

    134.     if (state == BLINKER_CMD_ON) {
    135.         digitalWrite(LED_BUILTIN, HIGH);
    136.         digitalWrite(GPIO, LOW);

    137.         BlinkerAliGenie.powerState("on");
    138.         BlinkerAliGenie.print();

    139.         oState = true;
    140.     }
    141.     else if (state == BLINKER_CMD_OFF) {
    142.         digitalWrite(LED_BUILTIN, LOW);
    143.         digitalWrite(GPIO, HIGH);

    144.         BlinkerAliGenie.powerState("off");
    145.         BlinkerAliGenie.print();

    146.         oState = false;
    147.     }
    148. }

    149. // 天猫精灵设备查询接口
    150. // 用户自定义设备查询的回调函数
    151. void aligenieQuery(int32_t queryCode)
    152. {
    153.     BLINKER_LOG("AliGenie Query codes: ", queryCode);

    154.     switch (queryCode)
    155.     {
    156.         case BLINKER_CMD_QUERY_ALL_NUMBER :
    157.             BLINKER_LOG("AliGenie Query All");
    158.             BlinkerAliGenie.powerState(oState ? "on" : "off");
    159.             BlinkerAliGenie.print();
    160.             break;
    161.         case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
    162.             BLINKER_LOG("AliGenie Query Power State");
    163.             BlinkerAliGenie.powerState(oState ? "on" : "off");
    164.             BlinkerAliGenie.print();
    165.             break;
    166.         default :
    167.             BlinkerAliGenie.powerState(oState ? "on" : "off");
    168.             BlinkerAliGenie.print();
    169.             break;
    170.     }
    171. }


    172. // 如果未绑定的组件被触发,则会执行其中内容
    173. void dataRead(const String & data)
    174. {
    175.     BLINKER_LOG("Blinker readString: ", data);

    176.     Blinker.vibrate();

    177.     uint32_t BlinkerTime = millis();

    178.     Blinker.print("millis", BlinkerTime);

    179.     BlinkerDuerOS.powerState("off");
    180.     BlinkerDuerOS.report();
    181. }

    182. void setup()
    183. {
    184.     // 初始化串口
    185.     Serial.begin(115200);
    186.     BLINKER_DEBUG.stream(Serial);
    187.     BLINKER_DEBUG.debugAll();

    188.     // 初始化有LED的IO
    189.     pinMode(LED_BUILTIN, OUTPUT);
    190.     digitalWrite(LED_BUILTIN, LOW);
    191.     pinMode(GPIO, OUTPUT); // 设定GPIO0为输出引脚
    192.     digitalWrite(GPIO, HIGH); // 设定GPIO0为高电位

    193.     // 初始化blinker
    194.     Blinker.begin(auth, ssid, pswd);
    195.     Blinker.attachData(dataRead);

    196.     Button1.attach(button1_callback);

    197.     BlinkerMIOT.attachPowerState(miotPowerState); // 注册小爱电源类操作回调函数
    198.     BlinkerMIOT.attachQuery(miotQuery); // 注册小爱设备查询的回调函数
    199.     BlinkerDuerOS.attachPowerState(duerPowerState); // 注册小度电源类操作回调函数
    200.     BlinkerDuerOS.attachQuery(duerQuery);  // 注册小度设备查询的回调函数
    201.     BlinkerAliGenie.attachPowerState(aligeniePowerState); // 注册天猫精灵电源类操作回调函数
    202.     BlinkerAliGenie.attachQuery(aligenieQuery); // 注册天猫精灵设备查询的回调函数
    203. }

    204. void loop() {
    205.     Blinker.run();
    206. }
    复制代码


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    未见过的TFT屏,是什么驱动芯片?
    未见过的TFT屏,是什么驱
    这两块屏是从POS机里拆的,准备做几个锂电池组电压监测,在网上没找到资料,在这里问
    win10系统显示不出端口信息,编译后显示serial port not selected。
    win10系统显示不出端口信
    求各位哥哥帮忙,小兄弟实在不懂是win10系统的原因,还是需要安装什么驱动程式?具体
    更智能的电脑远程开关机-基于继电器
    更智能的电脑远程开关机-
    我只是刚刚入门的萌新,所以有不足请指出 先展示下 功能:开关机,开关机检测,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表