想通过小爱童鞋,点亮一盏灯。
把灯接入点灯科技,
打开米家,在《我的》,《其他平台设备》,中找到点灯,
绑定好账号,同步设备。
想通过小爱童鞋,点亮一盏灯。
把灯接入点灯科技,
但是能同步到米家的设备一定是小米支持的设备。
这些设备肯定是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(); }