捡垃圾 篇二:天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

2021-03-28 20:09:53 19点赞 71收藏 23评论

0、前言

搬砖回家一天之后还要手动开电脑,这对打工人一点也不友好,有没有能够躺着就把事情办了的方法呢,看到显示器下面的吃灰很久的天猫精灵,想如果能用语音开机就好了天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

于是开始了百度的搜索的一天,陆续折腾三天才最终稿好了(最起码能用了...天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

网上找的的大多数的方案是买个智能插座,设置主板上电自动开机,这看上去一点也不高端,反正我不太能接受这个方案,翻腾半天 最终参考这个帖子实现了语音 在此感谢H大!

帖子中提到的用caddy http 服务器,我折腾了两天也没有弄好,主要是当时博主用的是caddy v1 的版本,现在已经更新到v2 了,进行了大改版,导致我们要用的 cgi 插件不支持了,捣鼓好久最终放弃。

通过搜索发现openwrt 自带的 uhttpd 就是支持简单的 cgi 功能的,于是查找相关的资料就用这个来简单的实现一下吧。

参考的帖子主要有:

xuebuyuan.com/2170113

blog.chinaunix.net

大概的实现原理应该是通过自定义的天猫精灵技能,识别之后调用自定义的webhook ,而这个webhook 触发在局域网中的路由器脚本,脚本中的wol 命令发送网络唤醒数据包,电脑网卡收到之后就能开机了。

要实现这个方案有三个前提:

1、需要有个可以登录 ssh 的路由器(最好是刷了openwrt 的,其他的系统是否可以没有验证过)

2、家里有公网地址(最好是有自己的域名并且做了ddns),或者能内网穿透应该也行(frp 等)

3、电脑的网卡要支持wol ,并且路由器和这个网卡最好是直连的

这三点我都满足(宽带是北京联通300M 公网地址),路由器还是之前捡垃圾来的那个小娱C5 (之前用来折腾hass了,结果也是玩两天就再也没有用过)

首先需要登录阿里的开发平台(成为开发者需要实名身份证认证,如果对此介意的话可以不用往下看了):

1、路由器配置

登录路由器,在路由器的这个目录下面创建一个cgi shell文件shell 脚本: tmall_wol.sh

root@OpenWrt:/www/cgi-bin# touch tmall_wol.sh

然后脚本内容大概为:

简单的唤醒脚本简单的唤醒脚本

脚本解释:

#其中 wol 命令也可以换成 etherwake ,这个可以看自己的路由器上面是哪个命令,根据自己的具体情况去修改就行了

#!/bin/sh

# touch ok 此为测试 webhook是否正常的调用到我们本地路由器的这个脚本的命令,如果能正确调用后会再 www/ 目录下创建一个名字为 ok 的空文件

#下面的命令是路由器上执行唤醒主机的命令,注意把mac 地址换成自己电脑的

/usr/bin/wol -v "34:97:F6:11:22:33"

最后需要给这个文件执行权限:

root@OpenWrt:/www/cgi-bin# chmod +x tmall_wol.sh

脚本完成之后可以先手动测试这个脚本是否能正常开机,同时检查电脑的网卡配置是否正确:

电脑的网卡配置要能够支持 wol电脑的网卡配置要能够支持 wol

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

2、创建语音技能

创建语音技能的开发文档可以参考 :www.aligenie.com

创建一个新技能创建一个新技能

创建实体创建实体

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

输入实体,中间用空格间隔 之后回车输入实体,中间用空格间隔 之后回车

创建意图创建意图

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

如果提示 报存失败,原因:未正确获取到认证文件,那说明是你的路由器那端没有搞正确,证书文一定要放到路由器的正确的位置才行!

请参考官方文档进行定位

如果提示 保存失败,原因:服务器遇到点状况,正在修复~

我一开始也是遇到这个问题,找了半天原因是因为我的URL中的端口填写错误了,因为我的这个路由器是在二级路由的位置,外网访问是做了端口映射的,所以要填写正确的端口(但是很奇怪的是上面的步骤填写错了端口不报错,不知道是为啥)

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

弄完上面的webhook 应该就可以上真机测试了,通过绑定账号的天猫精灵 直接喊“ 天猫精灵,打开电脑”不出意外的话就能唤醒开机了

天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

理论上用天猫精灵关闭电脑也是可以实现的,需要再电脑端安装个python ,然后写个脚本,通过精灵的webhook 触发电脑上面的脚本,执行关机命令就行了,原理是类似的。

现在存在的问题是有安全隐患,因为现在是没有任何认证机制,直接执行这个cgi shell 就可以触发开机动作,其实应该加个认证保护机制的,暂时懒得搞了,先这样吧。。。

最终实现了躺着就可以唤醒电脑了天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook 天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

总结

最终算是能解放双手通过语音控制打开电脑,虽然不是很完美但是目前使用了十几天,没有啥大毛病,以后有时间了在折腾其他功能(其实大概率是不会搞的啦天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook 天猫精灵 实现 电脑开机 (使用 uhttp cgi webhook

展开 收起

天猫精灵 智能语音红外三代遥控器 语音控制家居家电空调洗衣机冰箱 黑色

天猫精灵 智能语音红外三代遥控器 语音控制家居家电空调洗衣机冰箱 黑色

49元起

天猫精灵 智能语音红外遥控器 语音控制家居家电空调洗衣机冰箱 二代 黑色

天猫精灵 智能语音红外遥控器 语音控制家居家电空调洗衣机冰箱 二代 黑色

69元起

智能插座

智能插座

18.9元起

TMALL GENIE 天猫精灵 无线按钮 按呗智能无线按钮

TMALL GENIE 天猫精灵 无线按钮 按呗智能无线按钮

暂无报价

天猫精灵 红外遥控智能语音手机控制家电电视空调灯泡插座四件套

天猫精灵 红外遥控智能语音手机控制家电电视空调灯泡插座四件套

19.8元起

TMALL GENIE 天猫精灵 TG_P1 智能家居 多功能无线按钮 白色

TMALL GENIE 天猫精灵 TG_P1 智能家居 多功能无线按钮 白色

暂无报价

天猫精灵全能语音红外遥控器语音控制家居遥控

天猫精灵全能语音红外遥控器语音控制家居遥控

暂无报价

TMALL GENIE 天猫精灵 智能控制盒 (白)

TMALL GENIE 天猫精灵 智能控制盒 (白)

暂无报价

天猫精灵喵控智能音响 语音管家 红外遥控器 声控制家电 手机远程开关空调电视电风扇洗衣机智能遥控器 红外遥控器【USB插电版】

天猫精灵喵控智能音响 语音管家 红外遥控器 声控制家电 手机远程开关空调电视电风扇洗衣机智能遥控器 红外遥控器【USB插电版】

29元起

TMALL GENIE 天猫精灵 智能插座套装

TMALL GENIE 天猫精灵 智能插座套装

暂无报价

鸿雁智能插座

鸿雁智能插座

11.9元起

乐天派 人体存在传感器居基础感应控制Matter双生态多平台Mijia IOS Homekit六种数据探测 传感器

乐天派 人体存在传感器居基础感应控制Matter双生态多平台Mijia IOS Homekit六种数据探测 传感器

259元起

MIJIA 米家 MJYDOAYL 自动感应夜灯 白色

MIJIA 米家 MJYDOAYL 自动感应夜灯 白色

16.9元起

Xiaomi 小米 DMWG03LM 智能多模网关2 白色

Xiaomi 小米 DMWG03LM 智能多模网关2 白色

181.8元起

Xiaomi 小米 ZSWG01CM 智能中枢网关 黑色

Xiaomi 小米 ZSWG01CM 智能中枢网关 黑色

191.79元起

京东京造 TH1 时钟温湿度计 白色

京东京造 TH1 时钟温湿度计 白色

29.9元起
23评论

  • 精彩
  • 最新
  • 太复杂了,你只需要一个小爱音箱和一个小米智能插座。

    校验提示文案

    提交
    文章开头说了,我觉得这样不够“高端” [欢呼] [欢呼] [欢呼]

    校验提示文案

    提交
    如果是不支持来电自启动主板。。。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 通过网络激活电脑?

    校验提示文案

    提交
    wol 网络唤醒

    校验提示文案

    提交
    对对对,网络唤醒。。。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 有一种东西叫睡眠,动动鼠标就可以唤醒

    校验提示文案

    提交
    哈哈,我一直没习惯用睡眠功能

    校验提示文案

    提交
    休眠也不错,断电都不怕

    校验提示文案

    提交
    收起所有回复
  • 好多路径都不一样了,可否重新更新一篇?谢谢。

    校验提示文案

    提交
    我已经路由器都卖了,也没公网地址了,你只能自己摸索一下了 [害羞]

    校验提示文案

    提交
    收起所有回复
  • 那啥,先膜拜技术大佬 [期待]
    我还是继续每天低头按开关吧

    校验提示文案

    提交
  • 之前尝试过配置网络唤醒,结果失败了。现在想来可能是没有调整网卡配置 [喜极而泣]

    校验提示文案

    提交
    我也是前几天刚折腾好,hp的准系统设置好后要重新插拔下电源才生效,unraid需要每次关机加入一条指令才能下次wol启动,总之要仔细阅读官方文档...

    校验提示文案

    提交
    收起所有回复
  • 没意义,配个继电器控制开机针脚更简单

    校验提示文案

    提交
  • 楼主你好,我看的有点稀里糊涂的,是否方便录制一个视频操作讲解一下呢。我把wol.sh文件放置在了我的群晖web station上,链接也填写到了开发者平台上,但是还是无法通过语音开启电脑。

    校验提示文案

    提交
    群晖的web station 是网页/网站平台。wol需要调用的是路由器系统(linux)下的网络唤醒功能。所以你的web station本地是没有“/usr/bin/”这个路径,以及“wol”这个程序的。所以你还是需要将sh文件放在能被外网访问到的openwrt路由的www/cgi-bin路径中。我不确定群晖web station是否可以执行linux程序,如果可以,你可以在web的目录下复刻一套openwrt的程序进去。

    校验提示文案

    提交
    收起所有回复
  • touch OK这个是不是为了返回给天猫做答复。我没有这一行,天猫执行完开机后都会说一句,抱歉,连您的指令都听差了。

    校验提示文案

    提交
    加上了,看到www下的空文件了。天猫的回复还是一不留神,听差了。怎么才能让它说“好的”呢。

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
目录
71
扫一下,分享更方便,购买更轻松