小度音响控制 提示无法控制,请联系供应商-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 889|回复: 7

[已解答] 小度音响控制 提示无法控制,请联系供应商

[复制链接]
发表于 2022-1-19 22:09 | 显示全部楼层 |阅读模式
本帖最后由 jerryiot 于 2022-1-20 09:38 编辑

小度音响控制 提示无法控制,请联系供应商
blinkerAPP和小米小爱都可以控制。设备中介是点灯
查看往期帖子说 中介要选择 阿里, 但是最新的APP 已经隐藏掉broken选择了,想问下 为啥小度不能控制呢?有没有大佬解决过?


 楼主| 发表于 2022-1-19 22:53 | 显示全部楼层
升级了个最新版本 2.6.0 的APP,现在控制没问题了,也不知道为啥。。。 贴一下代码吧。。
  1. bool oState = false;

  2. // 新建组件对象
  3. BlinkerButton Button1("btn-abc");

  4. void duerPowerState(const String & state)
  5. {
  6.     BLINKER_LOG("need set power state: ", state);

  7.     if (state == BLINKER_CMD_ON) {
  8.         digitalWrite(LED_BUILTIN, HIGH);
  9.         digitalWrite(0, HIGH);
  10.         Button1.color("#708090");
  11.         Button1.text("已关闭");
  12.         Button1.print("off");
  13.         BlinkerDuerOS.powerState("off");
  14.         BlinkerDuerOS.print();
  15.         oState = true;
  16.     }
  17.     else if (state == BLINKER_CMD_OFF) {
  18.         digitalWrite(LED_BUILTIN, LOW);
  19.         digitalWrite(0, LOW);
  20.         Button1.color("#6666ff");
  21.         Button1.text("已开启");
  22.         Button1.print("on");
  23.         BlinkerDuerOS.powerState("on");
  24.         BlinkerDuerOS.print();
  25.         oState = false;
  26.     }
  27. }

  28. void duerQuery(int32_t queryCode)
  29. {
  30.     BLINKER_LOG("DuerOS Query codes: ", queryCode);

  31.     switch (queryCode)
  32.     {
  33.         case BLINKER_CMD_QUERY_POWERSTATE_NUMBER  :
  34.             BLINKER_LOG("DuerOS Query power state");
  35.             BlinkerDuerOS.powerState(oState ? "on" : "off");
  36.             BlinkerDuerOS.print();
  37.             break;
  38.         case BLINKER_CMD_QUERY_TIME_NUMBER  :
  39.             BLINKER_LOG("DuerOS Query time");
  40.             BlinkerDuerOS.time(millis());
  41.             BlinkerDuerOS.print();
  42.             break;
  43.         default :
  44.             BlinkerDuerOS.powerState(oState ? "on" : "off");
  45.             BlinkerDuerOS.print();
  46.             break;
  47.     }
  48. }


  49. // 按下按键即会执行该函数
  50. void button1_callback(const String & state)
  51. {
  52.     //BLINKER_LOG("get button state: ", state);
  53.     Serial.print(state);
  54.     if(state == BLINKER_CMD_ON)
  55.     {
  56.       Serial.print("state ON");
  57.       digitalWrite(LED_BUILTIN, HIGH);
  58.       digitalWrite(0, LOW);
  59.       Button1.color("#6666ff");
  60.       Button1.text("已开启");
  61.       Button1.print("on");
  62.       
  63.     }
  64.     else if(state == BLINKER_CMD_OFF)
  65.     {
  66.       Serial.print("state OFF");
  67.       digitalWrite(LED_BUILTIN, LOW);
  68.       digitalWrite(0, HIGH);

  69.       Button1.color("#708090");
  70.       Button1.text("已关闭");
  71.       Button1.print("off");
  72.     }
  73.     else{}
  74. }

  75. void setup()
  76. {
  77.     // 初始化串口
  78.     Serial.begin(115200);
  79.     BLINKER_DEBUG.stream(Serial);
  80.     BLINKER_DEBUG.debugAll();
  81.    
  82.     // 初始化有LED的IO
  83.     pinMode(LED_BUILTIN, OUTPUT);
  84.     digitalWrite(LED_BUILTIN, LOW);
  85.    
  86.     pinMode(0, OUTPUT);
  87.     digitalWrite(0, HIGH);
  88.    
  89.     // 初始化blinker
  90.     Blinker.begin(auth, ssid, pswd);

  91.     Button1.attach(button1_callback);
  92.    
  93.     BlinkerDuerOS.attachPowerState(duerPowerState);
  94.     BlinkerDuerOS.attachQuery(duerQuery);
  95.    
  96. }

  97. void loop() {
  98.     Blinker.run();
  99. }
复制代码
 楼主| 发表于 2022-1-20 09:36 | 显示全部楼层
又发现了新问题。小度音响控制是没问题了,但是小爱控制是反的,就是 让他开灯 他关灯  让他关灯 他就开。也不知道是不是bug,我控制逻辑 小度小爱 是一样的。。
  1. void miotPowerState(const String & state)
  2. {
  3.     //BLINKER_LOG("need set power state: ", state);
  4.     Serial.print(state);
  5.     if (state == BLINKER_CMD_ON) {
  6.         digitalWrite(LED_BUILTIN, HIGH);
  7.         digitalWrite(0, LOW);
  8.         Button1.color("#6666ff");
  9.         Button1.text("已开启");
  10.         Button1.print("on");
  11.         BlinkerMIOT.powerState("on");
  12.         BlinkerMIOT.print();
  13.         oState = true;
  14.     }
  15.     else if (state == BLINKER_CMD_OFF) {
  16.         digitalWrite(LED_BUILTIN, LOW);
  17.         digitalWrite(0, HIGH);
  18.         Button1.color("#708090");
  19.         Button1.text("已关闭");
  20.         Button1.print("off");
  21.         BlinkerMIOT.powerState("off");
  22.         BlinkerMIOT.print();
  23.         oState = false;
  24.     }
  25. }


  26. void duerPowerState(const String & state)
  27. {
  28.     BLINKER_LOG("need set power state: ", state);

  29.     if (state == BLINKER_CMD_ON) {
  30.         digitalWrite(LED_BUILTIN, LOW);
  31.         digitalWrite(0, HIGH);
  32.         Button1.color("#6666ff");
  33.         Button1.text("已开启");
  34.         Button1.print("on");
  35.         BlinkerDuerOS.powerState("on");
  36.         BlinkerDuerOS.print();
  37.         oState = true;
  38.     }
  39.     else if (state == BLINKER_CMD_OFF) {
  40.         digitalWrite(LED_BUILTIN, HIGH);
  41.         digitalWrite(0, LOW);
  42.         Button1.color("#708090");
  43.         Button1.text("已关闭");
  44.         Button1.print("off");
  45.         BlinkerDuerOS.powerState("off");
  46.         BlinkerDuerOS.print();
  47.         oState = false;
  48.     }
  49. }
复制代码
发表于 2022-1-24 21:31 | 显示全部楼层
我小爱是好的。但是小度就是连不上,小度APP点了但是模块的log里面啥都没有收到
我是iphone12的,点灯版本2.7.1, 小度版本也是最新的。。。用点灯科技的button可以。但是小度就是不行 能帮下么?

我的小爱的代码如下

// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");

int counter = 0;
int isLightOn = 0;
// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    isLightOn = !isLightOn;
    digitalWrite(LED_BUILTIN, isLightOn);
    BLINKER_LOG("Light is:", isLightOn == true ? "ON":"OFF");
   
}

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

void setup() {
    // 初始化串口
    Serial.begin(115200);

    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif
   
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);

    BlinkerMIOT.attachPowerState(miotPowerState);
    BlinkerMIOT.attachQuery(miotQuery);
}

void loop() {
    Blinker.run();
}
void miotQuery(int32_t queryCode)
{
    BLINKER_LOG("MIOT Query codes: ", queryCode);

    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("MIOT Query All");
            BlinkerMIOT.powerState(isLightOn ? "on" : "off");
            BlinkerMIOT.print();
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("MIOT Query Power State");
            BlinkerMIOT.powerState(isLightOn ? "on" : "off");
            BlinkerMIOT.print();
            break;
        default :
            BlinkerMIOT.powerState(isLightOn ? "on" : "off");
            BlinkerMIOT.print();
            break;
    }
}
void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {
        digitalWrite(LED_BUILTIN, HIGH);
        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
        BLINKER_LOG("Light is: ON");
        isLightOn = 1;
    }
    else if (state == BLINKER_CMD_OFF) {
        digitalWrite(LED_BUILTIN, LOW);
        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();
        BLINKER_LOG("Light is: OFF");
        isLightOn = 0;
    }
}
 楼主| 发表于 2022-2-8 16:52 | 显示全部楼层
onwebbe 发表于 2022-1-24 21:31
我小爱是好的。但是小度就是连不上,小度APP点了但是模块的log里面啥都没有收到
我是iphone12的,点灯版 ...

小度 连不上 你给我看 小爱的 代码 神仙也没招啊
发表于 2022-2-8 21:50 | 显示全部楼层
jerryiot 发表于 2022-1-20 09:36
又发现了新问题。小度音响控制是没问题了,但是小爱控制是反的,就是 让他开灯 他关灯  让他关灯 他就开。 ...

你把HIGH和LOW换一下,不就反过来了么
发表于 2022-2-8 21:51 | 显示全部楼层
onwebbe 发表于 2022-1-24 21:31
我小爱是好的。但是小度就是连不上,小度APP点了但是模块的log里面啥都没有收到
我是iphone12的,点灯版 ...

您这只是单纯没看文档。做开发一定要看文档,文档有写的,例程也有。
 楼主| 发表于 2022-2-9 08:55 | 显示全部楼层
coloz 发表于 2022-2-8 21:50
你把HIGH和LOW换一下,不就反过来了么

确实,之前是我看错了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 10:36 , Processed in 0.077286 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表