| #define BLINKER_MIOT_LIGHT |
| |
| #include <Blinker.h> |
| |
| char auth[] = "Your Device Secret Key"; |
| char ssid[] = "Your WiFi network SSID or name"; |
| char pswd[] = "Your WiFi network WPA password or WEP key"; |
| |
| // Download Adafruit_NeoPixel library here: |
| // https://github.com/adafruit/Adafruit_NeoPixel |
| #include <Adafruit_NeoPixel.h> |
| |
| #define PIN 2 |
| #define NUMPIXELS 24 |
| 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; |
| |
| 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(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 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(int32_t queryCode) |
| { |
| 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 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); |
| BlinkerMIOT.attachColor(miotColor); |
| BlinkerMIOT.attachMode(miotMode); |
| BlinkerMIOT.attachBrightness(miotBright); |
| BlinkerMIOT.attachColorTemperature(miotColoTemp); |
| BlinkerMIOT.attachQuery(miotQuery); |
| |
| pinMode(14, OUTPUT); |
| digitalWrite(14, HIGH); |
| pinMode(15, OUTPUT); |
| digitalWrite(15, HIGH); |
| |
| 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(); |
| } |