Home Assistant -ESP Home接入homekit篇

开发属于自己的HomeKit设备

春节假期的那段时间,自己使用树莓派将小米的智能家具设备和Homekit进行了打通,主要是通过Home Assistant的集成进行实现,奈何资金有限一直没有添更新成员,而且自己想做的一些骚操作市面上能进行实现的产品。这篇文章主要是记录下上上个周末没有去加班抽空出的时间来实现ESP home自定义智能家居设备的过程(偷懒证据)。

ESP Home简介

官网自己看了,主要是通过ESP8266或ESP32实现接入Home Assistant的设备。https://www.esphome.io/

ESP Home安装

  1. 首页->Getting Started->using the command line通过命令行安装ESP Home配置环境。安装ESP Home前需要Python,笔者这里开发环境是Win10。保姆级官方安装教程:https://www.esphome.io/guides/installing_esphome.html
  2. Home Assistant内添加ESP Home集成:进入Home Assistant ->配置->设备与服务->添加集成->ESP Home.

新建一个ESP Home智能家居设备

  1. 新建一个文件夹,用于生成工程。在工程文件夹下打开windows powershell输入

esphome wizard livingroom.yaml

随后按命令行提示进行操作,输入名称或wifi密码、开发板类型等(我这里使用的是nodemcuv2,只是作为一个例子,理论上ESP8266内核和FLASH等资源一样就可以,后续开发会使用单独的模块集成到PCB上)。配置完成后,工程目录会生成livingroom.yaml文件和.esphome文件夹。在这里插入图片描述

  1. livingroom.yaml为我们要修改的文件,后续的开发基本都是围绕这个文件进行的。livingroom.yaml下可以添加我们所需的传感器或者开关节点。一个简单的延时开关节点:
switch:
 - platform: gpio
   id: relay1
   name: "SW1"
   pin: D3
   on_turn_on:
   - delay: 1000ms
   - switch.turn_off: relay1

具体每一行的含义参考Components GPIO swich部分

  1. 我们可以通过yaml的一些语法实现类似自动化的功能,当然也能通过Home Assistant的场景自动化,这里主要是想介绍下这个功能。yaml的判断语法:
  - platform: gpio
   id: relay2
   name: "SW2"
   pin: D2
   on_turn_on:
   - if:
       condition:
         lambda: 'return id(relay1).state;'
       then:
         - switch.turn_on: relay3
         - delay: 1000ms
         - switch.turn_off: relay3
         - switch.turn_off: relay2
       else:
         - switch.turn_off: relay3
         - delay: 500ms
         - switch.turn_off: relay2

更多语法和说明详见:https://www.esphome.io/guides/automations.html

  1. 注意,这里的 api 和 ota 的password一定要填否则会生成报错,api 的password后续Home Assistant 添加设备时会用到
    在这里插入图片描述

  2. yaml文件配置好之后,将ESP8266通过串口线连接电脑,命令行输入

esphome run livingroom.yaml

ESP Home插件会自动进行源码生成和编译,随后选择ESP8266连接的串口号进行固件下载。

Home kit添加ESP Home智能家居设备

  1. 在集成里面添加ESPHOME,输入我们上面自己定义的开关的IP地址(可以通过路由器查看)、端口默认6053,输入yaml文件中设置的api密码。
  2. 这时便可以看到一个设备(一个ESP8266)和多个实体(取决于添加的传感器、开关个数)。
  3. 配置HASS Bridge(home kit)选项把我们的开关和传感器添加进去
  4. 一些简单的传感器如:开关、二进制传感器等已经能被终端(iPhone、iPad)识别到,但一些比较特殊的传感器就需要在Home Assistant-开者工具中设置->现有实体中编辑实体的状态属性 device_class 要修改为homekit支持的设备类型。也可以在状态 更改设备状态进行调试 在这里插入图片描述

修改在Home kit中显示的传感器类型

假如我们在Home kit中添加了一个传感器(以二进制传感器为例、目前也只发现二进制传感器有用),HomeKit中默认显示为人体传感器,但有强迫症的同学想修改为其他传感器类型如:门窗传感器等。在ESP HOME的.YAML文件里面把 device_class 修改为 door 或者其他类型,从新下载固件添加设备HomeKit就能显示所显示的类型。

     *这里埋个坑:理论上使用上面的第4点修改Home Assistant-<kbd>开者工具中设置</kbd>-><kbd>现有实体</kbd>中编辑实体的状态属性 **device_class** 也是能实现的,但实际测试过程中不是每次都能生效*。

下图是后面要实现把电脑开关机接入Home Kit的一部分配置文件截图:

  1. 检测电脑开关机状态的传感器配置 .yaml
    在这里插入图片描述
  2. Home Kit显示样图
    在这里插入图片描述
### 配置 HomeAssistant 将米家温度计设备集成到 HomeKit 为了使米家温度计能够被 HomeAssistant 接入并进一步桥接到 HomeKit,需完成几个必要的设置环节。 #### 安装 Mi 测量传感器组件 确保已安装适用于米家产品的自定义组件或官方支持的集成。对于许多小米生态链产品来说,这通常意味着要添加`Xiaomi Miio` 或 `Xiaomi Aqara` 的集成[^1]。具体操作是在 Home Assistant 的 Web 界面中导航至“配置”-> “设备与服务”,点击右下角的“添加集成”,搜索对应的小米集成名称来启动向导流程。 #### 添加实体到 HomeKit 桥接器 一旦确认米家温度计作为传感器成功加入到了 Home Assistant 并正常工作之后,下一步就是让这些数据能显示于 Apple 的 Home 应用程序内。为此,需要启用 Home Assistant 自带的 HomeKit 支持功能: - 同样进入“配置” -> "设备与服务" - 寻找名为 `HomeKit` 的选项并激活它;如果找不到,则可能需要先通过 HACS (Home Assistant Community Store) 来获取此社区驱动的支持包。 - 当创建新的 HomeKit 桥接实例时,按照提示设定好 PIN 码等安全参数以便 iOS/ iPadOS 设备配对连接。 - 对于想要暴露给 HomeKit 的每一个 Home Assistant 实体(比如这里的米家温度计),可以在该实体详情页中的“公开到 HomeKit”开关处开启分享权限。 ```yaml # home-assistant.yaml 示例片段 homekit: filter: include_entities: - sensor.mijia_temperature # 假设这是你的米家温度计实体ID ``` 上述 YAML 片段展示了如何利用配置文件方式精确指定哪些 Home Assistant 内部监控项应该映射成 HomeKit 可见的服务项目。不过现代版本更推荐直接通过图形界面来进行此类调整以简化维护难度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值