mac-zhou / midea-msmart

This is a library to allow communicating to a Midea AC via the Local area network.
MIT License
147 stars 40 forks source link

有没有可能支持美的中央空调? #49

Closed JasonLiuLiuLiuLiu closed 2 years ago

JasonLiuLiuLiuLiu commented 3 years ago

Hi zhou,

研究你的代码有好几周了,一直也没有什么进展,我家的空调是美的中央空调,给它配了一个控制面板,就能在美的美居里控制所有空调内机了,空调面板型号是D1ZDK-1B,它好像兼有蓝牙网关的功能.

使用该库进行设备发现,开启debug模式后输出如下:

C:\Users\jason>midea-discover -d -a 15720****** -p **********
INFO:msmart.cli:Debug mode active
INFO:msmart.cli:msmart version: 0.1.35 Currently only supports ac devices.
INFO:msmart.cli:Sending Device Scan Broadcast...
DEBUG:asyncio:Using proactor: IocpProactor
DEBUG:msmart.scanner:Broadcast message sent: 0
DEBUG:msmart.scanner:Socket timeout

也尝试了使用tcpdump进行抓包,抓包使用的命令是是在另外一个issue中给出的: tcpdump -i any host 192.168.101.155 -p -nn -s 0 -w midea.pcap -vvv 其中192.168.101.155是控制面板的IP地址,但是抓了一下午也才抓出来6k的pcap文件,使用你在另外一个库中的pcap-decrypt.py打开后该文件后报错如下:

C:\Users\jason\Downloads\midea-ac-py-master\midea-ac-py-master>python pcap-decrypt.py midea.pcap
Traceback (most recent call last):
  File "C:\Users\jason\Downloads\midea-ac-py-master\midea-ac-py-master\pcap-decrypt.py", line 78, in <module>
    for packet in cap:
  File "C:\Users\jason\AppData\Local\Programs\Python\Python39\lib\site-packages\pyshark\capture\capture.py", line 232, in _packets_from_tshark_sync
    tshark_process = existing_process or self.eventloop.run_until_complete(self._get_tshark_process())
  File "C:\Users\jason\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 642, in run_until_complete
    return future.result()
  File "C:\Users\jason\AppData\Local\Programs\Python\Python39\lib\site-packages\pyshark\capture\capture.py", line 396, in _get_tshark_process
    parameters = [self._get_tshark_path(), "-l", "-n", "-T", output_type] + \
  File "C:\Users\jason\AppData\Local\Programs\Python\Python39\lib\site-packages\pyshark\capture\capture.py", line 373, in _get_tshark_path
    return get_process_path(self.tshark_path)
  File "C:\Users\jason\AppData\Local\Programs\Python\Python39\lib\site-packages\pyshark\tshark\tshark.py", line 58, in get_process_path
    raise TSharkNotFoundException(
pyshark.tshark.tshark.TSharkNotFoundException: TShark not found. Try adding its location to the configuration file. Searched these paths: ['C:\\Program Files\\Wireshark\\tshark.exe', 'C:\\Program Files (x86)\\Wireshark\\tshark.exe', 'C:\\Program Files\\Wireshark\\tshark.exe']

没有办法了,想你寻求帮助,不甚感激.

JasonLiuLiuLiuLiu commented 3 years ago

如果有需要的话可以开个端口映射或者内网跳板机给你

mac-zhou commented 3 years ago

抓包发出来看一下

JasonLiuLiuLiuLiu commented 3 years ago

midea.zip

好的,github不支持PCAP格式附件,需要解压一下

mac-zhou commented 3 years ago

midea.zip

好的,github不支持PCAP格式附件,需要解压一下

没有可用的信息 都是ARP和DHCP的包 内网环境下,打开APP,控制空调,这段时间无线AP上抓空调IP的包或者是抓手机的包

JasonLiuLiuLiuLiu commented 3 years ago

midea.zip 好的,github不支持PCAP格式附件,需要解压一下

没有可用的信息 都是ARP和DHCP的包 内网环境下,打开APP,控制空调,这段时间无线AP上抓空调IP的包或者是抓手机的包

midea.zip 好的,麻烦你再看看,这是内网环境下抓出来的

mac-zhou commented 2 years ago

midea.zip 好的,github不支持PCAP格式附件,需要解压一下

没有可用的信息 都是ARP和DHCP的包 内网环境下,打开APP,控制空调,这段时间无线AP上抓空调IP的包或者是抓手机的包

midea.zip 好的,麻烦你再看看,这是内网环境下抓出来的

抓包中看到了空调与美的云的通讯,但未看到手机和空调之间通讯,也就是未看到局域网控制的报文。 你能说一下,你是在什么设备上抓包的么?如果在路由器上,是抓不到内网的包的。

  1. 无线ap上开始抓空调ip的包
  2. 手机和空调需要同1个wifi下
  3. 打开app, 控制空调
  4. 停止抓包
JasonLiuLiuLiuLiu commented 2 years ago

嗯 对 是的 我是在我的软路由上OPENWRT抓的包,现在是使用一个小米的路由器作为软路由的AP,你的意思是要登录小米的路由器来抓包吗? 再次感谢

mac-zhou commented 2 years ago

嗯 对 是的 我是在我的软路由上OPENWRT抓的包,现在是使用一个小米的路由器作为软路由的AP,你的意思是要登录小米的路由器来抓包吗? 再次感谢

嗯 你试试 找对空调所在的2.4G WiFi的端口 好像是wifi0还是wifi1来着

JasonLiuLiuLiuLiu commented 2 years ago

经过一段时间抓包,发现该面板只与云端通讯,未抓到局域网通信信息,先关掉这个issue了,有空我再继续研究,感谢楼主