基于ESP32+BC7215的Matter协议项目。直接连接iPhone手机让任何空调变智能,或连接任何其它支持Matter协议的平台。提供了网页版固件下载,仅需浏览器就可安装固件。
当前访问频次受限,请登录后继续访问
可用于任意品牌的Matter协议空调控制器(ESP32+BC7215项目)
主要特点:
- 让任意空调直接接入Apple Home / Google Home / Home Assistant
- 无需安装App
- 无需注册帐号
- 无需连接空调内部硬件

Matter是一种新的物联网协议,现在已经内置到了iPhone手机和安卓手机中,这意味着符合Matter协议的设备不用单独安装App,就可以直接在“苹果家庭"等环境中操作设备。
本设备是一部离线空调控制器,空调控制功能本身无需连接网络,因此也无需依赖任何第三方服务,无需注册帐号等。
如果您已经在使用Home Assistant, 可能本项目的兄弟项目——本项目的ESPHome 版本 ( ESPHome空调红外遥控:基于 ESPHome 的空调红外遥控项目 - AtomGit ) 会更适合您,因为Matter协议中对空调的支持还处在初级阶段,只支持有限的功能,不如Home Assistant全面。
因为它不限制空调的品牌型号,不需要额外安装App,iPhone用户还不需要额外设备,用来给家里尚未接入智能家居的空调做智能控制,或者送给你有iPhone的朋友,还是很酷的。
局限:
对于Matter协议的设备,用户无需专用的App即可使用,这是一个优势方面,但同时也带来了负面的影响:用户的体验几乎不由设备制造者控制,例如,在苹果上和在安卓上,用户界面等使用体验可能相差很大,尤其是像空调这样的复杂设备。
而且,现在Matter协议还在发展,对空调设备的支持还有限,空调设备主要映射HVAC系统模式,分体式空调的各项功能很多无法在协议中找到映射,或者即便协议中规定有,但手机尚未支持。
现在我发现的各种局限如下:
协议限制:
| 项目 | 普通分体空调 | Matter协议 |
|---|---|---|
| 温度控制 | 单一目标温度 | 分为制冷和制热两个目标温度,尤其在”自动“模式下,设置为一个温度区间而不是单一温度 |
| 温度分辨率 | 通常为1°C, 本设备所使用空调控制库也只能设置整数温度 | 协议中无法由设备控制温度调节精度,目前Apple和Google均使用0.5°C为最小温度调节步长 |
| 风力控制 | 一般为自动、高、中、低4档 | 风力部分有单独的电源开关,协议中风力有分档和百分比两种控制方式,目前手机厂商似乎仅支持了百分比式风力调节。 |
本项目方案:仅应用了最常见的制冷和制热模式,其它模式暂不支持,风力设置如收到1%-33%的设置,映射为低,34%-66%映射为中,66%以上映射为高。当温度设置为0.5°C时,自动向上取整数温度。
应用平台带来的限制:
目前我只测试了下面这4种平台,如果你能帮我测试其它支持Matter协议的IoT平台并给予反馈,如涂鸦, 小米, 绿联等,我将非常感谢,请将测试结果发在issue中。
| 苹果Apple Home | 其它智能家居平台 | Home Assistant |
|---|---|---|
| iPhone手机本身即为Matter控制器,无需其他设备即可使用 | 有待测试,通常需要一个硬件控制器设备 | 需要安装Matter Add-on |
| 支持设置温度和风力(仅百分比) | 有待测试 | 支持设置温度和风力,风力正确显示高中低档 |
| 有时会有设备当前状态更新的延迟 | 有待测试 | 无明显延迟 |
| 如果仅使用手机为控制器,仅当手机连接家中WiFi时,才可使用 | 有待测试 | 添加设备须依赖手机安装Home Assistant App |
- 设备状态更新的延迟,并不影响从手机发起的对空调的操作,这种操作的效果通常是即时的,但手机上还会显示设备的状态,如当前温度等,其刷新频率由App自身决定,有时会比较慢。这种不一致有时会给人带来困惑,尤其在有多个控制器的情况下,比如你在苹果手机上操作了“开机”,空调机也确实开机了,但在其它智能平台的手机上仍然显示是“OFF”,或者你用红外遥控器调整了温度,但手机上要过很久才会同步。
硬件连接
目前仅提供基于ESP32C3模块的在线安装,但项目本身可用于所有的ESP32系列,仅需对IO口的定义部分进行相应修改后重新编译。使用在线安装硬件必须安装规定的连接,固件适用于ESP32C3-XIAO和ESP32C3-Super Mini (PRO)两种模块,Super Mini模块经常有WiFi连接问题,XIAO模块使用外部天线WiFi信号比较好,但因本项目必须使用一个LED作为指示输出,而XIAO模块不带LED,因此必须外接一只LED.
ESP32C3 XIAO模块连接:

ESP32C3 Super Mini (PRO)模块连接:

3D机壳
提供了供3D打印用的机壳STEP文件,如果你有3D打印机可以打印机壳让设备看起来更像一个真正的产品。有关机壳的说明请看这里

固件安装
因为Gitcode不支持pages功能,因此需要用户访问ESPHome官方web tool网站:https://web.esphome.io/ ,唯一遗憾是页面是英文的。

把ESP32-C3模块用USB线连接到所用的电脑上,点“CONNECT”,会弹出选择串口的窗口,选则ESP32所连接的串口,然后选“INSTALL”,烧入初始化固件,重点:不要选第一项 PREPARE FOR FIRST USE,那是给ESPHome项目准备的。
固件应先下载到本地,位置在 docs/firmware/esp32-c3/firmware.bin
-
克隆并编译 (修改配置)
这个方法可以让你用任何ESP32系列的模块并使用你自己定义的I/O口。你只需要修改
main/app_driver.cpp文件中的相应内容。在文件的顶部:
static constexpr uart_port_t BC7215_UART_NUM = UART_NUM_1; static constexpr gpio_num_t BC7215_RX_PIN = GPIO_NUM_3; static constexpr gpio_num_t BC7215_TX_PIN = GPIO_NUM_4; static constexpr gpio_num_t BC7215_BUSY_PIN = GPIO_NUM_5; static constexpr gpio_num_t BC7215_MOD_PIN = GPIO_NUM_6; static constexpr gpio_num_t SUPER_MINI_LED_GPIO = GPIO_NUM_8;**重要: 选择UART口引脚时不要选择与下载或者LCD、按钮等有冲突的引脚。
第一步:克隆项目
因为本项目底层依赖BC7215离线空调码库及其例程 (https://gitcode.com/gcw_J8mu0yPC/bc7215_ac_lib.git),因此下载时不能用zip文件方式下载,需要使用以下克隆命令:
git clone --recursive https://gitcode.com/bitsu/matter_ac_control.git第二步:设置芯片类型Step 2: Change chip target
idf.py set-target esp32在ESP MATTER SDK中,设置芯片为你使用的型号。
第三步:设置最大节点数
改变芯片型号后,最大节点数会变为默认的2, 我们需要把它改为3.
idf.py menuconfig运行后搜索 MAX_DYNAMIC_ENDPOINT , 并改为 3.
第四步:编译和下载
在项目根目录下运行下面命令:
idf.py cleanidf.py buildidf.py -p your/location/of/esp32/serial/port erase-flash flash monitor
设置/使用方法
设置
-
请先确认你的路由器开启了IPV6
(Matter协议是基于IPV6的, 要使用本项目, 公网可以依然是IPV4, 但家中路由器必须开启IPV6支持, 否则无法正常使用。除了非常老的型号,多数品牌均已默认支持)
本设备将需要2步设置:
- 设置空调配对
- 设置与手机(智能家居平台)连接
两个设置无所谓先后,但建议先设置空调配对,这样手机连接后,马上就可以使用。
本设备后盖上有两个开孔,一个是按键,一个是LED。
-
空调配对 设备初始上电后,LED应该处于常亮状态,表示尚未进行配置。此时,先将空调红外遥控器设置为25°C/制冷模式,按一下设备上按钮,LED就会开始快速闪烁,表示进入了配对状态,这时候对着设备按空调遥控器,按"风力调节"键,正常情况下,即可完成配对,LED会变成每秒钟闪烁两次,表示还有手机连接尚未配置。
-
连接手机 因为ESP32只支持2.4G, 所以最好先将你的手机连接到2.4G WiFi以避免莫名其妙的问题。打开苹果家居或者其它支持Matter协议的智能家居App, 苹果选择"添加配件",其它App选择添加添加设备,就会出现扫码界面,扫描配网二维码(我会将二维码打印下来贴在机壳上,便于送给朋友,同时再贴一个链接到本文的使用手册二维码),根据屏幕提示即可一路操作下来,完成配置。在连接过程中,包括设备断电后重新连接的工程中,LED会慢速闪烁,表明正在连接。
连接用二维码:

使用说明书(本文)链接二维码:

Matter设备的连接过程通常会比较慢,往往需要数十秒钟才能完成,有时设备完成了连接后,手机上仍会需要一定时间才会看到设备的在线状态,这似乎是智能家居平台的设计造成,作为设备开发者好像对此并无能为力。
注意手机配置中途会遇到”非认证设备“的警告,那是因为正规厂商需要认证后才会得到一个设备的唯一认证码,此为DIY设备,无法取得认证,就会有这样的提示,但不会影响功能。
连接成功后,LED会变成每3s闪烁一次的状态,表明设备就绪。
手机上添加设备成功后,应该即可看到温控器和风力控制器的界面。因为前面所述的限制原因,现在只支持制冷/制热两种模式。对温度,当设置为0.5°C时,因为设备不支持0.5°C设置,温度值会自动向上取整,同理风力如果显示为百分比式连续调节,会归于近似当前值的高中低三档中的一个。
除了用手机控制空调,此设备还支持将使用红外遥控器的控制同步给手机,用户可以在手机上看到使用红外遥控器进行的操作,因此设备应该摆放在空调的附近,以便当用户使用红外遥控操作空调时,本设备也能收到红外信号,否则会无法完成操作的同步。
放置指南
此设备有两个主要功能:
- 红外发射功能向空调发送红外信号
- 红外接收功能接收遥控器的红外信号,解码后同步给智能家居平台
红外发射功能目的简单明了,要求也很简单,红外发射管应该朝向空调的方向,和使用遥控器一样。BC7215模块提供了足够的发射强度,作用距离也和遥控器差不多。
红外接收功能决定了本设备能否获知用户在遥控器上的操作并同步给手机。因此,应该将本机放置在空调机的附近,红外接收头也应尽量朝向使用者所在的方向,确保用红外遥控器操作空调时本机也能收到。
因此,本机的放置有3个要点:
- 放置在空调附近.
- 红外发射管指向空调
- 红外接收头大致朝向使用者所在方向
添加额外控制器
Matter设备可以添加多个控制器,比如,可以同时用Apple Home和Google Home控制。添加时,不可直接添加,需要在已经连接的手机中允许后才可添加,苹果中显示为“开启配对模式",Google中名称是"连接应用和服务". 点击后会给出一个设置码,为一串数字,用于在第二部设备上添加此设备。据我的使用体验,添加时,使用扫二维码方式通常不会成功,必须手动选择使用设置码的方式。
双击测试特殊协议
根据AC驱动库的说明,有极少数协议无法直接通过配对操作匹配,当你确认操作正确但无法完成配对,或者尽管显示已配对但空调反应不正确,可尝试双击按钮,逐个尝试内置的特殊空调协议。无论在已配对或未配对状态,双击按钮,就进入特殊协议测试状态。
进入测试状态后,每次双击按钮,会切换一种内置特殊协议,同时发出一个测试信号,注意将LED对准空调的方向,如果测试到某个协议你的空调有反应了(通常会哔一声),则该协议可能就是适用你的空调的。这时再用手机调整温度,可以验证。
测试期间,LED会熄灭,仅在切换时,会闪烁,闪烁的次数代表协议的序号。如果所有内置协议(当前看少于10种)均轮询过一遍后,LED状态会恢复“AC为配对"的状态。
复位
对空调配对,可随时配新空调而无需重新设置手机连接。空调的配对操作简单,而且几乎是即时的。
如果想完全从头开始,可以长按设备上的按钮5s,待LED开始快速闪烁时放手,可删除全部网络和空调配对信息。
指示灯状态
| 指示灯 | 含义 |
|---|---|
| 常亮 | 出厂状态,尚未进行配置 |
| 常灭 | 未通电或双击了按键(见上文测试特殊协议部分) |
| 快速闪烁 | 等待接收红外信号进行空调配对 |
| 慢速闪烁 | 正在进行网络连接 |
| 每秒短暂闪烁1次 | 网络已配置,但尚未进行空调配对 |
| 每秒短暂闪烁2次 | 空调已配对,但尚未配置手机连接 |
| 每3秒短暂闪烁1次 | 已完成配对和连接,待机状态 |