查看: 337|回复: 3

[已解答] blinker 接入小爱

[复制链接]
  • TA的每日心情
    慵懒
    2020-1-25 13:57
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2020-1-4 20:52 | 显示全部楼层 |阅读模式
    把 blinker 里接入小爱同学的 例程 合并后只能控制RGB灯,读取传感器和插座小爱就找不到设备了。单独下载读取传感器的例程是可以的,请问怎么样才能都和在一起;用的是NodeMCU
  • TA的每日心情
    慵懒
    2020-1-25 13:57
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-1-4 20:56 | 显示全部楼层
    /* *****************************************************************
    *
    * Download latest Blinker library here:
    * https://github.com/blinker-iot/blinker-library/archive/master.zip
    *
    *
    * Blinker is a cross-hardware, cross-platform solution for the IoT.
    * It provides APP, device and server support,
    * and uses public cloud services for data transmission and storage.
    * It can be used in smart home, data monitoring and other fields
    * to help users build Internet of Things projects better and faster.
    *
    * Make sure installed 2.5.0 or later ESP8266/Arduino package,
    * if use ESP8266 with Blinker.
    * https://github.com/esp8266/Arduino/releases
    *
    * Make sure installed 1.0.2 or later ESP32/Arduino package,
    * if use ESP32 with Blinker.
    * https://github.com/espressif/arduino-esp32/releases
    *
    * Docs: https://doc.blinker.app/
    *       https://github.com/blinker-iot/blinker-doc/wiki
    *
    * *****************************************************************
    *
    * Blinker 库下载地址:
    * https://github.com/blinker-iot/blinker-library/archive/master.zip
    *
    * Blinker 是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、
    * 服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、
    * 数据监测等领域,可以帮助用户更好更快地搭建物联网项目。
    *
    * 如果使用 ESP8266 接入 Blinker,
    * 请确保安装了 2.5.0 或更新的 ESP8266/Arduino 支持包。
    * https://github.com/esp8266/Arduino/releases
    *
    * 如果使用 ESP32 接入 Blinker,
    * 请确保安装了 1.0.2 或更新的 ESP32/Arduino 支持包。
    * https://github.com/espressif/arduino-esp32/releases
    *
    * 文档: https://doc.blinker.app/
    *       https://github.com/blinker-iot/blinker-doc/wiki
    *
    * *****************************************************************/

    #define BLINKER_WIFI
    #define BLINKER_MIOT_LIGHT  //灯
    #define BLINKER_MIOT_SENSOR //传感器
    #define BLINKER_MIOT_MULTI_OUTLET //插座
    #include <Blinker.h>

    char auth[] = "--------";
    char ssid[] = "-----";
    char pswd[] = "----";

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

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

    #define RGB_1 "RGBKey"

    BlinkerRGB WS2812(RGB_1);

    uint8_t colorR, colorG, colorB, colorW;
    bool wsState;
    uint8_t wsMode = BLINKER_CMD_MIOT_DAY;
    bool oState[5] = { false };
    void pixelShow()
    {
        pixels.setBrightness(colorW);

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

    void ws2812_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value)
    {
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
        BLINKER_LOG("R value: ", r_value);
        BLINKER_LOG("G value: ", g_value);
        BLINKER_LOG("B value: ", b_value);
        BLINKER_LOG("Rrightness value: ", bright_value);

        colorR = r_value;
        colorG = g_value;
        colorB = b_value;
        colorW = bright_value;

        pixelShow();
    }

    uint32_t getColor()
    {
        uint32_t color = colorR << 16 | colorG << 8 | colorB;

        return color;
    }

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

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

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

            wsState = true;

            if (colorW == 0) colorW = 255;
        }
        else if (state == BLINKER_CMD_OFF) {
            digitalWrite(LED_BUILTIN, LOW);

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

            wsState = false;
        }

        pixelShow();
    }
    void miotPowerState_outlet(const String & state, uint8_t num)
    {
        BLINKER_LOG("need set outlet: ", num, ", power state: ", state);

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

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

            oState[num] = true;
        }
        else if (state == BLINKER_CMD_OFF) {
            digitalWrite(LED_BUILTIN, LOW);

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

            oState[num] = false;

            if (num == 0)
            {
                for (uint8_t o_num = 0; o_num < 5; o_num++)
                {
                    oState[o_num] = false;
                }
            }
        }
    }
    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);

        pixelShow();

        BlinkerMIOT.color(color);
        BlinkerMIOT.print();
    }

    void miotMode(uint8_t mode)
    {
        BLINKER_LOG("need set mode: ", mode);

        if (mode == BLINKER_CMD_MIOT_DAY) {
            // Your mode function
        }
        else if (mode == BLINKER_CMD_MIOT_NIGHT) {
            // Your mode function
        }
        else if (mode == BLINKER_CMD_MIOT_COLOR) {
            // Your mode function
        }
        else if (mode == BLINKER_CMD_MIOT_WARMTH) {
            // Your mode function
        }
        else if (mode == BLINKER_CMD_MIOT_TV) {
            // Your mode function
        }
        else if (mode == BLINKER_CMD_MIOT_READING) {
            // Your mode function
        }
        else if (mode == BLINKER_CMD_MIOT_COMPUTER) {
            // Your mode function
        }

        wsMode = mode;

        BlinkerMIOT.mode(mode);
        BlinkerMIOT.print();
    }

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

        colorW = bright.toInt();

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

        pixelShow();

        BlinkerMIOT.brightness(colorW);
        BlinkerMIOT.print();
    }

    void miotColoTemp(int32_t colorTemp)
    {
        BLINKER_LOG("need set colorTemperature: ", colorTemp);

        BlinkerMIOT.colorTemp(colorTemp);
        BlinkerMIOT.print();
    }

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

        switch (queryCode)
        {
            case BLINKER_CMD_QUERY_ALL_NUMBER :
                BLINKER_LOG("MIOT Query All");
                BlinkerMIOT.powerState(wsState ? "on" : "off");
                BlinkerMIOT.color(0);
                BlinkerMIOT.mode(0);
                BlinkerMIOT.colorTemp(1000);
                BlinkerMIOT.brightness(1);
                BlinkerMIOT.print();
                break;
            case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
                BLINKER_LOG("MIOT Query Power State");
                BlinkerMIOT.powerState(wsState ? "on" : "off");
                BlinkerMIOT.print();
                break;
            case BLINKER_CMD_QUERY_COLOR_NUMBER :
                BLINKER_LOG("MIOT Query Color");
                BlinkerMIOT.color(0);
                BlinkerMIOT.print();
                break;
            case BLINKER_CMD_QUERY_MODE_NUMBER :
                BLINKER_LOG("MIOT Query Mode");
                BlinkerMIOT.mode(0);
                BlinkerMIOT.print();
                break;
            case BLINKER_CMD_QUERY_COLORTEMP_NUMBER :
                BLINKER_LOG("MIOT Query ColorTemperature");
                BlinkerMIOT.colorTemp(1000);
                BlinkerMIOT.print();
                break;
            case BLINKER_CMD_QUERY_BRIGHTNESS_NUMBER :
                BLINKER_LOG("MIOT Query Brightness");
                BlinkerMIOT.brightness(1);
                BlinkerMIOT.print();
                break;
            default :
                BlinkerMIOT.powerState(wsState ? "on" : "off");
                BlinkerMIOT.color(0);
                BlinkerMIOT.mode(0);
                BlinkerMIOT.colorTemp(1000);
                BlinkerMIOT.brightness(1);
                BlinkerMIOT.print();
                break;
        }
    }
    void miotQuery_sensor(int32_t queryCode)        //读取传感器的数值
    {
        BLINKER_LOG("MIOT Query codes: ", queryCode);

        switch (queryCode)
        {
            case BLINKER_CMD_QUERY_ALL_NUMBER :
                BLINKER_LOG("MIOT Query All");
                BlinkerMIOT.temp(20);
                BlinkerMIOT.humi(20);
                BlinkerMIOT.pm25(20);
                BlinkerMIOT.co2(20);
                BlinkerMIOT.print();
                break;
            default :
                BlinkerMIOT.temp(20);
                BlinkerMIOT.humi(20);
                BlinkerMIOT.pm25(20);
                BlinkerMIOT.co2(20);
                BlinkerMIOT.print();
                break;
        }
    }
    void miotQuery_outlet(int32_t queryCode, uint8_t num) //插座
    {
        BLINKER_LOG("AliGenie Query outlet: ", num,", codes: ", queryCode);

        switch (queryCode)
        {
            case BLINKER_CMD_QUERY_ALL_NUMBER :
                BLINKER_LOG("AliGenie Query All");
                BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
                BlinkerMIOT.print();
                break;
            case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
                BLINKER_LOG("AliGenie Query Power State");
                BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
                BlinkerMIOT.print();
                break;
            default :
                BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
                BlinkerMIOT.print();
                break;
        }
    }
    void dataRead(const String & data)
    {
        BLINKER_LOG("Blinker readString: ", data);

        Blinker.vibrate();
       
        uint32_t BlinkerTime = millis();
       
        Blinker.print("millis", BlinkerTime);
    }

    void setup()
    {
        Serial.begin(115200);   
        BLINKER_DEBUG.stream(Serial);
        BLINKER_DEBUG.debugAll();

        pinMode(LED_BUILTIN, OUTPUT);
        digitalWrite(LED_BUILTIN, LOW);

        Blinker.begin(auth, ssid, pswd);
        Blinker.attachData(dataRead);
       
        BlinkerMIOT.attachPowerState(miotPowerState_RGB);   
        BlinkerMIOT.attachPowerState(miotPowerState_outlet);
        BlinkerMIOT.attachColor(miotColor);
        BlinkerMIOT.attachMode(miotMode);
        BlinkerMIOT.attachBrightness(miotBright);
        BlinkerMIOT.attachColorTemperature(miotColoTemp);
        BlinkerMIOT.attachQuery(miotQuery_RGB);
        BlinkerMIOT.attachQuery(miotQuery_sensor);
         BlinkerMIOT.attachQuery(miotQuery_outlet);

        colorR = 255;
        colorG = 255;
        colorB = 255;
        colorW = 0;
        wsState = true;

        pixels.begin();
        pixels.setBrightness(colorW);
        WS2812.attach(ws2812_callback);
        pixelShow();
    }

    void loop()
    {
        Blinker.run();

        for(int i = 0; i < NUMPIXELS; i++){
            pixels.setPixelColor(i, colorR, colorG, colorB);
        }
        pixels.show();
    }
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-1-4 23:43 | 显示全部楼层
    这是语音助手方面的限制,设备必须是一种品类。非blinker决定的
  • TA的每日心情
    慵懒
    2020-1-25 13:57
  • 签到天数: 19 天

    [LV.4]偶尔看看III

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

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

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    小爱同学+Blinker控制灯
    小爱同学+Blinker控制灯
    来这个社区已经很久了,有很多问题都是在这里解决的。在此谢谢他们!这里我也分享一个
    使用74hc595驱动一位数码管
    使用74hc595驱动一位数码
    74hc595是一种常用的I/O拓展芯片,今天我尝试用一个74hc595来驱动一个一位七段数码管
    74HC595的疑惑终于解开
    74HC595的疑惑终于解开
    对于74HC595的教程中和网上的资料看完还是模糊,于是一边接线测试,一边反复看图研究
    数据转换求助!!!
    数据转换求助!!!
    如何将 String str =“123,2132,1321,11”; 转换成 uint16_t A[4]= str
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表