远程开关机的方法(教你10元用esp8266 DIY远程开机棒)

2020-06-04 13:13:05

在个人电脑使用或者服务器管理中经常需要对电脑进行远程开关机、重启的操作。出门在外想要查找电脑上的资料怎么办,服务器出了故障需要重启怎么办,下班回家需要控制单位的电脑怎么办。。。下面我们就对比一下各种远程开关机的方法和优劣。

一、远程开机的原理

远程开机的原理一般有以下几种

1.WOL网络唤醒

WOL, Wake on Lan的简称,顾名思义就是利用网络唤醒。它是利用一种特定格式的网络幻象包(Magic Packet)进行广播发送,发送的时候有指定电脑的mac地址信息,相应mac地址的电脑网卡收到指定的信息后就会被唤醒。它是在局域网内向广域地址 x.x.x.255 的7或者9端口发送格式是 FF FF FF FF FF FF FF + MAC 地址 × 16 + 4-6字节的密码(可空),前提是目标电脑的网卡支持WOL,且系统已经设置成允许网络幻想包唤醒。网上有一些网络唤醒的软件或工具可以在局域网内进行远程唤醒,可以利用这些软件进行测试,甚至利用发送指令的规律我们可以直接通过网络调试助手来进行测试。发送指令内容和设置如下图:

要让电脑支持网络唤醒,首先需要网卡支持网络唤醒,近十年内的电脑一般都是支持的。其次是要在电脑bios设置里开启网络唤醒。电脑的bios设置根据主板而异,可以在网上搜索以下相应主板的设置方法,一般都是在电源下的Wake on Lan选项打开即可。

bios网络唤醒设置

设置好bios后在系统网卡设置中打开网络唤醒。

2.电脑上电自动启动

这种远程开机也是利用主板的功能,一般的主板都自带上电启动功能,就是当电源重新恢复时可以自动开机。利用这一点可以控制插座的开关,打开插座电源就可以自动开机了。这种方法同样需要在bios中打开上电开机设置。

3.远程模拟电脑开机键

这种方法是属于硬启动的方法,利用继电器或远程开关直接接到电脑的开机电源信号线上,然后模拟电脑的开机按键进行远程开机。

二.各种远程开机的方法对比

1.智能插座远程开机

天猫精选

Sunflower 向日葵 C1 智能插座69元起

实时价格17小时前已更新

去购买天猫精选

MIJIA 米家 ZNCZ06CM 智能插座 蓝牙网关版 白色(含双口USB2.0A)39元

实时价格17小时前已更新

去购买

这类智能插座的原理都是上电开机,远程控制wifi插座开关后就可以唤醒电脑。这种方法的成本一般在40元左右。

2.向日葵开机棒

向日葵的开机棒利用的是内网wol唤醒,只需要把开机棒用网线连接到同一局域网下就可以实现远程开机。连上后按照说明书打开bios的网络唤醒,然后在向日葵的官网上绑定要开机的mac地址即可。这种方法的成本大约在80元左右。

天猫精选

花生棒花生壳内网穿透NAT ngrok公网IP端口映射内网穿透神器NAS伴侣微信测试frp办公SVN建站DDNS88元起

实时价格17小时前已更新

去购买

3.利用ESP8266WIFI模块DIY远程开机棒

这种方法才是今天要介绍的重点。ESP8266是一个wifi控制的模块,在局域网中可以发送一些指令或控制继电器。

blinker点灯科技的app可以绑定esp8266模块实现远程控制。这样我们就可以利用点灯科技的app远程让ESP8266发送控制电脑的指令,可以直接发送网络幻像包利用wol启动电脑,也可以利用继电器控制电脑的电源插座开关或者模拟电脑的开机键。

esp8266的价格淘宝上价格在8元左右,加上烧录器也只需要15元,因此这种方法的成本非常低。也有和它配套的继电器模块,二者组合就可以DIY一个智能插座。

淘宝精选

ESP8266串口WIFI无线模块WIF收发无线模块ESP-01ESP-01S4.2元去购买

下面介绍以下用ESP8266DIY开机棒的过程。

所需材料:ESP8266-01,usb转串口下载器,arduino IDE客户端

1.下载安装arduino ide客户端并安装esp8266的SDK

因为网络原因可能在ide中直接安装不了8266的sdk,这里转贴一个安装的方法

Arduino IDE安装esp8266 SDK(Windows10)

2.安装点灯科技的sdk

点灯科技的官方教程

库下载地址:点击下载

下载后解压到我的电脑-文档-arduino-libraries目录下就可以了

3.安装点灯科技app blinker

安装好后注册账户并登录。

添加设备,选择arduino设备,用wifi接入,添加后获得一个Secret Key,记下这个Secret Key,返回设备列表后就多了一个新建的设备。

点进去之后点右上角编辑 添加按键,编辑按键的文本名并记下来数据键名。

4.打开arduino ide写入以下代码。

替换刚才获得的Secret Key,要控制电脑的mac地址,控制电脑的网段地址,填入wifi账号和密码。

#define BLINKER_WIFI
#include <Blinker.h>
#include <WiFiUDP.h>
#include <ESP8266Ping.h>

char auth[] = "xxxxxxxx";//app中获取到的Secret Key(密钥)
char ssid[] = "";//填入wifi账号
char pswd[] = "";//填入wifi密码
byte mac1[] = {0x40, 0xB8, 0x76, 0xA8, 0x38, 0xA6};//唤醒目标电脑的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("btn-abc");//注意:内容替换为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 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);

}
void loop() 
{
Blinker.run();
}

5.编译上传程序

把esp8266模块插入烧录器中,插入电脑的usb口,右键单击电脑设备管理,查看设备用的com口。

在arduino程序中点击工具,开发板,选择8266,端口选择模块占用的com口。

选择好后点击项目,上传就可以把程序进行编译并上传到esp8266中。等程序上传结束后就可以打开app进行测试了。调试过程中可以利用串口助手和网络调试助手检测是否发送了信息。远程开机的前提条件是已经打开了主板wol功能,利用网络调试助手可以进行远程开机。调试正常后出门在外想要打开家里的电脑只需要在点灯blinker的app里按一下开机键就可以了。

点灯科技的接口还支持接入小爱同学、天猫精灵智能音箱,所以把程序稍加改动也可以实现用智能音箱语言控制开机。

远程开机后就可以利用teamviewer、向日葵或者windows自带的远程桌面进行远程控制了,远程关机的办法一般就是连接远程桌面后直接关机,或者也可以用qq机器人脚本实现qq消息自动关机。

利用酷Q机器人远程控制服务器的方法

(0)

相关推荐