blinker 接入小爱-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4843|回复: 4

[已解答] blinker 接入小爱

[复制链接]
发表于 2020-1-4 20:52 | 显示全部楼层 |阅读模式
把 blinker 里接入小爱同学的 例程 合并后只能控制RGB灯,读取传感器和插座小爱就找不到设备了。单独下载读取传感器的例程是可以的,请问怎么样才能都和在一起;用的是NodeMCU
 楼主| 发表于 2020-1-4 20:56 | 显示全部楼层
本帖最后由 王尼玛1 于 2020-11-24 17:16 编辑
  1. /* *****************************************************************
  2. *
  3. * Download latest Blinker library here:
  4. * https://github.com/blinker-iot/blinker-library/archive/master.zip
  5. *
  6. *
  7. * Blinker is a cross-hardware, cross-platform solution for the IoT.
  8. * It provides APP, device and server support,
  9. * and uses public cloud services for data transmission and storage.
  10. * It can be used in smart home, data monitoring and other fields
  11. * to help users build Internet of Things projects better and faster.
  12. *
  13. * Make sure installed 2.5.0 or later ESP8266/Arduino package,
  14. * if use ESP8266 with Blinker.
  15. * https://github.com/esp8266/Arduino/releases
  16. *
  17. * Make sure installed 1.0.2 or later ESP32/Arduino package,
  18. * if use ESP32 with Blinker.
  19. * https://github.com/espressif/arduino-esp32/releases
  20. *
  21. * Docs: https://doc.blinker.app/
  22. *       https://github.com/blinker-iot/blinker-doc/wiki
  23. *
  24. * *****************************************************************
  25. *
  26. * Blinker 库下载地址:
  27. * https://github.com/blinker-iot/blinker-library/archive/master.zip
  28. *
  29. * Blinker 是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、
  30. * 服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、
  31. * 数据监测等领域,可以帮助用户更好更快地搭建物联网项目。
  32. *
  33. * 如果使用 ESP8266 接入 Blinker,
  34. * 请确保安装了 2.5.0 或更新的 ESP8266/Arduino 支持包。
  35. * https://github.com/esp8266/Arduino/releases
  36. *
  37. * 如果使用 ESP32 接入 Blinker,
  38. * 请确保安装了 1.0.2 或更新的 ESP32/Arduino 支持包。
  39. * https://github.com/espressif/arduino-esp32/releases
  40. *
  41. * 文档: https://doc.blinker.app/
  42. *       https://github.com/blinker-iot/blinker-doc/wiki
  43. *
  44. * *****************************************************************/

  45. #define BLINKER_WIFI
  46. #define BLINKER_MIOT_LIGHT  //灯
  47. #define BLINKER_MIOT_SENSOR //传感器
  48. #define BLINKER_MIOT_MULTI_OUTLET //插座
  49. #include <Blinker.h>

  50. char auth[] = "--------";
  51. char ssid[] = "-----";
  52. char pswd[] = "----";

  53. // Download Adafruit_NeoPixel library here:
  54. // https://github.com/adafruit/Adafruit_NeoPixel
  55. #include <Adafruit_NeoPixel.h>

  56. #define PIN            D2
  57. #define NUMPIXELS      16
  58. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

  59. #define RGB_1 "RGBKey"

  60. BlinkerRGB WS2812(RGB_1);

  61. uint8_t colorR, colorG, colorB, colorW;
  62. bool wsState;
  63. uint8_t wsMode = BLINKER_CMD_MIOT_DAY;
  64. bool oState[5] = { false };
  65. void pixelShow()
  66. {
  67.     pixels.setBrightness(colorW);

  68.     for(int i = 0; i < NUMPIXELS; i++){
  69.         pixels.setPixelColor(i, colorR, colorG, colorB);
  70.     }
  71.     pixels.show();
  72. }

  73. void ws2812_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value)
  74. {
  75.     digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
  76.     BLINKER_LOG("R value: ", r_value);
  77.     BLINKER_LOG("G value: ", g_value);
  78.     BLINKER_LOG("B value: ", b_value);
  79.     BLINKER_LOG("Rrightness value: ", bright_value);

  80.     colorR = r_value;
  81.     colorG = g_value;
  82.     colorB = b_value;
  83.     colorW = bright_value;

  84.     pixelShow();
  85. }

  86. uint32_t getColor()
  87. {
  88.     uint32_t color = colorR << 16 | colorG << 8 | colorB;

  89.     return color;
  90. }

  91. void miotPowerState_RGB(const String & state)
  92. {
  93.     BLINKER_LOG("need set power state: ", state);

  94.     if (state == BLINKER_CMD_ON) {
  95.         digitalWrite(LED_BUILTIN, HIGH);

  96.         BlinkerMIOT.powerState("on");
  97.         BlinkerMIOT.print();

  98.         wsState = true;

  99.         if (colorW == 0) colorW = 255;
  100.     }
  101.     else if (state == BLINKER_CMD_OFF) {
  102.         digitalWrite(LED_BUILTIN, LOW);

  103.         BlinkerMIOT.powerState("off");
  104.         BlinkerMIOT.print();

  105.         wsState = false;
  106.     }

  107.     pixelShow();
  108. }
  109. void miotPowerState_outlet(const String & state, uint8_t num)
  110. {
  111.     BLINKER_LOG("need set outlet: ", num, ", power state: ", state);

  112.     if (state == BLINKER_CMD_ON) {
  113.         digitalWrite(LED_BUILTIN, HIGH);

  114.         BlinkerMIOT.powerState("on", num);
  115.         BlinkerMIOT.print();

  116.         oState[num] = true;
  117.     }
  118.     else if (state == BLINKER_CMD_OFF) {
  119.         digitalWrite(LED_BUILTIN, LOW);

  120.         BlinkerMIOT.powerState("off", num);
  121.         BlinkerMIOT.print();

  122.         oState[num] = false;

  123.         if (num == 0)
  124.         {
  125.             for (uint8_t o_num = 0; o_num < 5; o_num++)
  126.             {
  127.                 oState[o_num] = false;
  128.             }
  129.         }
  130.     }
  131. }
  132. void miotColor(int32_t color)
  133. {
  134.     BLINKER_LOG("need set color: ", color);

  135.     colorR = color >> 16 & 0xFF;
  136.     colorG = color >>  8 & 0xFF;
  137.     colorB = color       & 0xFF;

  138.     BLINKER_LOG("colorR: ", colorR, ", colorG: ", colorG, ", colorB: ", colorB);

  139.     pixelShow();

  140.     BlinkerMIOT.color(color);
  141.     BlinkerMIOT.print();
  142. }

  143. void miotMode(uint8_t mode)
  144. {
  145.     BLINKER_LOG("need set mode: ", mode);

  146.     if (mode == BLINKER_CMD_MIOT_DAY) {
  147.         // Your mode function
  148.     }
  149.     else if (mode == BLINKER_CMD_MIOT_NIGHT) {
  150.         // Your mode function
  151.     }
  152.     else if (mode == BLINKER_CMD_MIOT_COLOR) {
  153.         // Your mode function
  154.     }
  155.     else if (mode == BLINKER_CMD_MIOT_WARMTH) {
  156.         // Your mode function
  157.     }
  158.     else if (mode == BLINKER_CMD_MIOT_TV) {
  159.         // Your mode function
  160.     }
  161.     else if (mode == BLINKER_CMD_MIOT_READING) {
  162.         // Your mode function
  163.     }
  164.     else if (mode == BLINKER_CMD_MIOT_COMPUTER) {
  165.         // Your mode function
  166.     }

  167.     wsMode = mode;

  168.     BlinkerMIOT.mode(mode);
  169.     BlinkerMIOT.print();
  170. }

  171. void miotBright(const String & bright)
  172. {
  173.     BLINKER_LOG("need set brightness: ", bright);

  174.     colorW = bright.toInt();

  175.     BLINKER_LOG("now set brightness: ", colorW);

  176.     pixelShow();

  177.     BlinkerMIOT.brightness(colorW);
  178.     BlinkerMIOT.print();
  179. }

  180. void miotColoTemp(int32_t colorTemp)
  181. {
  182.     BLINKER_LOG("need set colorTemperature: ", colorTemp);

  183.     BlinkerMIOT.colorTemp(colorTemp);
  184.     BlinkerMIOT.print();
  185. }

  186. void miotQuery_RGB(int32_t queryCode)      //控制RGB
  187. {
  188.     BLINKER_LOG("MIOT Query codes: ", queryCode);

  189.     switch (queryCode)
  190.     {
  191.         case BLINKER_CMD_QUERY_ALL_NUMBER :
  192.             BLINKER_LOG("MIOT Query All");
  193.             BlinkerMIOT.powerState(wsState ? "on" : "off");
  194.             BlinkerMIOT.color(0);
  195.             BlinkerMIOT.mode(0);
  196.             BlinkerMIOT.colorTemp(1000);
  197.             BlinkerMIOT.brightness(1);
  198.             BlinkerMIOT.print();
  199.             break;
  200.         case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
  201.             BLINKER_LOG("MIOT Query Power State");
  202.             BlinkerMIOT.powerState(wsState ? "on" : "off");
  203.             BlinkerMIOT.print();
  204.             break;
  205.         case BLINKER_CMD_QUERY_COLOR_NUMBER :
  206.             BLINKER_LOG("MIOT Query Color");
  207.             BlinkerMIOT.color(0);
  208.             BlinkerMIOT.print();
  209.             break;
  210.         case BLINKER_CMD_QUERY_MODE_NUMBER :
  211.             BLINKER_LOG("MIOT Query Mode");
  212.             BlinkerMIOT.mode(0);
  213.             BlinkerMIOT.print();
  214.             break;
  215.         case BLINKER_CMD_QUERY_COLORTEMP_NUMBER :
  216.             BLINKER_LOG("MIOT Query ColorTemperature");
  217.             BlinkerMIOT.colorTemp(1000);
  218.             BlinkerMIOT.print();
  219.             break;
  220.         case BLINKER_CMD_QUERY_BRIGHTNESS_NUMBER :
  221.             BLINKER_LOG("MIOT Query Brightness");
  222.             BlinkerMIOT.brightness(1);
  223.             BlinkerMIOT.print();
  224.             break;
  225.         default :
  226.             BlinkerMIOT.powerState(wsState ? "on" : "off");
  227.             BlinkerMIOT.color(0);
  228.             BlinkerMIOT.mode(0);
  229.             BlinkerMIOT.colorTemp(1000);
  230.             BlinkerMIOT.brightness(1);
  231.             BlinkerMIOT.print();
  232.             break;
  233.     }
  234. }
  235. void miotQuery_sensor(int32_t queryCode)        //读取传感器的数值
  236. {
  237.     BLINKER_LOG("MIOT Query codes: ", queryCode);

  238.     switch (queryCode)
  239.     {
  240.         case BLINKER_CMD_QUERY_ALL_NUMBER :
  241.             BLINKER_LOG("MIOT Query All");
  242.             BlinkerMIOT.temp(20);
  243.             BlinkerMIOT.humi(20);
  244.             BlinkerMIOT.pm25(20);
  245.             BlinkerMIOT.co2(20);
  246.             BlinkerMIOT.print();
  247.             break;
  248.         default :
  249.             BlinkerMIOT.temp(20);
  250.             BlinkerMIOT.humi(20);
  251.             BlinkerMIOT.pm25(20);
  252.             BlinkerMIOT.co2(20);
  253.             BlinkerMIOT.print();
  254.             break;
  255.     }
  256. }
  257. void miotQuery_outlet(int32_t queryCode, uint8_t num) //插座
  258. {
  259.     BLINKER_LOG("AliGenie Query outlet: ", num,", codes: ", queryCode);

  260.     switch (queryCode)
  261.     {
  262.         case BLINKER_CMD_QUERY_ALL_NUMBER :
  263.             BLINKER_LOG("AliGenie Query All");
  264.             BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
  265.             BlinkerMIOT.print();
  266.             break;
  267.         case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
  268.             BLINKER_LOG("AliGenie Query Power State");
  269.             BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
  270.             BlinkerMIOT.print();
  271.             break;
  272.         default :
  273.             BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
  274.             BlinkerMIOT.print();
  275.             break;
  276.     }
  277. }
  278. void dataRead(const String & data)
  279. {
  280.     BLINKER_LOG("Blinker readString: ", data);

  281.     Blinker.vibrate();
  282.    
  283.     uint32_t BlinkerTime = millis();
  284.    
  285.     Blinker.print("millis", BlinkerTime);
  286. }

  287. void setup()
  288. {
  289.     Serial.begin(115200);   
  290.     BLINKER_DEBUG.stream(Serial);
  291.     BLINKER_DEBUG.debugAll();

  292.     pinMode(LED_BUILTIN, OUTPUT);
  293.     digitalWrite(LED_BUILTIN, LOW);

  294.     Blinker.begin(auth, ssid, pswd);
  295.     Blinker.attachData(dataRead);
  296.    
  297.     BlinkerMIOT.attachPowerState(miotPowerState_RGB);   
  298.     BlinkerMIOT.attachPowerState(miotPowerState_outlet);
  299.     BlinkerMIOT.attachColor(miotColor);
  300.     BlinkerMIOT.attachMode(miotMode);
  301.     BlinkerMIOT.attachBrightness(miotBright);
  302.     BlinkerMIOT.attachColorTemperature(miotColoTemp);
  303.     BlinkerMIOT.attachQuery(miotQuery_RGB);
  304.     BlinkerMIOT.attachQuery(miotQuery_sensor);
  305.      BlinkerMIOT.attachQuery(miotQuery_outlet);

  306.     colorR = 255;
  307.     colorG = 255;
  308.     colorB = 255;
  309.     colorW = 0;
  310.     wsState = true;

  311.     pixels.begin();
  312.     pixels.setBrightness(colorW);
  313.     WS2812.attach(ws2812_callback);
  314.     pixelShow();
  315. }

  316. void loop()
  317. {
  318.     Blinker.run();

  319.     for(int i = 0; i < NUMPIXELS; i++){
  320.         pixels.setPixelColor(i, colorR, colorG, colorB);
  321.     }
  322.     pixels.show();
  323. }
复制代码

发表于 2020-1-4 23:43 | 显示全部楼层
这是语音助手方面的限制,设备必须是一种品类。非blinker决定的
 楼主| 发表于 2020-1-5 10:46 | 显示全部楼层
coloz 发表于 2020-1-4 23:43
这是语音助手方面的限制,设备必须是一种品类。非blinker决定的

学习了,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 06:43 , Processed in 0.242838 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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