客户端python库,用于eva ii pro wifi智能除湿设备,由美的/inventor提供。

midea-inventor-lib的Python项目详细描述


EVA II Pro WiFi智能除湿设备库

pypi " rel="nofollow"> src= src= src= src= " rel="nofollow"> src=build status已知漏洞hicountinvate

作者:Andrea Barbaresi=2018、2019=

许可证:GPLv3

此回购协议包含python包,该包实现了一个客户端库,用于连接到由midea/inventor提供的web api,以便远程控制eva ii pro wifi智能除湿设备。

有关除湿器设备的信息,请在此处找到

您可以在Amazon上购买智能除湿设备(WiFi版本)(以下两个链接包含我的推荐代码):

目标设备

尽管库的设计一般针对任何现有的美的设备,但请注意,目前所实现的功能仅适用于除湿设备(0xA1型设备)。

如果您对开发能够控制美的/inventor空调系统(0xac类型设备)的代码感兴趣,您可以通过balazs nadasdi查看ruby&rails库。/美的空调" rel="nofollow">这里。

先决条件

为了使用提供的python库控制eva ii pro wifi智能除湿器设备,首先需要下载并安装官方应用程序,以便向云平台注册有效用户(需要有效的电子邮件地址)。 谷歌和苹果的应用商店提供官方配套应用:

使用有效凭据(即电子邮件地址和密码)连接后,必须将家庭设备添加到使用应用程序配置的设备列表中(请参阅官方应用程序的手册以完成此任务)。

一旦配置了有效的注册用户和家庭设备,就可以开始使用python库而不是office应用程序通过Internet控制设备(安装库时的客户端和家庭设备都应连接到Internet)。

安装

从pypi安装,使用 蟒蛇. < /P>

pip install midea-inventor-lib

没有安装PIP?尝试安装它,从 命令行:

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

或者,您可以下载源代码(zip),然后运行:

python setup.py install

您可能需要使用sudo来运行上述命令

开始

在python代码中使用库的最小步骤如下所示:

步骤1:包括python包

frommidea_inventor_libimportMideaClient

步骤2:实例化mide客户端对象

使用明文密码:

client=MideaClient("user.example@gmail.com","myPassword","")

使用密码的SHA-256哈希:

client=MideaClient("user.example@gmail.com","","76549b827ec46e705fd03831813fa52172338f0dfcbd711ed44b81a96dac51c6")

启用日志记录(可选):

可以通过在mide客户端构造函数中将"verbose"参数设置为true(默认为false)来启用日志记录。 设置"调试"参数设置为true,以便记录调试消息(默认设置为false)。 将"log file"字符串参数设置为完整路径文件名,以便将库日志消息转换为文件,而不是使用控制台(默认)。 例如:

_email="user@example.com"_password="passwordExample"_sha256password=""_verbose=True#Enable logging_debug=False#Disable debug messages_logfile=""#Log to console (default)client=MideaClient(_email,_password,_sha256password,_debug,_verbose,_logfile)

步骤3:通过登录激活新会话

res=client.login()ifres==-1:print"Login error: please check log messages."else:sessionId=client.current["sessionId"]

步骤4:通过检索已配置设备的列表来获取目标设备ID

appliances={}appliances=client.listAppliances()forainappliances:print"[id="+a["id"]+" type="+a["type"]+" name="+a["name"]+"]"

步骤5:发送控制目标设备的命令 获取设备状态:

pip install midea-inventor-lib
0

开机:

pip install midea-inventor-lib
1

关闭电源:

pip install midea-inventor-lib
2

打开设置:

pip install midea-inventor-lib
3

关闭设置:

pip install midea-inventor-lib
4

设置风扇转速:

pip install midea-inventor-lib
5

设定目标湿度:

pip install midea-inventor-lib
6

设置操作模式:

pip install midea-inventor-lib
7

设置更新状态(用于一次更新多个属性):

pip install midea-inventor-lib
8

客户示例

此回购协议还包含一个完全工作的客户机(dehumi-control.py),演示如何使用"美的发明家库",以便通过命令行界面控制EVA II Pro WiFi智能除湿设备。

要使用客户端,必须通过命令行参数提供注册用户的电子邮件地址和相关密码(必须使用'-p'或'-s'选项提供明文密码或密码的SHA-256哈希):

pip install midea-inventor-lib
9

家庭助理自定义组件

[新建]家庭助手平台的自定义组件可以在/homeassiant文件夹中找到。 要激活部件,请执行以下步骤:

步骤1:将必要的文件复制到ha的配置共享文件夹中

文件夹(而不是文件夹本身)的内容复制到ha的配置共享文件夹中。

复制ha的配置共享文件夹的\deps\lib\python3.6\site packages\文件夹。

最终结果应该与此类似:

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
0

第2步:在ha的配置文件中激活美的除湿平台

配置中添加以下部分。yaml

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
1

像往常一样,您可以通过隐藏您的秘密密码!通过在secrets.yaml中指定来表示secret符号

或者,如果您愿意,可以使用sha256password参数而不是password参数来指定密码的sha-256散列

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
2

步骤3:激活调试级别日志记录(可选)

强烈建议激活美的除湿平台包含的三个组件的调试级别日志记录。如果部件不能按预期工作,则可以执行故障排除分析。

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
3

**第4步:重启ha**

您可以使用首选方法之一重新启动ha(例如,使用settings>;general>;server management og ha的web仪表板上的reboot按钮)。

如果一切正常,您将在ha仪表板中找到以下两个新实体:

  • 气候.美的除湿机
  • 传感器。美的除湿机

通过气候实体,您可以控制设备,而传感器报告检测到的环境当前湿度。

如果您找不到上面报告的实体,请检查ha生成的日志以跟踪问题。

内部构件

如果您对库使用的api消息格式的技术细节不感兴趣,可以跳过此部分。

Android和iOS平台的官方配套应用程序基于美的智能技术有限公司提供的美的SDK:

根据sdk的文档,"mideasdk是msmart维护的一个软件开发工具包。您可以基于此sdk开发自己的应用程序、智能硬件或智能电视,以控制美的生产的智能家电。"

开放式api的官方文档可以在这里找到(仅限中文): https://github.com/midea-sdk/midea-sdk.github.io/tree/master/api

除了androd和ios平台,目前还没有正式支持的其他环境。为了为所有支持python的平台开发客户端库,我使用了一个中间人web代理作为包嗅探器来了解官方android客户端和midea云服务器之间交换的a p i消息的基本信息。

可通过https://mapp appsmb.com/<;endpoint>;访问Web API服务器(应使用发布Web请求)。

最相关端点的简要描述如下:

/v1/user/login/id/get带有"loginAccount"参数的端点用于获取"loginID"参数(每个会话不同)。

/v1/user/login带有"password"参数的端点用于执行登录("返回accessToken"和"sessionID"参数)。客户端发送的password参数是从'loginid'、'password'和'appkey'参数派生的字符串的sha-256哈希。

/v1/appliance/user/list/get端点用于检索已配置设备的列表以及所有相关参数("名称"、"型号"、"活动状态"、"联机状态"等)。

/v1/appliance/transparent/send带有"order"参数的端点用于控制家庭设备(返回"reply"参数)。"order"和"reply"参数都是AES加密的;AES使用的加密/解密密钥来自"app_key"参数(常量字符串)和登录时返回的"accessToken"参数。用于加密和解密任务的相关代码部分可以在midea_security.py文件中的mideasecurity类中找到。

进一步研究(FFS)

目前,客户端python库可以通过向与家庭设备通信的云服务器发送api消息来控制除湿器设备。在这种云到云的场景中,客户机和家庭设备都需要互联网接入。 当客户机和家庭设备都关联到同一个WiFi网络时,本地控制家庭设备的可能性(即让客户机直接向家庭设备发送API消息的可能性)为FFS。

如何贡献

如果您可以用python编写代码,并且对改进和扩展此工作感兴趣,请随意克隆此repo。如果您也希望将修改内容合并到"我的回购"中,请给我一行文字。

免责声明

除了拥有一个eva i i pro wifi设备外,我与美的/发明家公司没有任何联系。这个图书馆是为我个人使用而开发的,并与其他对物联网系统和领域平台感兴趣的人共享。根据GNU公共许可证版本3,本软件按原样提供,不作任何保证。

捐款

如果这个项目可以帮助您减少开发代码的时间,您可以向我捐款。

72E676966" />

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在数据库中存储密码的java加密方法   java正则表达式否定整个正则表达式   java为什么要得到这个Hashmap输出?   看不到玻璃鱼爪哇SE 6   类对象包装器中的Java基本数据字段   java从文本文件中读取整数并存储到单独的变量中?(扫描仪)   优化大型Java数据阵列的处理和管理   如何使用Java XML包装类创建对象   java为ExecutorService invokeAll()创建包装器   java如何在Android Studio 1.0.0中设置Facebook SDK?获取SDK位置未找到错误   java在尝试从线程启动动画时调用了FromErrorThreadException   java根据哈希确认文件内容   通过java在neo4j中获取索引值相同的所有节点?   java为什么我的Validare邮政编码(布尔)程序返回false?   java会话自动从servlet/jsp生成,尽管存在以下条件:<%@page session=“false”%>   创建新LANsocket时拒绝java连接   java如何多线程更新由sql代码更新的数据库?   安卓 Java使用类作为集合来添加项   安卓为什么我的清单文件不声明java包?