Skip to main content

通过本地网络控制美的电器的库

项目描述

这是一个可以通过局域网与美的空调和除湿机通信的库。

美的空气

构建状态 派皮

该库允许在本地网络上发现美的空调和除湿机,然后获取它们的状态并进行控制。这个名字来自Midea(美的)的中文名字,在英文中翻译为美丽

这个库的灵感来自于mac-zhou/midea-msmart的存储库,它为空调和除湿机提供基于云的barban-dev/midea_inventor_dehumidifier功能的类似功能。该库可能包含来自这两个项目的代码的逐字或改编部分。

也感谢yitsushi的项目NeoAcheron的项目andersonshatch的项目

支持的设备

该库与支持V2和V3协议的美的空调和除湿机配合使用。

支持的除湿机的一些示例:

  • Comfee MDDF-16DEN7-WF 或 MDDF-20DEN7-WF (测试20L版本)
  • Inventor EVA ΙΟΝ Pro Wi-Fi (EP3-WiFi 16L/20L) (测试20L版本)
  • Inventor Eva II Pro Wi-Fi (EVP-WF16L/20L)
  • Pro Breeze 30L 智能除湿机带 Wifi / 应用程序控制
  • 美的 SmartDry 除湿机(22、35、50 品脱型号)
  • 美的立方除湿机(20、35、50品脱型号)

它也可以与其他美的 Wi-Fi 空调和除湿机一起使用。

除湿机数据

可通过此库访问以下除湿机数据:

  • 开/关开关(布尔型,可设置)
  • 当前相对湿度(只读)
  • 目标相对湿度(可设置)
  • 活动模式(可设置)
  • 风扇转速(可设置)
  • (an)ion 模式状态(布尔型,可设置)
  • tank is full (boolean, read-only)
  • 设备名称(只读)。通过美的手机应用程序设置。
  • 设备序列号(只读)
  • 设备 IPv4 地址(只读)
  • 用于本地网络访问的令牌和密钥(只读,仅限 v3 设备)
  • 过滤器更换指示器(布尔值,只读,如果设备支持)
  • 泵开/关开关(布尔值,可以设置,如果设备支持)
  • 睡眠模式开/关开关(布尔值,可以设置,如果设备支持)
  • 除霜模式指示器(布尔值,只读,如果设备支持)
  • 内部错误代码(只读)
  • 设备特性,即支持特殊模式、风扇预设等(只读)
  • 哔声提示(只写)
  • 水箱水位(只读,如果设备支持)
  • 当前环境温度(只读)

空调数据

可通过此库访问以下空调数据:

  • 开/关开关(布尔型,可设置)
  • 目标温度(摄氏度,可设置)
  • 室内温度(摄氏度,只读)
  • 室外温度(摄氏度,只读)
  • 活动模式(可设置)
  • 空气净化器模式(布尔型,可设置)
  • 风干模式(布尔型,可设置)
  • 水平摆动操作(布尔型,可设置)
  • 垂直摆动操作(布尔型,可设置)
  • 华氏度显示(布尔型,可设置)
  • 内部错误代码(只读)
  • 设备特性,即支持特殊模式、风扇预设等(只读)
  • 哔声提示(只写)
  • 设备名称(只读)。通过美的手机应用程序设置。
  • 设备序列号(只读)
  • 设备 IPv4 地址(只读)
  • 用于本地网络访问的令牌和密钥(只读,仅限 v3 设备)

发现

该库能够发现本地网络上的设备。这是通过将 UDP 数据包广播到端口 6445 来完成的。设备将使用其描述数据包响应此广播。发现后,通信切换到 TCP 通过端口 6444。此通信已加密,对于具有版本 3 固件的设备,库需要与每个设备关联的令牌/密钥 (K1) 组合。这可以作为参数提供,也可以从美的应用帐户中检索。获得后,令牌/密钥 (K1) 对可以多次用于设备。该库还可以从美的应用程序帐户中检索已注册设备的列表,并获取设备的附加信息(例如名称)。

图书馆使用来自 NetHome Plus 移动应用程序的凭据连接到美的云 API。如果您获得了其他美的移动应用程序的应用程序密钥和ID,则可以使用它们。有关示例,请参见midea_beautiful/midea.py。应用程序密钥和应用程序 ID 必须匹配,否则库将无法登录。

该发现应该在基于 Linux 和 Windows 的系统上运行,但它在 Linux 的 Windows 子系统中不起作用,并且可能无法在 Docker 容器或 VM 中运行,具体取决于网络设置。例如,VM 或容器需要有权广播到物理网络才能进行发现工作。如果无法进行物理网络访问,一种解决方法是从非虚拟化环境主机运行发现。

如果此发现机制不适用于特定设置,则仍然可以在已知 IP 地址时直接使用其目标设备,或使用云服务检索或设置其状态。

网络注意事项

发现要求设备和执行发现的机器都存在于同一广播子网上。默认情况下,库向所有网络(即地址)发出广播255.255.255.255,但可以限制广播子网(例如 192.0.2.255)

本地协议支持

库支持以下协议:

  • 基于云的状态读写(无需本地访问)
  • 兼容设备的 v3 本地协议(需要 TOKEN/KEY 组合)
  • 兼容设备的 v2 本地协议

日志记录

默认情况下会编辑用户名、密码或令牌密钥等凭据信息。使用命令行时,传递--no-redact选项以在日志中显示它们。您可以使用命令行工具显示令牌和密钥 (K1) 数据。

命令行用法

安装包

pip install --upgrade midea-beautiful-air

命令行工具帮助

midea-beautiful-air-cli --help
midea-beautiful-air-cli discover --help
midea-beautiful-air-cli set --help
midea-beautiful-air-cli status --help

发现

发现本地网络上的设备:

midea-beautiful-air-cli discover --account ACCOUNT_EMAIL --password PASSWORD

显示用于通过本地网络连接到设备的令牌

midea-beautiful-air-cli discover --account ACCOUNT_EMAIL --password PASSWORD --credentials

通过提供明确的网络地址搜索设备

midea-beautiful-air-cli discover --account ACCOUNT_EMAIL --password PASSWORD --address 192.0.2.3 --credentials

通过提供广播地址搜索设备

midea-beautiful-air-cli discover --account ACCOUNT_EMAIL --password PASSWORD --address 192.0.2.255 --credentials

设备注册到支持的应用程序时的发现:

midea-beautiful-air-cli --verbose ---log DEBUG discover --account ACCOUNT --password PASSWORD --credentials --app MSmartHome

设备注册到新 API 时的发现(请注意,它更易于使用--app选项):

midea-beautiful-air-cli --verbose ---log DEBUG discover --account ACCOUNT --password PASSWORD --credentials --appkey APPKEY --appid APPID --hmackey HMACKEY --iotkey IOTKEY --apiurl https://mp-prod.appsmb.com/mas/v5/app/proxy?alias= --proxied

设备状态

使用已知的 TOKEN 和 KEY 获取设备的状态(例如使用discover命令检索)

midea-beautiful-air-cli status --ip APPLIANCE_IP_ADDRESS --token TOKEN --key KEY

使用美的应用凭证获取设备状态

midea-beautiful-air-cli status --ip APPLIANCE_IP_ADDRESS --account ACCOUNT_EMAIL --password PASSWORD

通过美的云 API 获取设备状态(注意使用--id--cloud选项)

midea-beautiful-air-cli status --id APPLIANCE_ID --account ACCOUNT_EMAIL --password PASSWORD --cloud

设置设备属性

以下是一些使用示例:

设定目标相对湿度 (0-100)

midea-beautiful-air-cli set --ip APPLIANCE_IP_ADDRESS --token TOKEN --key KEY --target-humidity 55

设置操作模式(编号 1 到 4)

midea-beautiful-air-cli set --ip APPLIANCE_IP_ADDRESS --token TOKEN --key KEY --mode 1

打开/关闭离子模式(0 或 1)

midea-beautiful-air-cli set --ip APPLIANCE_IP_ADDRESS --token TOKEN --key KEY --ion-mode 1

打开/关闭设备模式(0 或 1)

midea-beautiful-air-cli set --ip APPLIANCE_IP_ADDRESS --token TOKEN --key KEY --running 1

打开/关闭泵(0 或 1)

midea-beautiful-air-cli set --ip APPLIANCE_IP_ADDRESS --token TOKEN --key KEY --pump 1

多种设置的组合

midea-beautiful-air-cli set --ip APPLIANCE_IP_ADDRESS --token TOKEN --key KEY --fan-speed 60 --target-humidity 50

通过美的云API设置目标湿度(注意使用--id--cloud选项)

midea-beautiful-air-cli set --id APPLIANCE_ID --account ACCOUNT_EMAIL --password PASSWORD --target-humidity 55 --cloud

获取所有可设置属性的列表:

midea-beautiful-air-cli set --help

指定日志级别

--log使用选项指定日志级别。

设置DEBUG级别

midea-beautiful-air-cli --log DEBUG discover --account ACCOUNT_EMAIL --password PASSWORD

非常详细的级别(可能包含机密信息)

midea-beautiful-air-cli --log NOTSET discover --account ACCOUNT_EMAIL --password PASSWORD

设置WARNING级别(如果未指定选项,则默认日志级别)

midea-beautiful-air-cli --log WARNING discover --account ACCOUNT_EMAIL --password PASSWORD

通过传递--verbose选项启用附加日志记录。--no-redact可以通过传递选项禁用敏感信息的编辑。

代码示例

发现本地网络上的设备:

from midea_beautiful import find_appliances


appliances = find_appliances(
    account="USER_EMAIL@example.com",  # Account e-mail
    password="secret_password",  # Account password
)
for appliance in appliances:
    print(f"{appliance!r}")

获取设备状态:

from midea_beautiful import appliance_state

appliance = appliance_state(
    address=192.0.2.2,  # APPLIANCE_IP_ADDRESS 
    token="TOKEN",  # TOKEN obtained from Midea API
    key="KEY",  # Token KEY obtained from Midea API
)
print(f"{appliance!r}")

从云端获取设备状态:

from midea_beautiful import appliance_state, connect_to_cloud


cloud = connect_to_cloud(
            account="USER_EMAIL@example.com",  # Account e-mail
            password="secret_password",  # Account password
            appname="MSmartHome"
        )

appliance = appliance_state( 
    cloud=cloud,  # Account e-mail
    id=appliance_id,  # Appliance id obtained from Midea API 
)
print(f"{appliance!r}")

建立图书馆

当发布 Git Hub 版本时,库会自动构建、打包并发布到PyPI 。

已知的问题

  • 某些值并非在所有设备上都可用。某些设备可能会确认无效的操作(例如离子模式)
  • 温度传感器经常低估实际环境温度。这可能是由于传感器靠近加湿器的冷却管、算法或电子设备错误。报告不足取决于活动模式,更强的模式可能会导致与实际温度的较大偏差。

也可以看看

注意

Midea、Inventor、Comfee'、Pro Breeze 和其他名称是其各自所有者的商标。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

midea-beautiful-air-0.9.15.tar.gz (44.5 kB 查看哈希

已上传 source

内置分布

midea_beautiful_air-0.9.15-py3-none-any.whl (45.2 kB 查看哈希

已上传 py3