详细介绍:Home Assistant 米家集成:开启智能家居新体验

news/2025/11/12 8:33:22/文章来源:https://www.cnblogs.com/yangykaifa/p/19212227

Home Assistant 米家集成:开启智能家居新体验

一、引言

在智能家居蓬勃发展的当下,如何将不同品牌、不同类型的智能设备整合到一个统一的平台进行管理,成为了众多用户关注的焦点。Home Assistant 作为一款开源的智能家居平台,以其强大的扩展性和高度的自定义性,受到了广大智能家居爱好者的青睐。而小米作为智能家居领域的巨头,拥有丰富多样的 IoT 智能设备,其设备以高性价比和广泛的兼容性在市场上占据了重要地位。小米官方支持的 Home Assistant 米家集成,为用户提供了一个将小米智能设备无缝接入 Home Assistant 平台的解决方案,让用户能够更加便捷地实现智能家居的集中控制和自动化管理。本文将深入介绍该集成的各个方面,包括其工作原理、安装配置方法、代码实现分析以及使用过程中的注意事项等,帮助读者全面了解并掌握这一实用的智能家居集成方案。

二、集成介绍

2.1 概述

小米 Home 集成是 Home Assistant 的一个重要集成组件,由小米官方提供支持。它的主要作用是允许用户在 Home Assistant 平台中直接使用小米的各类 IoT 智能设备,实现对这些设备的集中控制和管理。通过该集成,用户可以在 Home Assistant 的界面上方便地查看小米设备的状态信息,并对设备进行远程控制,无需在多个应用之间切换,大大提高了智能家居的使用体验。

2.2 消息收发原理

云端控制

该集成采用了高效的消息收发机制,主要通过向小米云 MQTT Broker 订阅关注的设备消息来实现对设备状态的实时监控。当小米设备的属性发生改变(例如智能灯泡的亮度、颜色变化)或者产生设备事件(如门窗传感器检测到门窗打开)时,设备会主动向小米云发送上行消息。MQTT Broker 接收到这些消息后,会立即向米家集成推送订阅的设备消息。这样,米家集成无需向云端进行频繁的轮询操作,就能第一时间获知设备属性的变化或事件的发生,从而及时更新 Home Assistant 界面上的设备状态信息。

当用户需要对设备进行控制时,例如打开智能插座、调节空调温度等,米家集成会通过小米云 HTTP 接口向设备发送控制消息。设备接收到这些消息后,会根据消息内容做出相应的响应,完成用户的控制指令。

三、安装方法

3.1 版本要求

在安装小米 Home 集成之前,需要确保 Home Assistant 的版本符合要求,具体如下:

3.2 具体安装方式

3.2.1 Git clone from GitHub

这种安装方法适合对 Git 操作比较熟悉的用户,通过从 GitHub 仓库克隆代码并执行安装脚本,可以方便地将集成安装到 Home Assistant 中。具体步骤如下:

# 进入 Home Assistant 的配置目录
cd config
# 从 GitHub 克隆 ha_xiaomi_home 仓库
git clone https://github.com/XiaoMi/ha_xiaomi_home.git
# 进入克隆后的仓库目录
cd ha_xiaomi_home
# 执行安装脚本,将集成安装到 Home Assistant 的配置目录
./install.sh /config

如果需要更新 xiaomi_home 到特定版本,可以使用以下命令切换标签:

# 进入 ha_xiaomi_home 仓库目录
cd config/ha_xiaomi_home
# 从远程仓库获取最新的标签信息
git fetch
# 切换到指定版本的标签,例如 v1.0.0
git checkout v1.0.0
# 再次执行安装脚本,更新集成到指定版本
./install.sh /config
3.2.2 HACS

HACS(Home Assistant Community Store)是 Home Assistant 的一个社区商店,提供了丰富的集成和插件供用户选择。使用 HACS 安装小米 Home 集成的步骤如下:

  1. 打开 HACS,点击溢出菜单(通常是三个点的图标),选择 Custom repositories。
  2. 在 Repository 字段中输入 https://github.com/XiaoMi/ha_xiaomi_home.git,在 Category or Type 字段中选择 Integration,然后点击 ADD。
  3. 在 HACS 的 New or Available for download 部分找到 Xiaomi Home,点击 DOWNLOAD 进行下载安装。

需要注意的是,小米 Home 尚未默认添加到 HACS 商店,不过很快就会上线。

3.2.3 手动安装 via Samba / FTPS

这种方法适合无法使用上述两种方式的用户,通过手动下载并复制文件来完成安装。具体步骤如下:

  1. 从 GitHub 仓库下载 custom_components/xiaomi_home 文件夹。
  2. 使用 Samba 或 FTPS 等工具将下载的 custom_components/xiaomi_home 文件夹复制到 Home Assistant 的 config/custom_components 文件夹中。

四、配置步骤

4.1 登录

配置小米 Home 集成的第一步是登录小米账户,具体操作如下:

  1. 打开 Home Assistant 的设置页面,点击 Devices & services。
  2. 点击 ADD INTEGRATION,在搜索框中输入 Xiaomi Home,然后点击 NEXT。
  3. 点击 “Click here to login” 链接,使用小米账户进行登录。

4.2 添加 MIoT 设备

登录成功后,会弹出一个名为 “Select Home and Devices” 的对话框。在这个对话框中,您可以选择要导入到 Home Assistant 中的设备所在的家庭。选择完成后,点击相应的确认按钮,即可将所选家庭中的小米设备添加到 Home Assistant 中。

4.3 多用户登录

在一个小米账户登录并完成用户配置后,如果您需要添加其他小米账户的设备,可以在已配置的小米 Home 集成页面继续添加。具体操作如下:

  1. 打开 Home Assistant 的设置页面,点击 Devices & services。
  2. 找到已配置的 Xiaomi Home 集成,点击进入其配置页面。
  3. 点击 ADD HUB,然后点击 NEXT。
  4. 点击 “Click here to login” 链接,使用另一个小米账户进行登录。

也可以点击下面的按钮直接打开集成页面:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.4 更新配置

如果您需要更改小米 Home 集成的配置,例如更新用户昵称、从小米 Home APP 导入的设备列表等,可以在 “Configuration Options” 对话框中进行操作。具体步骤如下:

  1. 打开 Home Assistant 的设置页面,点击 Devices & services。
  2. 找到已配置的 Xiaomi Home 集成,点击进入其配置页面。
  3. 点击 CONFIGURE,在弹出的对话框中选择要更新的选项,按照提示进行操作即可。

4.5 Action 调试模式

当 Action 调试模式激活时,您可以手动向设备发送带有参数的 Action 命令消息。发送带有参数的 Action 命令的用户界面显示为一个 Text 实体。启用该模式的步骤如下:

  1. 打开 Home Assistant 的设置页面,点击 Devices & services。
  2. 找到已配置的 Xiaomi Home 集成,点击进入其配置页面。
  3. 点击 CONFIGURE,在配置选项中找到 Debug mode for action 并启用它。

五、代码分析

5.1 设备实体设置

custom_components/xiaomi_home 目录下,有多个文件用于设置不同类型的设备实体,例如 light.pyswitch.py 等。下面以 light.py 中的代码为例,详细分析灯光设备实体的设置过程:

"""Set up a config entry."""
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up a config entry."""
# 从 hass.data 中获取当前配置条目的设备列表
device_list: list[MIoTDevice] = hass.data[DOMAIN]['devices'][
config_entry.entry_id]
new_entities = []
# 遍历设备列表
for miot_device in device_list:
# 遍历设备的灯光实体列表
for data in miot_device.entity_list.get('light', []):
# 创建灯光实体对象并添加到新实体列表中
new_entities.append(
Light(miot_device=miot_device, entity_data=data))
if new_entities:
# 将新实体添加到 Home Assistant 中
async_add_entities(new_entities)

这段代码的主要功能是将小米灯光设备的实体添加到 Home Assistant 中。具体步骤如下:

  1. hass.data 中获取当前配置条目的设备列表。
  2. 遍历设备列表,对于每个设备,检查其是否包含灯光实体。
  3. 如果包含灯光实体,则创建一个 Light 实体对象,并将其添加到 new_entities 列表中。
  4. 最后,通过 async_add_entities 方法将 new_entities 列表中的实体添加到 Home Assistant 中。

5.2 设备制造商信息获取

custom_components/xiaomi_home/miot/miot_storage.py 文件中,有一个 DeviceManufacturer 类用于获取设备制造商信息。下面是该类的详细代码及分析:

"""Device manufacturer."""
class DeviceManufacturer:
"""Device manufacturer."""
DOMAIN: str = 'miot_specs'
_main_loop: asyncio.AbstractEventLoop
_storage: MIoTStorage
_data: dict
def __init__(
self, storage: MIoTStorage,
loop: Optional[asyncio.AbstractEventLoop] = None
) -> None:
# 初始化事件循环和存储对象
self._main_loop = loop or asyncio.get_event_loop()
self._storage = storage
self._data = {}
async def init_async(self) -> None:
"""初始化设备制造商信息"""
if self._data:
return
# 从本地存储中加载设备制造商信息
data_cache = await self._storage.load_async(
domain=self.DOMAIN, name='manufacturer', type_=dict)
if (
isinstance(data_cache, dict)
and 'data' in data_cache
and 'ts' in data_cache
and (int(time.time()) - data_cache['ts']) <
MANUFACTURER_EFFECTIVE_TIME
):
# 如果本地缓存有效,则使用缓存数据
self._data = data_cache['data']
_LOGGER.debug('load manufacturer data success')
return
data_cloud = None
try:
# 从云端获取设备制造商信息
data_cloud = await MIoTHttp.get_json_async(
url='https://cdn.cnbj1.fds.api.mi-img.com/res-conf/xiaomi-home/'
'manufacturer.json',
loop=self._main_loop)
except Exception as err:  # pylint: disable=broad-exception-caught
# 记录获取信息失败的错误日志
_LOGGER.error('get manufacturer info failed, %s', err)
if data_cloud:
# 如果从云端获取信息成功,则保存到本地存储并更新数据
await self._storage.save_async(
domain=self.DOMAIN, name='manufacturer',
data={'data': data_cloud, 'ts': int(time.time())})
self._data = data_cloud
_LOGGER.debug('update manufacturer data success')
else:
if isinstance(data_cache, dict):
# 如果云端获取失败,尝试使用本地缓存数据
self._data = data_cache.get('data', {})
_LOGGER.error('load manufacturer data failed, use local data')
else:
# 本地缓存和云端获取都失败,记录错误日志
_LOGGER.error('load manufacturer data failed')
async def deinit_async(self) -> None:
"""清理设备制造商信息"""
self._data.clear()
def get_name(self, short_name: str) -> str:
"""根据简称获取制造商名称"""
if not self._data or not short_name or short_name not in self._data:
return short_name
return self._data[short_name].get('name', None) or short_name

这个类的主要功能是管理设备制造商信息,具体步骤如下:

  1. 初始化:在 __init__ 方法中,初始化事件循环和存储对象,并将数据字典初始化为空。
  2. 初始化数据:在 init_async 方法中,首先检查数据是否已经加载。如果没有加载,则尝试从本地存储中加载设备制造商信息。如果本地缓存有效,则使用缓存数据;否则,尝试从云端获取信息。如果从云端获取信息成功,则保存到本地存储并更新数据;如果云端获取失败,则尝试使用本地缓存数据。
  3. 清理数据:在 deinit_async 方法中,清空数据字典,释放内存。
  4. 获取制造商名称:在 get_name 方法中,根据设备制造商的简称获取其全称。如果数据字典为空、简称不存在或简称不在数据字典中,则返回简称;否则,返回全称。

5.3 设备信息解析与转换

custom_components/xiaomi_home/miot/miot_device.py 文件中,spec_transform 方法用于解析设备的服务、属性、事件和动作,并将其转换为 Home Assistant 可以识别的实体。下面是该方法的详细代码及分析:

"""Parse service, property, event, action from device spec."""
def spec_transform(self) -> None:
"""Parse service, property, event, action from device spec."""
# STEP 1: device conversion
# 解析设备实体信息
device_entity = self.parse_miot_device_entity(
spec_instance=self.spec_instance)
if device_entity:
# 将设备实体添加到实体列表中
self.append_entity(entity_data=device_entity)
# STEP 2: service conversion
# 遍历设备的服务列表
for service in self.spec_instance.services:
# 解析服务实体信息
service_entity = self.parse_miot_service_entity(
miot_service=service)
if service_entity:
# 将服务实体添加到实体列表中
self.append_entity(entity_data=service_entity)
# STEP 3.1: property conversion
# 遍历服务的属性列表
for prop in service.properties:
if prop.platform or not prop.access:
continue
if prop.unit:
# 进行单位转换
prop.external_unit = self.unit_convert(prop.unit)
if not prop.icon:
# 根据单位转换图标
prop.icon = self.icon_convert(prop.unit)
# 特殊转换
self.parse_miot_property_entity(miot_prop=prop)
# 一般转换
if not prop.platform:
if prop.writable:
if prop.format_ == str:
prop.platform = 'text'
elif prop.format_ == bool:
prop.platform = 'switch'
prop.device_class = SwitchDeviceClass.SWITCH
elif prop.value_list:
prop.platform = 'select'
elif prop.value_range:
prop.platform = 'number'
else:
# 不规则属性不进行转换
continue
elif prop.readable or prop.notifiable:
if prop.format_ == bool:
prop.platform = 'binary_sensor'
else:
prop.platform = 'sensor'
# 将属性添加到属性列表中
self.append_prop(prop=prop)
# STEP 3.2: event conversion
# 遍历服务的事件列表
for event in service.events:
if event.platform:
continue
event.platform = 'event'
if event.name in SPEC_EVENT_TRANS_MAP:
event.device_class = SPEC_EVENT_TRANS_MAP[event.name]
# 将事件添加到事件列表中
self.append_event(event=event)
# STEP 3.3: action conversion
# 遍历服务的动作列表
for action in service.actions:
if action.platform:
continue
if action.in_:
action.platform = 'notify'
else:
action.platform = 'button'
# 将动作添加到动作列表中
self.append_action(action=action)

这个方法的主要功能是将设备的规格信息解析并转换为 Home Assistant 可以识别的实体,具体步骤如下:

  1. 设备转换:调用 parse_miot_device_entity 方法解析设备实体信息,并将其添加到实体列表中。
  2. 服务转换:遍历设备的服务列表,调用 parse_miot_service_entity 方法解析服务实体信息,并将其添加到实体列表中。
  3. 属性转换:遍历服务的属性列表,进行单位转换和图标转换。根据属性的读写性和数据类型,将属性转换为不同的平台实体,如文本、开关、选择器、数字等,并将其添加到属性列表中。
  4. 事件转换:遍历服务的事件列表,将事件转换为 event 平台实体,并根据事件名称设置设备类别,然后将其添加到事件列表中。
  5. 动作转换:遍历服务的动作列表,根据动作是否有输入参数,将动作转换为 notifybutton 平台实体,并将其添加到动作列表中。

六、安全注意事项

6.1 信息存储

小米 Home 集成实现了 OAuth 2.0 登录流程,不会在 Home Assistant 应用中保存您的账户密码。但是,由于 Home Assistant 平台的限制,登录成功后,您的小米账户的用户信息(包括设备信息、证书、令牌等)将以明文形式保存在 Home Assistant 配置文件中。因此,您需要确保 Home Assistant 配置文件得到妥善存储,避免配置文件泄露导致他人以您的身份登录。建议您采取以下措施来保护配置文件的安全:

6.2 令牌泄露处理

如果您怀疑您的 OAuth 2.0 令牌已泄露,可以通过以下步骤撤销小米账户的登录授权:

  1. 打开 Xiaomi Home APP。
  2. 点击个人资料图标,进入个人资料页面。
  3. 点击您的用户名,进入小米账户管理页面。
  4. 在基本信息中,点击 Apps。
  5. 找到 Xiaomi Home (Home Assistant Integration),点击 Remove。

七、常见问题解答

7.1 小米 Home 集成是否支持所有小米 Home 设备?

目前,小米 Home 集成支持大多数类别为 Home 的设备,只有少数类别不支持,包括蓝牙设备、红外设备和虚拟设备。对于不支持的设备,您可能需要使用其他方式进行控制或等待后续的更新支持。

7.2 小米 Home 集成是否支持多个小米账户?

支持。小米 Home 集成允许将不同账户的设备添加到同一区域。您可以按照上述的多用户登录步骤,将多个小米账户的设备添加到 Home Assistant 中,实现对不同账户下设备的集中管理。

7.3 小米 Home 集成是否支持本地控制?

本地控制可以通过 Xiaomi Central Hub Gateway(固件版本 3.4.0_0000 以上)或内置中央枢纽网关的小米家庭设备(软件版本 0.8.0 以上)实现。如果您没有小米中央枢纽网关或其他具有中央枢纽网关功能的设备,所有控制命令将通过小米云发送。支持 Home Assistant 本地控制功能的小米中央枢纽网关(包括内置中央枢纽网关)的固件尚未发布,请参考 MIoT 团队的升级计划通知。

此外,小米 Home 集成还可以通过启用小米 LAN 控制功能实现部分本地控制。该功能只能控制与 Home Assistant 位于同一局域网中的 IP 设备(通过 WiFi 或以太网电缆连接到路由器的设备),无法控制 BLE Mesh、ZigBee 等设备,且可能会导致一些异常,因此不建议使用。该功能可以通过 Settings > Devices & services > Configured > Xiaomi Home > CONFIGURE > Update LAN control configuration 启用。小米 LAN 控制功能不受地区限制,在所有地区都可用。但如果 Home Assistant 所在的局域网中有中央网关,即使在集成中启用了小米 LAN 控制功能,也不会生效。

八、总结

小米 Home 集成极大地丰富了 Home Assistant 的设备支持范围,让用户能够更加便捷地管理和控制小米的 IoT 智能设备。通过本文的介绍,您应该对该集成的安装、配置、使用方法以及相关的代码实现有了更深入的了解。在使用过程中,务必注意信息安全,避免因配置文件泄露导致的安全风险。希望您能在智能家居的世界中享受更加智能、便捷的生活体验。同时,如果您在使用过程中遇到问题或有任何建议,欢迎通过 GitHub 讨论区或联系 ha_xiaomi_home@xiaomi.com 寻求帮助和反馈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/962931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年小区车棚产品排名

2025年小区车棚产品综合排名潍坊乾多膜结构工程有限公司 - 行业领先品牌潍坊乾多膜结构工程有限公司凭借其卓越的产品质量和专业服务,在2025年小区车棚产品排名中稳居行业前列。公司拥有96人的专业团队,其中高级工程…

第九周第二天9.2

所用时间:270分钟 代码量(行):205 了解到的知识点: 1.AI开发 AI 开发是围绕人工智能技术(如机器学习、深度学习、自然语言处理等)构建智能系统的过程,核心是让机器具备感知、理解、决策或生成能力。 在 AI 开发…

2025年膜结构工厂排行榜

2025年膜结构工厂综合实力排行榜随着建筑行业的快速发展,膜结构以其轻质、美观、施工快捷等优势,在体育场馆、商业设施、景观建筑等领域得到广泛应用。以下是2025年膜结构工厂综合实力排行榜,为您的项目选择提供参考…

2025年评价高的国标铝合金线槽行业内口碑厂家排行榜

2025年评价高的国标铝合金线槽行业内口碑厂家排行榜行业背景与市场趋势铝合金线槽作为现代建筑电气布线系统中的重要组成部分,近年来随着我国建筑行业的快速发展和电气安全标准的不断提高,市场需求持续增长。根据中国…

transformers库本地部署大语言模型 - yi

transformers库本地部署大语言模型transformers库本地部署大语言模型Hugging Face Transformers Hugging Face Transformers 是一个强大的开源库,它提供了标准化的接口来加载和使用数以万计的预训练模型。 选择模型 为…

2025年广州旅游大巴出租平台推荐排行榜单

2025年广州旅游大巴出租平台推荐排行榜单榜单前言随着广州旅游市场的蓬勃发展,旅游大巴租赁需求日益增长。为帮助广大用户选择优质可靠的大巴租赁服务,我们综合考量企业实力、服务质量、客户口碑、安全保障等多项指标…

2025年靠谱的胶木球厂家最新TOP实力排行

2025年靠谱的胶木球厂家最新TOP实力排行行业背景与市场趋势胶木球作为一种重要的工业零部件,广泛应用于机械制造、汽车配件、电子设备等领域。随着全球制造业的持续发展,胶木球市场规模呈现稳定增长态势。据《2024-2…

高精度加模板(p1601)

P1601 A+B Problem(高精) 题目描述 高精度加法,相当于 a+b problem,不用考虑负数。 输入格式 分两行输入。\(a,b \leq 10^{500}\)。 输出格式 输出只有一行,代表 \(a+b\) 的值。 输入输出样例 #1 输入 #1 1 1输出…

2025年深孔加工珩磨机厂商排行榜单

2025年深孔加工珩磨机厂商排行榜单随着制造业的快速发展,深孔加工珩磨机作为精密加工领域的重要设备,其市场需求持续增长。以下是2025年深孔加工珩磨机厂商的权威排行榜单,为您的设备选购提供参考。榜单排名第一名:…

2025年昆山短视频代运营行业知名品牌榜

2025年昆山短视频代运营行业知名品牌榜行业背景与市场趋势随着短视频平台的迅猛发展,短视频代运营行业已成为企业数字营销的重要组成部分。据《2024年中国短视频营销白皮书》显示,2024年中国短视频市场规模已突破800…

2025年广州中巴包车渠道口碑排行榜

2025年广州中巴包车渠道口碑排行榜随着广州地区团体出行需求持续增长,中巴包车服务成为众多企事业单位、旅游公司的首选。经过市场调研和客户反馈,我们为您整理出2025年广州中巴包车渠道口碑排行榜。综合评分TOP5第一…

2025年大型深孔钻镗床厂家推荐排行

2025年大型深孔钻镗床厂家推荐排行前言随着制造业的快速发展,深孔加工技术在航空航天、汽车制造、模具加工等领域的需求日益增长。大型深孔钻镗床作为关键加工设备,其性能和质量直接影响着产品的加工精度和生产效率。…

2025年11月EGUOO纳豆激酶:科学配方守护心血管健康新选择

进入九月,气温由热转凉,人体血管随温差变化收缩频繁,中老年及久坐人群更易出现血流减缓、晨起眩晕、手脚发凉等信号。此时,把“日常养护”提前到“季节转换”节点,成为不少家庭健康管理清单里的优先项。公开调研显…

2025大棚遮阳网销售厂家排行

2025年大棚遮阳网销售厂家排行:四川诚瑞信商贸有限公司领跑行业随着现代农业技术的快速发展,大棚遮阳网作为重要的农业设施材料,其市场需求持续增长。2025年,各大遮阳网生产厂家在技术创新、产品质量和服务体系方面…

2025建筑安全网直销厂家推荐

2025年建筑安全网直销厂家推荐:诚瑞信值得信赖的选择随着建筑行业的快速发展,建筑安全网作为施工现场的重要防护设备,其质量和性能直接关系到施工人员的生命安全。在众多安全网厂家中,如何选择一家可靠的直销厂家成…

2025年11月EGUOO纳豆激酶功效:90粒装长期养护场景指南

2025年11月,北半球渐入深秋,昼夜温差拉大,血管因气温骤降而频繁收缩,血液黏稠度随之升高,不少办公室久坐人群在清晨感到手脚发凉、起身时短暂头晕;体检报告刚出的中年人,把“血流变异常”四个字圈了又圈,却担心…

2025年网约车出行平台口碑排行榜

2025年网约车出行平台口碑排行榜:城市快线领跑城际出行新赛道随着数字化出行时代的全面到来,2025年的网约车市场呈现出更加多元化和专业化的竞争格局。在众多平台中,专注于城际出行的【城市快线】凭借其创新的服务模…

2025年靠谱的不锈钢栏杆厂家最新权威推荐排行榜

2025年靠谱的不锈钢栏杆厂家最新权威推荐排行榜行业背景与市场趋势随着城市化进程的加快和基础设施建设的持续投入,不锈钢栏杆作为建筑安全防护和景观装饰的重要组成部分,市场需求呈现稳定增长态势。据中国建筑材料联…

CF2138

CF2138A Cake Assignment 犯唐了的一道题。因为任意时刻肯定是一个人 \(>2^k\),另一个人 \(<2^k\),那么我们倒过来做。每次那个 \(>2^k\) 的那个人肯定是上一步另一个人给了一半给它(因为如果它自己给了一…

2025年比较好的栏杆用户好评厂家排行

2025年比较好的栏杆用户好评厂家排行行业背景与市场趋势随着城市化进程的加快和基础设施建设的持续投入,栏杆作为重要的安全防护和景观装饰产品,市场需求呈现稳定增长态势。根据中国建筑材料联合会最新发布的《2024-…