MENU

使用ifttt和Google Home/ Amazon Alexa实现远程开机

2019 年 10 月 02 日 • 阅读: 22 • 技术,分享,教程阅读设置

半年前灯板挡着,主板和机箱的连接线掉了下来,导致机箱上的功能按键失效,所以做出了这个方法。现在已经稳定运行了超过半年,拿出来分享一下。分为三个部分,第一个是实现主机Wake on Lan功能,第二是做到有设备能发出WOL魔术包,第三是发起魔术包的触发器。

Wake on Lan

主板设置

在主板中需要启用PCI-E端口唤醒电源的设置,在ROG Strix X570-E中,这一设置的位置是:

  • Advanced

    • AdvancedAPM Configuration

      • Power on By PCI-E => Enable

系统设置

图1

  • 设备管理器中找到需要使用的网络适配器,打开属性,电源管理板块,选中全部三个选项,允许魔术包唤醒设备

图2

图3

图4

  • 进入高级设置板块,将“唤醒魔包”、“启用PME”设置为启用,“节能以太网”设置为关闭

图5

  • 关闭适配器设置和设备管理器。打开控制面板,电源选项,系统设置。选中一个电源计划,点击“改变计划设置”

图6

  • 以管理员身份改变设置,关闭快速启动

发送魔术包

考虑到我们实际上是需要从公网发起唤醒命令,所以直接使用手中设备发送魔术包是不现实的。发送魔术包的设备是一个既可以接受另一指令又能发送魔术包的设备。在这情景下,运行Web的设备会是一个值得考虑的选择,在Stack Overflow中找到了一个很简单且有效的代码。只有一个文件,直接部署在局域网内的一个设备,我是跑在了我的NAS上。代码量很少,不需要什么性能,只要能稳定运行,拿个树莓派也可以。

<?php
$mymac = $_REQUEST['mymac'];
wol("255.255.255.255", $mymac);
echo 'WOL sent to '.$mymac;

function wol($broadcast, $mac){
$mac_array = preg_split('#:#', $mac); //print_r($mac_array);
$hwaddr = '';
    foreach($mac_array AS $octet){
    $hwaddr .= chr(hexdec($octet));
    }
    //Magic Packet
    $packet = '';
    for ($i = 1; $i <= 6; $i++){
    $packet .= chr(255);
    }
    for ($i = 1; $i <= 16; $i++){
    $packet .= $hwaddr;
    }
    //set up socket
    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    if ($sock){
    $options = socket_set_option($sock, 1, 6, true);
        if ($options >=0){    
        $e = socket_sendto($sock, $packet, strlen($packet), 0, $broadcast, 7);
        socket_close($sock);
        }    
    }
}  //end function wol
?>

在原文中,作者还使用了一个HTML文件。如果你有多个需要WOL的设备,使用两个文件可以很方便地唤醒设备,如果只需要唤醒一个设备,一个PHP文件就足够了。唤醒方式为以被唤醒设备MAC为参数调用PHP程序,比如说

http://192.168.1.1/WOL.php?mymac=00:00:00:00:00:00

之后将这个设备的端口以你自己可以做到的方式映射到公网,注意设置为不常用端口以避免被扫描和攻击。

ifttt配合Google Home/Amazon Alexa发起WOL

  1. 在ifttt中启用你的Google Assistant/ Amazon Alexa服务并绑定你的帐号。下面的教程以Google为例。
  2. 启用webhooks服务
  3. 创建一个"if...then..."程序
  4. if设置为"Say a simple phrase"
  5. 在"What do you want to say?"中设备你发起的指令
  6. 在"What do you want the Assistant to say in response?"中设置Google Assistant的回应话语
  7. then设置为"Make a web request"
  8. 链接设置为你的公网链接,方法为GET,比如说
https://google.com:599/WOL.php?mymac=00:00:00:00:00:00
  1. 最终设置如下

final

返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码