电脑死机也能救!抬手一按强制重启|Apple Watch + Home Assistant + ESPHome
开篇
哈喽,大家好呀!上一期呢,我们已经实现了完整的网络唤醒来启动电脑了。
不过还留下一个大坑,那就是如何在实现电脑开关机的前提之下呢,还能让它在死机的情况下,强制的关机。或者再进一步,在关机之后呢,还能让他自动的启动电脑。
那我们这一期呢,通过它来看看怎么实现的吧。
第一步 准备材料
在上一期,我们知道了如何通过手表来通过网络唤醒的方式来启动电脑。里面有一些步骤这次还会用到,如果还没来得及看的小伙伴呢,可以来看看这里。
这一次可能就要稍微费点事了,要准备下面装备呢,来实现我们的功能。
首先呢,就是这个ESP-01S继电器模块,它分了两个部分:一个呢是底下这个继电器的底板,另一个呢就是插在它上面的这个esp01s模块了。要买01S而不是01,它是01的升级版。
然后就是ESP-01S的烧录器,这个在我们第一次烧录的要使用,之后就完全可以通过wifi来往上写东西了。
然后是就是电脑1分2的开机线,这个用来将这个模块和电脑原来的开机键组合在一起,连接到电脑主板的开机跳线上。说实话,这个我也没有现成的,你看到的这根是我自己做的。在后面我会教你怎么来制作。要用到的具体材料清单呢,我会放在简介里。
还有呢就是一些延长线,这个就是从继电器模块到这个1分2的线之间,如果差了一点的话,可以买一些公对母的杜邦线来将他们连接起来。
而这个手机充电线是给这个模块供电用的,之后呢我们要对他加工一下。如果你的电源插排带usb充电的话,可以将这一头连接到电源的插排上,否则就要再准备一个充电头给他供电了。不过它的消耗非常小,可能一年也用不了几度电。
除此之外呢,上一次说到的home assistant,它可以直接接入一些它所认识的组件,那怎么让它来认识这个硬件呢?所以这一次呢,就要请一个新的帮手来作为中介,让他们彼此了解,那就是ESPHome。
它就像给模块办理了一次‘入网手续’,办完以后基本上就不用再打开它,平时我们还是只用Home Assistant来控制它。
那关于ESPHome的安装呢,要是你的Home Assistant是HAOS的话,你可以去他的“加载项商店”去下载安装。其他的方式呢,可能就要动用docker来安装了。对于安装这一部分都是一些固定的流程,比较枯燥,网上有很多的教程可以去参考。
第二步 粘贴配置
首先呢,我们用chrome或者是edge浏览器来打开这个esphome。如果是mac的用户,千万不要用safari,因为在后面往这个模块里写固件的时候,Safari是不支持的。
首先,我们的固件大部分都是通过wifi来控制他们的,所以要先把wifi的账号和密码填入到设置里去。
点击右上角的这3个点,选择第二个“密钥”。进来以后,在wifi_ssid的右边填写你家里的wifi名称。注意,这里只能填写家里2.4G的频段,5G是不支持的!下面呢,在wifi_password的右边填写当前wifi的密码。完成之后呢,点击右下角的“保存”。
然后回到首页,因为是新建的容器,里面还没有设备,可以点击这个左上角的“添加新设备”,然后点击这个“创建新项目”。
哦~这打开的界面东西还真不少,不过中间的这个“精选”不用管他。我们在上面的搜索框里输入ESP-01。
搜出来的结果呢,第一个不要选,虽然看起来和我们准备的模块是一模一样,但是它是给灯的开关用的,按了呢不会自己弹回来,不适合我们这一次给电脑开机键使用。所以我们选择第二个,后面带1M的这个,点击选项中右下角的这个“选择”。
这里呢给他命名,可以是中文,比如说:电脑开关机。然后下面的主机名呢,只能是小写的英文字母、数字或者连字符,比如说pc-switch。完成后点击“完成设置”。
感觉来到了一个东西更多的页面,不过没关系,左边和中间的东西呢,都是来帮助你生成右边的最终代码的。代码呢,我也给你准备好了,放在了google Drive里了,链接请在简介里查看。
首先,我们打开这个“02 – 手表开电脑 – 继电器”下面的pc-switch.yaml.txt文件。文件末尾的.txt是为了在网盘里能直接预览。这里的配置文件,都是以yaml结尾的,我这里为了防止网盘非要下载才能看到里面的内容,所以才在最后加了txt扩展名。
这里面呢,就能看到我分别模拟了3种场景:那就是短按的开机或者正常关机。那关于当前电脑的状态呢,这里要再挖一个坑,那以后有时间的话,我会把很多的小功能呢,用几个视频来一个个的分别介绍。
这里的“正常关机”呢,要在windows里设置一个东西,我们稍后会说。然后就是长按:强制关机。最后呢,就是这个强制重启了:也就是先强制关机,等一会儿,然后再开机。这样的话,就不用你再折腾一次去连接那个重启的跳线了。
但是,这里要注意一下,后面这两个功能呢,相当于直接拔电源,没保存的东西会丢,所以只能在死机这种迫不得已的时候去使用。另外,为了防止误触,上一期提到的那个‘需要确认’的选项,在这里就派上了用场。
我们只要把这个代码中标着“从这里开始复制”一直到结尾,按ctrl+c,然后来到刚才创建的页面,在最右边的那个大的输入框里,找到captive_portal:这一行,在它的后边贴着边粘贴过来就可以了。然后点击右下角的‘保存’。
那这样的话,我们的代码部分就彻底完成啦!
第三步 烧录
代码写好之后,就是怎么把它部署到这个模块上去。第一次呢比较麻烦,因为里面装的是厂家自己的程序,里面还没有你的wifi信息,所以呢我们要靠这个烧录器呢,将代码写到模块上去。
我们先把这个esp01s从底座上拔下来,然后这个样子呢,插到这个烧录器上,然后将烧录器插到电脑上。
那我们回到esphome的页面,点击这个刚刚创建的这个设备的右下角的这三个点,点击第二个“安装”。新打开的界面呢,这第一项“通过网络”呢,就是以后每次更新完代码,可以使用wifi来无线部署的按钮;第二个“插入此电脑”,就是这一次我们要用的,使用这个烧录器将代码部署到模块上的按钮;而第三个“插入运行ESPHome设备构建器的电脑”,这个就是说如果烧录器插在运行ESPHome的那台服务器上,我们才会选择这个。这一次我们是插在自己的电脑上,所以用不着这个。
那我们点击第二个“插入此电脑”。第一次编译呢,它要等几分钟,我们稍等一下……等彻底完成之后呢,就会看到上面有一个绿色的对勾,我们点击右下角的“打开usb闪存器”。
他会打开一个新的页面,点击这个页面左下角的“connect & install”,在弹出的界面呢,我们就能看到插在电脑上的这个模块了。选择这个名字带USB的那个,像Bluetooth这种蓝牙的不用管。要是分不清,就把烧录器拔下来再对比一下,哪个消失了哪个就是它。
那要是连一个带USB的都没有,多半是缺驱动,看一下烧录器上最大的这颗芯片上面印的字:例如2102、2104这种数字的,就搜CP210几驱动;那如果印着CH340的,就搜CH340驱动。搜一下驱动安装上去就好了。
然后呢点击左下角的“connect”,这个时候你从这个窗口中就能看到开始往模块里写固件了。等到进度到了100%之后呢,会打开一个新的页面,此时他会将现在这个模块里的所有的活动一一展示。
但是如果它提示:Probe Request Unsuccessful或者是No networks found,那就有可能是你的WiFi信息有问题、或者是错选了5G、再或者就是离路由器太远了。如果是wifi信息错误的话,那就要去看看你之前在首页设置的密钥对不对了。修改之后,还是上面的步骤再来一次就可以了。
成功之后,我们会看到一些信息。最重要的一点,在这里能看到它的ip地址,例如我这里是:IP Address: 192.168.82.177。这个IP地址呢要记下来,后面可能会用到。那到这个时候,模块的固件就算写入成功了。
现在呢我们可以把这个esp01s从烧录器上拔下来,插回到原来继电器底座上去。那到这一步呢,我们这个继电器模块的‘入网手续’呢也就算是完成啦!
第四步 供电
之后呢,就是看看怎么给他供电了。我们找一根不用的手机充电线,将连接手机的这一端剪掉,然后看看里面线的数量。
如果是4根线呢,里面白色和绿色的线是数据线,我们用不上,可以把它们剪短,做绝缘处理,别碰到就好。剩下的两根呢,红色的是正极,把它拧到这个模块的vcc这个端口上;黑色的是负极,把它拧到gnd这个端口上。如果是两根线的话,那就简单了,颜色和上面的接法一样。
那如果剪开发现颜色对不上的话,要么用万用表测试一下,要么呢直接换一根就好,反正都是不用的旧线。但是要注意啊,千万不要接反,否则就有可能把模块给烧坏了。
完成之后,USB这一头,可以把它插到我们插排的充电口上,或者随便找一个手机的充电头给他供电,他的功率很小。如果看到模块上的灯闪一下,并且听到了继电器也响了一下,那就说明供电没有问题了。
我们再回到ESPHome的首页,如果看到这个设备显示的是绿色的在线状态,就说明它已经成功的连接到家里的WiFi了。
第五步 接入HA
之后呢,就是怎么把这个模块接入到我们的home assistant。首先打开home assistant页面,点击左下角的“设置”,选择“设备与服务”。这里面呢,你就能看到左上角有一个“已发现”的分类,卡片里写的就是我们这次添加的“电脑开关机(pc-switch)”。
那如果没看到的话,就点右下角的“添加集成”,搜索ESPHome,在“主机”这一栏填上刚才记下的IP地址,端口保持默认的6053,点“提交”,后面的步骤就都一样了。
我们点击卡片里的“添加”,弹出的页面我们点击“提交”。这里他会向你要“加密密钥”,这个在哪里找呢?我们回到esphome的首页,在设备的卡片里点击这个“编辑”,右边就是刚才我们写代码的这个区域,里面有一个api: encryption: key:,后面是一串点,点击它。然后在中间的Encryption key下面的输入框里就是密钥了,点击右边这个眼睛,就可以看到密钥了,我们复制它。然后回到home assistant页面,将这个密钥填入,点“确定”。
之后呢,就到了这个“命名和分配”区域了。我们可以下面这个区域里选择或者创建我们的电脑放在哪里,比如说客厅,没有就新建一个。
现在打开的这个页面呢,终于看到了这个开机模块出现在了home assistant的界面里了。并且在“控制”卡片里,还能看到刚刚我们创建的3个动作,分别是:PC Force off,就是强制关机;PC Force Restart,是强制重启;和PC power button,就是正常的开关机了。
我们可以分别来点击右边的“按下”,来看看继电器都在做什么动作。趁现在还没有连接电脑,随便试一下都没有关系。
第六步 接电脑
当模块准备好之后呢,就是怎么将它接入我们的电脑了。首先呢,拿出准备好的1分2的线来接入电脑。如果还没有的话,这里教你怎么来简单的制作。
先准备4根连在一起的公对母杜邦线,可以稍微长一点,方便做好以后的收纳。我们先处理最左边的两根,用打火机先把靠近母头的这一段烧一下,然后趁热用纸垫着一捏一拉,把皮撸下来,露出里面的铜丝。两根都弄好以后,把露出来的铜丝相互缠在一起,让它们充分接触。
买的那个1分2的线呢,就是一个母头对2个公头,所以我们现在做的这个多了一个母头,贴着缠线的地方把左边这根剪掉就好。有万用表的话,顺手测一下看看通不通。然后套上热缩管,把它推到缠线的地方把那盖住,用打火机烧一下让它缩紧,这样呢左边这组就做好了。
右边的两根也是同样的方法,只是在剪线的时候,将右边那个母头剪掉。最后用热缩管把两个母头的根部固定在一起,这样往主板上插的时候会更方便。
接下来固定公头,这里要特别注意:插机箱开关线的那两个公头,必须左边那组出一根、然后右边那组出一根,比如中间的2和3,也就是黄色和绿色呢,把它们的根部用热缩管固定在一起。剩下的1和4,它们要分开接到继电器上,就不用固定了。千万别把同一组的两根配成一对,比如1和2,那样等于自己接自己,按钮就没用了。
那这样,1分2的线就做好了,是不是和买的那个很像!
然后呢要将电脑关机,将电源插头拔掉,打开机箱。我这块是微星主板,上面印的是JFP1,其他的牌子可能叫法不一样,就试着找印着PWR SW或POWER的那两根就对了。通常都是在主板的边角上,你也可以从主板说明书上去找找相关的信息。
然后将他们从主板上拔下来,将这根1分2的线的1的这一头呢,将它2根母头插到主板原来插开关的那两根针上,这个不分正负极,怎么插都行。1分2分出来的2份线呢,1份把电源键原来那两根线插上去,另一份就接到我们这个继电器模块的com口和NO口上,然后拧紧螺丝。
但是一定要注意,千万不要接到NC口上,那相当于一直按着电源键不放,电脑就会不断的启启停停。
然后可以找个塑料盒子,将这个模块放到里面,因为继电器底板的背面全都是焊点,碰到机箱的金属就会短路。如果你的机箱外壳是金属的话,它会挡住WiFi信号,所以就只能把这个盒子放到机箱的外面,线从机箱后面的缝隙里穿出来就好;否则就可以在机箱里面找一个不碍事的地方粘在那里就好。完成以后,合上机箱,把电源插回去。
有一点要注意,模块的USB线别插在电脑自己的USB口上。因为一关机,那就没电了,模块也就不能帮你开机了。这样呢,我们最麻烦的一步也就完成了。
线接好以后,开机就没问题了。那电脑开着的时候,如果让模块来帮你按一下开关键,能不能让它安全地关机呢?当然可以的。其实windows里有一个设置,叫“按电源按钮时”,有的电脑它这里默认是“睡眠”或者是“不采取任何操作”,所以我们确认一下,将它改为“关机”就可以了。
我们右键左下角的这个windows图标,选择“电源选项”,在打开的界面上点击右上角的“其他电源设置”,新开的界面点击左边的第一个“选择电源按钮的功能”。那在这里呢,将“按电源按钮时”改为“关机”就可以了。如果无法选择,就点击上面的“更改当前不可用的设置”,之后就可以去修改了。最后一定别忘了点击下面的“保存修改”按钮。
那这样的话,在电脑开机的情况下,在Home Assistant里面,点一下“PC Power Button”右的“按下”,就是安全关机了。
第七步 上手表
经过以上的步骤呢,终于可以把它接入到我们的手表里了。不过呢要先在手机里简单的设置一下,然后同步之后手表就能看到了。
我们在打开手机上的home assistant,点击左上角的三条横线,点击左下角的“设置”,在新开的界面找到“companion应用”点击它。往下滑,找到“apple watch & carplay”,点击第一个“手表配置”,点击“项目”标签下的“添加项目”,点击“实体”。在新打开的页面下拉刷新,应该就搜到我们刚刚添加的3个按钮了。
如果还是没有看到的话,那就要去“Companion应用”下面的“服务器”这一栏,点击你的服务器,看一下‘连接安全级别’。因为我们现在,用的是http这种普通地址,选‘最安全’的时候,App要先通过WiFi的名称,来确认你是否是在家的状态,之后呢才会让你连接,如果判断不出来呢,它就不会让你连接服务器了。所以在家里使用的时候,就要把这里改为‘低安全’就好。如果你的Home Assistant开放到了外网,那就别这么做了。
之后再回到添加项目,下拉刷新以后,在输入框搜“pc”,现在就能看到刚刚添加的实体了。我们将这三个选中,点击下面的“add 3”,它会回到刚才的页面,在这里你就能看到这3个按钮。图标呢,在之前复制的代码里,都已经包含了。
那我们依次点击每个按钮,给它们改成中文的名称,比如第一个改为“电脑开关机”,完成后点击右上角的“保存”。然后我快速地将第二个和第三个分别改为“强制关机”和“强制重启”。对了,后面这两个呢,别忘了将“需要确认”打开,防止不小心手滑碰到手表上的按钮了。
保存之后,在界面里就可以看到它们的中文名称了,然后点击右上角的“保存”,回到了“companion应用”页面。
这个时候,我们打开手表上的home assistant,不过先确认手机上的app是开着的。然后点击一下左上角的“刷新”,之后呢,就可以在手表上看到这3个按钮了。我来分别展示一下他们的效果。
总结
通过这两期呢,我们在手表上已经实现了使用两种方法来控制电脑:上一期的网络唤醒,只能开机;而这一期的继电器,开机、关机都可以了,就算电脑死机了,也能一键强制重启。这期用到的配置文件,链接放在了简介里。
既然说到了继电器,除了开机,还有什么好玩的地方呢?在我准备这期内容的时候,就听到了马达浇水的声音。下一期不就有了么!我们来看看怎么样使用继电器来控制这个抽水马达给花浇水吧。
当然也不会那么简单,不只是定时浇水,还要让他能看土壤的湿度,决定该不该浇水;花渴了,还会主动的向你“求救”。怎么样,很有意思吧!
另外,你还想使用继电器来控制家里的什么东西?请在评论区里告诉我。觉得有用的话,可以点个赞、订阅一下,下期的更新就不会错过了。那我们下一期再见啦!