给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫
创作立场声明:为了给大家带来更多更实用的智能家居技巧干货分享,特别新开专栏“跟CT一起玩转全屋智能”,希望大家多多支持。
哈喽,艾瑞巴蒂。我是你们的智能家居领路人CT。非常高兴时隔数月终于再次更新本专栏,这主要是因为家里的翻新装修终于结束,这周已经开始陆续的整理工作,为打回老家做准备了。同时期进行的就是全屋智能家居的设定了,而这次部署的智能家居系统我则是抛弃了之前使用多年的domoitcz转向使用Home Assitant搭配APP DAEMON实现自动化,在语音控制上则是全屋部署了Homepod搭配Home APP来实现。
而这次带给大家的是一个非常简单的应用,就是将小米(石头)扫地机器人接入HA以及HK,并且实现区域控制。这个想法主要是因为这几天在整理过程中,经常整理哪间房间,哪间房间的地板就会弄脏,如果脏了之后不即时清理,脏东西就会随着人的走动带到家里各处,而每次区域打扫都要打开米家APP,找到扫地机,再选择区域,就略显麻烦,所以就决定一劳永逸的给每个房间添上一个对应的清扫开关,这样要打扫餐厅的时候,就只要说一句"hey siri,打开餐厅扫地机”,当然,如果再设置个场景的话,就只要说“hey siri,打扫下餐厅”扫地机就会自己跑出来把餐厅打扫一遍,下面我们来说说具体步骤:
将扫地机接入Home Assitant
首先第一步自然是将扫地机接入Home Assitant,这里使用的官方Miio集成,我们只需要在集成里面搜索MIIO:
然后选择Xiaomi Miio。
按照提示填入自己的用户名,密码等信息:
然后选上我们的扫地机器人,我这里用的是石头T7 pro,提交之后,在HA的集成里就会出现一个扫地机器人的卡片:
点进去就可以看到自动生成的实体:
一般来说,这里我们只需要用到控制扫地机的实体:
这时,你就可以对扫地机进行简单的控制了,例如开始清扫,回充,暂停,定点清扫等以及调整吸尘模式了。相对于之前的YAML配置,新版的HA基本都使用了UI配置,对于小白来说简单了不少。
获取区域ID
这里我们需要在将扫地机器人接入米家完成之后第一次清扫之后,就将家里的区域都划分设置好,我这里是划分了11个区域,并在米家里面命名了。但是HA调用的时候,是不能直接使用名字的,而只能使用每块区域对应的ID号,所以这一步,我们就是获取区域ID,我这使用的集成是gateway3。我们首先需要做的就是在HACS的Integrations里 Explore& Add repository搜索添加XiaomiGateway3,如果没有安装HACS的话,可以先自行安装HACS(安装方式见HACS官网,一条命令的事),或是手动从github上下载最新版的XiaomiGateway3 复制到custom_components目录下重启HA,之后就可以在HA的配置集成里面添加新的gateway3的集成:
之后按照提示选择添加小米云账号:
之后按照提示选择添加小米云账号:
添加完成之后就可以在HA集成页面上找到gateway3的集成,添加自己的小米账号:
然后在gateway3集成上点击进入自己的账号,大家可以看到,gateway3主要功能其实是将米家多模网关接入HA,实现zigbee以及蓝牙子设备的接入。进去之后点击选项,选择对应的扫地机器人:
页面就会显示出扫地机器人的Token以及Room ID,说到这,就引出了gateway3插件的另一妙用就是获取米家设备的Token了。拿到房间ID之后,我们就可以进行下一步——给对应区域添加扫地机开关了。
生成扫地机区域打扫开关
终于,我们还是用到了YAML配置,打开HA的configuration.yaml文件,在switch:里面添加如下代码:
这里的keweisaodiji就是你自己对这个开关的命名,这里不能用中文,而下面的service如果自己不会写,可以在HA的开发者工具服务里通过UI生成:
先选择Xiaomi Miio: Vacuum clean segment服务,然后实体选择扫地机:
最后segments后面填对应的ID:
然后点击进入YAML模式:
直接将生成的代码复制进configuration.yaml的turn_on下,注意空格和缩进。而turn_off的service就是回充Return to base命令,依葫芦画瓢也可以在UI里生成:
进入YAML模式:
然后复制代码填到turn_off下方就好。如果有多个区域,就在configuration.yaml里面添加多个:
只要改名字和segments序号就成。然后重启HA,查找实体,就能找到刚才配置的这些开关了:
点击进去就可以看到我们可以对每个开关进行开关操作了:
这里面大家可能会发现一个问题,就是这里的开关on和off是两个按钮,这是因为我们定义开关的时候没有定义开关状态造成的,当然,该如何定义,作为HA萌新的我并不知道,如果谁知道可以在评论区告诉我,但即使这样也完全不影响我们使用。不过我这里还是做了个进阶设置,就是当扫地机状态为停靠时,所有的区域开关都自动关闭。这里我用的是APP DAEMON,因为这部分设不设只对状态有影响,对使用没影响,我这里就不展开说了,只把代码贴出来供大家参考,首先我做了一个vacuum_auto.py文件:
这里面就定义了扫地机的ID,然后监听扫地机的状态,当状态变化为"docked"的时候,就自动将所有的扫地机都关掉。然后我们在APP.YAML里添加这个module:
这样每次打扫完,APP DAEMON就会重置所有的区域扫地机开关。
将开关接入HomeKit
开关做好了,但是如果每次开都需要点开HA再去开的话,就和米家没啥区别了,所以最后一步,我们就是将它接入Homkit了,这里我们用的也是HA自带的Homekit集成:
这里我们要选择的是Homekit:
然后在要包含的域里选择switch,如果你有更多设备类型要接入Homekit的话可以一并勾选,然后照提示做,将扫地机开关们添加进去:
完成之后就能在通知项里找到配对二维码,手机扫码添加即可:
剩下的Homkit上的重命名,移动房间这里就不多说了。之后你就能享受到语音控制分区打扫的便捷了。





























校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
最后一点不明白的是后面写的开关复位用的两个文件是哪个路径下的啊? 还是需要新建在哪个路径下呢?
还有,可不可以用nodered获取下机器人状态然后复位开关呢,会不会简单点?
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
最后一点不明白的是后面写的开关复位用的两个文件是哪个路径下的啊? 还是需要新建在哪个路径下呢?
还有,可不可以用nodered获取下机器人状态然后复位开关呢,会不会简单点?
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案