快捷导航
 
捡垃圾 篇二:天猫精灵?实现?电脑开机 (使用 uhttp cgi webhook_智能家居
VIEW CONTENTS

捡垃圾 篇二:天猫精灵?实现?电脑开机 (使用 uhttp cgi webhook_智能家居

2021-6-15 16:12| 发布者: xtyly| 查看: 206| 评论: 0
摘要: 0、前言搬砖回家一天之后还要手动开电脑,这对打工人一点也不友好,有没有能够躺着就把事情办了的方法呢,看到显示器下面的吃灰很久的天猫精灵,想如果能用语

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




Tab标签:

鲜花

握手

雷人

路过

鸡蛋

最新评论

推荐快讯更多

乐居居-让生活更智能!

  • 反馈建议:153890879@qq.com
  • 客服电话:
  • 工作时间:周一到周五

云服务支持

精彩文章,快速检索

关注我们

Copyright乐居居  Powered by©  备案号:湘ICP备15009499号-1