给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

2021-12-06 13:18:50 25点赞 242收藏 24评论

创作立场声明:为了给大家带来更多更实用的智能家居技巧干货分享,特别新开专栏“跟CT一起玩转全屋智能”,希望大家多多支持。

哈喽,艾瑞巴蒂。我是你们的智能家居领路人CT。非常高兴时隔数月终于再次更新本专栏,这主要是因为家里的翻新装修终于结束,这周已经开始陆续的整理工作,为打回老家做准备了。同时期进行的就是全屋智能家居的设定了,而这次部署的智能家居系统我则是抛弃了之前使用多年的domoitcz转向使用Home Assitant搭配APP DAEMON实现自动化,在语音控制上则是全屋部署了Homepod搭配Home APP来实现。

而这次带给大家的是一个非常简单的应用,就是将小米(石头扫地机器人接入HA以及HK,并且实现区域控制。这个想法主要是因为这几天在整理过程中,经常整理哪间房间,哪间房间的地板就会弄脏,如果脏了之后不即时清理,脏东西就会随着人的走动带到家里各处,而每次区域打扫都要打开米家APP,找到扫地机,再选择区域,就略显麻烦,所以就决定一劳永逸的给每个房间添上一个对应的清扫开关,这样要打扫餐厅的时候,就只要说一句"hey siri,打开餐厅扫地机”,当然,如果再设置个场景的话,就只要说“hey siri,打扫下餐厅”扫地机就会自己跑出来把餐厅打扫一遍,下面我们来说说具体步骤:

将扫地机接入Home Assitant

首先第一步自然是将扫地机接入Home Assitant,这里使用的官方Miio集成,我们只需要在集成里面搜索MIIO:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

然后选择Xiaomi Miio。

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

按照提示填入自己的用户名,密码等信息:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

然后选上我们的扫地机器人,我这里用的是石头T7 pro,提交之后,在HA的集成里就会出现一个扫地机器人的卡片:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

点进去就可以看到自动生成的实体:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

一般来说,这里我们只需要用到控制扫地机的实体:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

这时,你就可以对扫地机进行简单的控制了,例如开始清扫,回充,暂停,定点清扫等以及调整吸尘模式了。相对于之前的YAML配置,新版的HA基本都使用了UI配置,对于小白来说简单了不少。

获取区域ID

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

这里我们需要在将扫地机器人接入米家完成之后第一次清扫之后,就将家里的区域都划分设置好,我这里是划分了11个区域,并在米家里面命名了。但是HA调用的时候,是不能直接使用名字的,而只能使用每块区域对应的ID号,所以这一步,我们就是获取区域ID,我这使用的集成是gateway3。我们首先需要做的就是在HACS的Integrations里 Explore& Add repository搜索添加XiaomiGateway3,如果没有安装HACS的话,可以先自行安装HACS(安装方式见HACS官网,一条命令的事),或是手动从github上下载最新版的XiaomiGateway3 复制到custom_components目录下重启HA,之后就可以在HA的配置集成里面添加新的gateway3的集成:

之后按照提示选择添加小米云账号:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

之后按照提示选择添加小米云账号:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

添加完成之后就可以在HA集成页面上找到gateway3的集成,添加自己的小米账号:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

然后在gateway3集成上点击进入自己的账号,大家可以看到,gateway3主要功能其实是将米家多模网关接入HA,实现zigbee以及蓝牙子设备的接入。进去之后点击选项,选择对应的扫地机器人:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

页面就会显示出扫地机器人的Token以及Room ID,说到这,就引出了gateway3插件的另一妙用就是获取米家设备的Token了。拿到房间ID之后,我们就可以进行下一步——给对应区域添加扫地机开关了。

生成扫地机区域打扫开关

终于,我们还是用到了YAML配置,打开HA的configuration.yaml文件,在switch:里面添加如下代码:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

这里的keweisaodiji就是你自己对这个开关的命名,这里不能用中文,而下面的service如果自己不会写,可以在HA的开发者工具服务里通过UI生成:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

先选择Xiaomi Miio: Vacuum clean segment服务,然后实体选择扫地机:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

最后segments后面填对应的ID:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

然后点击进入YAML模式:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

直接将生成的代码复制进configuration.yaml的turn_on下,注意空格和缩进。而turn_off的service就是回充Return to base命令,依葫芦画瓢也可以在UI里生成:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

进入YAML模式:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

然后复制代码填到turn_off下方就好。如果有多个区域,就在configuration.yaml里面添加多个:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

只要改名字和segments序号就成。然后重启HA,查找实体,就能找到刚才配置的这些开关了:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

点击进去就可以看到我们可以对每个开关进行开关操作了:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

这里面大家可能会发现一个问题,就是这里的开关on和off是两个按钮,这是因为我们定义开关的时候没有定义开关状态造成的,当然,该如何定义,作为HA萌新的我并不知道,如果谁知道可以在评论区告诉我,但即使这样也完全不影响我们使用。不过我这里还是做了个进阶设置,就是当扫地机状态为停靠时,所有的区域开关都自动关闭。这里我用的是APP DAEMON,因为这部分设不设只对状态有影响,对使用没影响,我这里就不展开说了,只把代码贴出来供大家参考,首先我做了一个vacuum_auto.py文件:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

这里面就定义了扫地机的ID,然后监听扫地机的状态,当状态变化为"docked"的时候,就自动将所有的扫地机都关掉。然后我们在APP.YAML里添加这个module:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

这样每次打扫完,APP DAEMON就会重置所有的区域扫地机开关。

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

将开关接入HomeKit

开关做好了,但是如果每次开都需要点开HA再去开的话,就和米家没啥区别了,所以最后一步,我们就是将它接入Homkit了,这里我们用的也是HA自带的Homekit集成:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

这里我们要选择的是Homekit:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

然后在要包含的域里选择switch,如果你有更多设备类型要接入Homekit的话可以一并勾选,然后照提示做,将扫地机开关们添加进去:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

完成之后就能在通知项里找到配对二维码,手机扫码添加即可:

给每个房间加个扫地机——小米(石头)扫地机接入HOMEKIT实现分区域打扫

剩下的Homkit上的重命名,移动房间这里就不多说了。之后你就能享受到语音控制分区打扫的便捷了。


展开 收起
24评论

  • 精彩
  • 最新
  • 大佬,入个云鲸吧,然后出个把云鲸加入ha的文章吧!相当期待啊….

    校验提示文案

    提交
    我准备入石头G10,然后改成自动上下水。云鲸扫拖要手工换支架,太烦了

    校验提示文案

    提交
    请问有石头G10改造自动上下水的文章么

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 其实HA的文档写的蛮详细的,可以用“value_template”来定义开关的当前状态。看了下你的截图,要不考虑用清扫开始时间结合清扫结束时间来判断,当然如果有其他能直接记录扫地机工作状态的sensor就更好了…

    校验提示文案

    提交
    对,要写状态其实是可以实现的,甚至手机做指定区域清扫都能同步到HA,但是工作量会大上很多,并且没有啥大必要,所以我这边就简单的做了个关的状态自动。这样在HK里面看起来是同步的就成。

    校验提示文案

    提交
    感觉好像都没有必要把扫地机器人加到HA里,想不出有什么实用的联动场景是需要通过HA里实现的

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 米家设备全部接入homekit后,一旦脱离家里WiFi,所有设备都显示未响应是咋回事?

    校验提示文案

    提交
    你需要一个homekit中枢才能实现远程控制,可以是homepod,插着电的ipad,或者appletv

    校验提示文案

    提交
    收起所有回复
  • 分区域这个学习了,可惜我是360扫地机没法接入HA [喜极而泣]

    校验提示文案

    提交
  • 请问一下,获取roomid的时候显示Rooms: Can't get from cloud怎么办?

    校验提示文案

    提交
  • 现在可以换云鲸了,很猛

    校验提示文案

    提交
  • 感谢大佬的教程。
    最后一点不明白的是后面写的开关复位用的两个文件是哪个路径下的啊? 还是需要新建在哪个路径下呢?
    还有,可不可以用nodered获取下机器人状态然后复位开关呢,会不会简单点?

    校验提示文案

    提交
  • APP里面选区清扫,1秒钟就发出指令了

    校验提示文案

    提交
    你没看懂这篇文章的意义所在!

    校验提示文案

    提交
    收起所有回复
  • 这里有大佬把涂鸦平台的地暖温控面板接入HA并且能正常使用的吗,温控面板是heatcold的涂鸦版。

    校验提示文案

    提交
  • 大佬能不能提供下yaml的代码 [观察]

    校验提示文案

    提交
  • 感谢大佬的帖子,已经实现仅扫地某房间。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
相关兴趣推荐
242
扫一下,分享更方便,购买更轻松