零基础打造全屋智能控制系统 篇三十九:美的洗衣机接入开源智能家居系统的洗衣程序自动化设定及定时操作

2020-09-27 17:50:44 20点赞 85收藏 14评论

先展示下成果,只需要按一下小米无线开关,美的洗衣机(美的,小天鹅,比佛利)就能自动完成开机,程序选择,洗涤,脱水,温度设定,开始运行:


大家好,我是你们的智能家居领路人CT。其实无论是不是在玩智能家居,相信大家家里总会有上那么一两件美的产品,小到电热水壶电饭煲,大到冰箱空调,美的可以说是真正的国民电器品牌,即使是抱着小米联万物的性价比智能家居玩家,在购买空调的时候,也会在小米/美的(华凌)间纠结,最后多半会因为品牌质量以及售后网络原因去选择美的/华凌品牌,我自己在今年上半年就给出租屋购置了3台华凌空调。但是对于选择了美的品牌的智能家居玩家,之后怎么将美的产品接入开源智能家居系统(HA,Domoticz,IOBroker)等就成了实打实摆在面前的问题。像是挂壁空调,实在不行还能搞个空调伴侣给按上,米家的空调伴侣2代也就几十块钱的事。但是洗衣机这东西就比较犯难了。或许有很多人会说,洗衣机有什么好自动化的,我想,要不是你不时常洗衣服,就是你还没懒到我这样的程度。下面先来说说我洗衣服的流程,我家目前使用的洗衣机是众测小小值送的比佛利双筒洗衣机:

美的洗衣机接入开源智能家居系统的洗衣程序自动化设定及定时操作

这台洗衣机最大的特点是上下双筒,上桶3kg波轮,下桶12kg滚筒。我使用的时候就是上筒专洗娃的衣服,下桶洗大人的衣服,当然,如果家里没有娃的话,可以上筒洗贴身内衣,下桶洗常规衣物等等,这个随意。而我的洗衣习惯是晚上洗完澡把衣服扔进去,然后预约第二天早上6点洗衣完成。光这样想是不是挺简单的,但是你别忘了,在很多时候,我们洗衣服的时候用的都不是默认程序,而是会根据自己的洗衣习惯,去调整洗衣设置,比如像我上筒洗娃的衣服,我会先选择上筒,然后选择童装模式,然后把洗涤时间调到最长,把脱干时间也调到最长,水温设定到40度,洗涤剂用量少,然后再根据现在的时间,去算预约几个小时后洗完。包括下桶,主要的使用模式为棉麻,同样也都会自定义各选项和预约时间,说实话,看起来简单,操作起来也很简单,但是每天这么弄,觉得很烦。所以早在很久之前就试过抓包等常规手段相对这台洗衣机进行破解,无奈,多次尝试都以失败告终。直到今年,大神Mac_Zhou在HA论坛发帖,介绍了他根据国外开发者编写的云端控制美的空调的程序,做了msmart的美的空调局域网控制库:

美的洗衣机接入开源智能家居系统的洗衣程序自动化设定及定时操作

最后特别注明,这个协议除了美的空调外,应该也适用于其他美的智能设备。所以我当时的想法就是一个字“等”,等到大家把美的其他产品都接进来了,或者大神把协议优化的更简易了之后,我直接就可以拿来想用了。不过事与愿违的是,过去了几个月,似乎就美的局域网空调这事,还有许多在探讨的。因为美的的物联网协议目前新品使用的V3版,而Mac_Zhou是基于自己在使用的V2协议版本的空调进行开发的,因为其手上没有V3版本的空调,所以这部分进展也比较慢。其次,像洗衣机一类的物件,说实话,大家还是比我想象的勤快很多,毕竟洗衣服嘛,肯定是要把衣服放进洗衣机的,都走到了洗衣机面前,你多按几个按钮又有什么麻烦的。我这样懒出境界的还是少数,所以,为了获得未来日子的“懒”只能先勤快下了。

一、MSMART安装和设备DISCOVER

首先要确保自己的系统(LINUX)安装了python3和pip3的环境,玩开源智能的谁还没有台跑linux的虚拟机呢。然后直接运行命令:pip3 install msmart 如果出现权限错误就记得加上sudo给予root权限。(项目地址:https://github.com/mac-zhou/midea-msmart)

安装完成后执行命令:midea-discover,程序就会自动查找局域网内的美的设备:

美的洗衣机接入开源智能家居系统的洗衣程序自动化设定及定时操作

在我的局域网内,一共发现了三台美的设备,分别是洗衣机,空调和洗碗机,其中0xe1洗碗机虽然是美的的,但是接入的平台是阿里智能。。控制协议都是V2版本的,如果是V3的话可以暂时等等,目前暂不支持。而即使是V2协议,大家也可能看到前面还分supported和unsupported两种,目前supported的仅限于空调,其他设备都不支持。当然这个midea-discover只是为了让你获取设备的ID,然后可以通过HA插件直接控制空调。而我这只是为了验证MSMART安装是否成功。

二、洗衣机命令抓包验证

其实在前文已经说过,我之前也尝试过使用wireshark对设备通信进行抓包,不过抓到的一直是通过云端控制的https加密包,实际上毫无用处。据说是早期版本的APP是可以通过局域网来控制设备的,不过尝试装了之后发现加载不了洗衣机的控制插件。所以只能转换思路,根据Mac_Zhou的说明,在最早时期没有加midea-discover功能前的msmart是需要大家自己通过adb logcat来获取设备ID的,于是照葫芦画瓢,把安卓手机接上电脑,然后打开美居APP(需使用6.7.1.73版本),所以这里需要的是设备是接入美居APP使用的,使用adb logcat来进行抓包。(记得自行安装adb驱动)

命令:adb logcat -s '*:E' > d:/6.log (d:/6.log表示将日志保存在d盘6.log文件中)

然后我们在手机上对洗衣机操作上一通,按ctrl+c中断抓包,然后把日志文件打开:

美的洗衣机接入开源智能家居系统的洗衣程序自动化设定及定时操作

你会发现日志里面记录了非常多的内容,这时候比较简单的方法是搜索"170,"开头的数组,因为美的IOT控制命令的前两位就是aa,对应的10进制数字就是170,找到这个,就能获得局域网命令。当然,因为设备关系,也有可能有些设备无法抓包到命令,这个就需要自己想其他办法了。通过一通操作,我获取了我这台洗衣机的一堆命令码,这些14位的命令码主要是简单的开关机,启动暂停和模式切换:

美的洗衣机接入开源智能家居系统的洗衣程序自动化设定及定时操作

除此以外,还有细项设置的命令,不过细项命令的长度非常长,例如这是上筒的细项设置命令:170,48,217,0,0,0,0,0,0,2,218,4,1,0,5,1,0,9,1,2,10,1,0,11,1,18,12,1,3,13,1,9,16,2,0,0,17,1,0,22,1,0,32,1,0,34,1,1,52

而下桶功能更多,所以命令长度达到了79位:

170,79,217,0,0,0,0,0,0,2,219,4,1,30,5,1,1,6,1,0,7,1,4,8,1,4,9,1,4,10,1,1,11,1,1,12,1,0,13,2,0,0,15,1,0,16,1,0,17,1,0,18,1,0,19,1,0,20,1,1,29,1,0,39,1,0,42,1,1,40,1,7,41,1,23,49,2,254,254,236

接着就要验证这些抓到的命令是否正确了,这里我就犯难了,因为MSMART目前是支持空调,并且只有HA的控制插件,虽然对于会python的朋友来说,照着源程序改一下可能就好,但是对于我这样的小白,估计得花上3年……,于是我就选择了最easy的一种方式,直接找了协议的原作者Mac_Zhou,让他帮忙写了一个命令加密及局域网发送的脚本(已经得Mac_Zhou允许,程序会在本文最后分享给大家。),然后我只要填写设备的IP地址,ID,以及HEX未加密命令就能完成命令的加密和发送操作,例如170,14,217,0,0,0,0,0,0,2,218,1,1,1,58这条开机命令,首先是将其转换为16进制:aa0ed900000000000002da0101013a,然后运行命令:

python3 sendcmd.py 8796XXX(设备ID) 10.0.0.241(设备IP) 6444 (端口号)aa0ed900000000000002da0101013a

就能看到洗衣机开机了。这么说来我获得的命令都是正确的,按照常规,我要做的应该是去对应分析其中每一位数字所包含的含义。但是实际上我思考了下,虽然说洗衣机有那么一大堆模式和设置,但是我实际上日常使用的也就那么4-5种固定的程序及设置,我其实只要把这几种设置的命令抓包抓出来,每次用的时候,粘贴发送不就可以了么。例如我要洗娃的衣服,就按顺序发送开机,选择上桶,童装模式,细节设定这四条命令就好。

三、自动化设置

命令有了,接着就是自动化设置了,其实自动化也很简单,这里仅仅阐述下思路,在文章头部展示的完全是为演示方便所以使用了一个无线开关,真正应用时可以连无线开关都不需要,因为每次洗衣服都是在晚上,而上筒童装洗涤我只有一个设定,所以只要在18点到0点系统检测到洗衣机舱门打开后又关上,就自动设置好第二天早上5点开始运行童装洗涤模式(洗涤时间为72分钟),并且通过tts语音播报程序已设定。而下桶可能会使用到几种模式,所以将最常用的一种模式设为默认,然后再加个无线开关,单击,双击分别对应另外两种模式。然后大多数时候也仅仅需要把衣服放进去就好,最多也就是放好衣服之后,再单击或双击下无线开关,洗衣机就能自动设定程序,到点开始洗涤了,当然,要是你愿意,也完全可以通过智能音箱来对洗衣机进行控制。

本文所用到的美居,adb,PY程序下载:

链接:https://pan.baidu.com/s/1dvwAiA-08O5qDp6k8US-7Q

提取码:6bnq

最后祝大家玩的开心。

展开 收起
14评论

  • 精彩
  • 最新
  • 已打赏,能接入hass么?

    校验提示文案

    提交
    程序和方法都说了,理论上接啥都可以,不过还是先要抓包看看能不能抓到命令

    校验提示文案

    提交
    收起所有回复
  • 不放进去还是不行的 [高兴]

    校验提示文案

    提交
    嗯,这个暂时无解,不过昨晚我设置好了只要晚六点到23点59分把衣服扔进去,系统就自动设定第二天早上洗完衣服,默认是最常用的程序,单击无线开关切换程序,还会有tts语言确认,大致上能省一步是一步

    校验提示文案

    提交
    这个有一点定时还是有好处,

    校验提示文案

    提交
    收起所有回复
  • 前提时你的洗衣机需要是互联网,传统洗衣机不得行,😙

    校验提示文案

    提交
  • 以前用ios的自动化把闹钟和美居关联起来,每天早上闹钟一响就自动帮我把华凌的空调关了,后面不知道为什么不行了,瞬间觉得空调不值了 [皱眉] [皱眉] 。前两天换了华凌的洗衣机,居然不能接入美居,栽了 [喜极而泣]

    校验提示文案

    提交
  • 有没有办法用米家来控制美的,想过用中间程序当跳板,结果没试成功

    校验提示文案

    提交
  • 这方法感觉对我超纲了,我唯一的诉求就是。小米的无线开关能控制燃气热水器启动一次循环。

    校验提示文案

    提交
  • 能整个HA插件么 [喜极而泣] [喜极而泣] [喜极而泣] 美的洗碗机 美的洗衣机 美的烤箱

    校验提示文案

    提交
    有现成插件吗 动手能力太差 [喜极而泣] [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 深海暗蓝 观察团路过到此一游, 紫苏布丁 [观察]

    校验提示文案

    提交
  • 大佬 现在有没有什么便捷方法可以接入

    校验提示文案

    提交
  • 请教楼主,就算获取到命令后,如何在HA里发命令给美的设备呢?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
85
扫一下,分享更方便,购买更轻松