想通過小愛童鞋,點亮一盞燈。
把燈接入點燈科技,
打開米家,在《我的》,《其他平台設備》,中找到點燈,
綁定好賬號,同步設備。
想通過小愛童鞋,點亮一盞燈。
把燈接入點燈科技,
但是能同步到米家的設備一定是小米支持的設備。
這些設備肯定是light、outlet、multi_outlet、sensor。
想通過小愛童鞋,點亮一盞燈。
先是在《點燈app》中添加了我的燈。
選擇的是阿里的broker,並復制了key。
我給我的燈起名為"大燈"。
想通過小愛童鞋,點亮一盞燈。
一盞led小燈。我使用了這樣一份代碼。
設置好auth為我復制的key。設置好wifi信息。
我在setup中把gpio5設置成輸出,pinMode(5, OUTPUT);
我在小愛的電源操作回調函數中,反向gpio5的輸出。 digitalWrite(5, !digitalRead(5));
我上傳來這份代碼。
想通過小愛童鞋,點亮一盞燈。
一盞led小燈。led燈一腳接到D1,一腳接到了3v,
我或許應該給它一個電阻,但是我沒有。
我喚出了我的小愛童鞋,並讓它叫我爸爸。
在它離開時,我說“打開大燈”,
就這樣,小愛童鞋幫我打開了我的led燈。

/* ***************************************************************** * * 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.7.4 or later ESP8266/Arduino package, * if use ESP8266 with Blinker. * https://github.com/esp8266/Arduino/releases * * Make sure installed 1.0.4 or later ESP32/Arduino package, * if use ESP32 with Blinker. * https://github.com/espressif/arduino-esp32/releases * * Docs: https://diandeng.tech/doc * * * ***************************************************************** * * Blinker 庫下載地址: * https://github.com/blinker-iot/blinker-library/archive/master.zip * * Blinker 是一套跨硬件、跨平台的物聯網解決方案,提供APP端、設備端、 * 服務器端支持,使用公有雲服務進行數據傳輸存儲。可用於智能家居、 * 數據監測等領域,可以幫助用戶更好更快地搭建物聯網項目。 * * 如果使用 ESP8266 接入 Blinker, * 請確保安裝了 2.7.4 或更新的 ESP8266/Arduino 支持包。 * https://github.com/esp8266/Arduino/releases * * 如果使用 ESP32 接入 Blinker, * 請確保安裝了 1.0.4 或更新的 ESP32/Arduino 支持包。 * https://github.com/espressif/arduino-esp32/releases * * 文檔: https://diandeng.tech/doc * * * *****************************************************************/ #define BLINKER_WIFI #define BLINKER_MIOT_LIGHT #include <Blinker.h> char auth[] = "zheshiwodemamamamamam"; char ssid[] = "xingans"; char pswd[] = "jiushibugaoshuni..."; // 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); // 或者在這里每次對led的電平取反 // digitalWrite(5, !digitalRead(5)); if (state == BLINKER_CMD_ON) { digitalWrite(LED_BUILTIN, HIGH); BlinkerMIOT.powerState("on"); BlinkerMIOT.print(); // 或者在開led時候輸出低電平 digitalWrite(5, LOW); wsState = true; if (colorW == 0) colorW = 255; } else if (state == BLINKER_CMD_OFF) { digitalWrite(LED_BUILTIN, LOW); // // 或者在關led時候輸出高電平 BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); digitalWrite(5, HIGH); 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); pinMode(5, OUTPUT); // 默認關閉大燈 digitalWrite(5, 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(); }