1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| #define BLINKER_WIFI #define BLINKER_MIOT_OUTLET #include <Blinker.h> #include <WiFiUDP.h> #include <ESP8266Ping.h> char auth[] = "你的token";//app中获取到的Secret Key(密钥) char ssid[] = "你的无线名称";//填入wifi账号 char pswd[] = "你的无线密码";//填入wifi密码 byte mac1[] = {0x00, 0x10, 0x20, 0x3A, 0x46, 0x62};//唤醒目标电脑的mac为40 B8 76 A8 38 A6 ,替换为自己的电脑mac地址 byte preamble[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; IPAddress ip(192, 168, 31, 255); //幻数据包需要在局域网中广播发送 要控制的电脑的网段的255地址 //int pingResult; WiFiUDP UDP; //建立一个WiFiUDP对象 UDP // 新建组件对象 BlinkerButton Button1("OPEN");//注意:内容替换为app中添加按键的数据键名 int GPIO = 0; //定义继电器输入引脚为GPIO/0 // 按下BlinkerAPP按键即会执行该函数 // 按下按键即会执行该函数 void button1_callback(const String & state) { UDP.beginPacket(ip, 7); //UDP发送到目标(IP,端口) UDP.write(preamble, sizeof preamble); //写入包头(FF,FF,FF,FF,FF,FF) for (byte i = 0; i < 16; i++) { UDP.write(mac1, sizeof mac1); } Serial.println("唤醒主机"); UDP.endPacket(); } void miotPowerState(const String & state) { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { UDP.beginPacket(ip, 7); //UDP发送到目标(IP,端口) UDP.write(preamble, sizeof preamble); //写入包头(FF,FF,FF,FF,FF,FF) for (byte i = 0; i < 16; i++) { UDP.write(mac1, sizeof mac1); } Serial.println("唤醒主机"); UDP.endPacket(); BlinkerMIOT.powerState("on"); BlinkerMIOT.print(); } else if (state == BLINKER_CMD_OFF) { digitalWrite(LED_BUILTIN, LOW); BlinkerButton.attach() BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); } } void setup() { // 初始化串口,并开启调试信息,调试用可以删除 Serial.begin(115200); BLINKER_DEBUG.stream(Serial); // 初始化IO pinMode(GPIO, OUTPUT); digitalWrite(GPIO, HIGH); // 初始化blinker Blinker.begin(auth, ssid, pswd); Button1.attach(button1_callback); BlinkerMIOT.attachPowerState(miotPowerState); } void loop() { Blinker.run(); }
|