通过本地网络控制美的电器的库
项目描述
这是一个可以通过局域网与美的空调和除湿机通信的库。
美的空气
该库允许在本地网络上发现美的空调和除湿机,然后获取它们的状态并进行控制。这个名字来自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-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 866df33271a4c98fc431d8af939dab2f33f8a5a6876436ab298088b2127815c3 |
|
MD5 | 8cc348ee38c4d0abd7144f4f5052ffae |
|
布莱克2-256 | d2882f5241e86028e6989476aa2e9679554349334e04ec3daaab12722957ad15 |