tomikaa87 / gree-remote

Simple remote control utility for Gree Smart air conditioners
GNU General Public License v3.0
280 stars 64 forks source link

Need new method to obtain the key #63

Open Urusus2 opened 7 months ago

Urusus2 commented 7 months ago

I have two AC Gree Smart: on one the Wifi module firmware version is 1.16 and on the other it is 1.21 At the first with version 1.16, can get the key and send commands, but on the second with version 1.21 it no works.

Send: {"t": "scan"}

Response: First: {"t":"pack","i":1,"uid":0,"cid":"","tcid":"","pack":{"t":"dev","cid":"","bc":"00000000000000000000000000000000","brand":"gree","catalog":"gree","mac":"9424b87c2d71","mid":"10001","model":"gree","name":"","lock":0,"series":"gree","vender":"1","ver":"V3.0.0","hid":"362001065279+U-WB05RT13V1.16.bin"}}

Second: {"t":"pack","i":1,"uid":0,"cid":"","tcid":"","pack":{"t":"dev","cid":"9424b8a45120","bc":"00000000000000000000000000000000","brand":"gree","catalog":"gree","mac":"9424b8a45120","mid":"10001","model":"gree","name":"","lock":0,"series":"gree","vender":"1","ver":"V2.0.0","ModelType":"32792","hid":"362001065279+U-WB05RT13V1.21.bin"}}

Send: (first) {"cid": "app", "i": 1, "t": "pack", "uid": 0, "tcid": "9424b87c2d71", "pack": {"mac": "9424b87c2d71", "t": "bind", "uid": 0}}

Response: {"t":"pack","i":1,"uid":0,"cid":"9424b87c2d71","tcid":"app","pack":{"r":200,"t":"bindok","mac":"9424b87c2d71","key":"rY4ht8T7********"}}

Send: (second) {"cid": "app", "i": 1, "t": "pack", "uid": 0, "tcid": "9424b8a45120", "pack": {"mac": "9424b8a45120", "t": "bind", "uid": 0}}

Response: No response

I debugged some UDP messages from the application Gree+ and found: App send: {"cid":"app","i":0,"pack":"XrNPaNwaHsDor51nJ+jxj2dOuefc+nVZ406ID3vr8AgIGvgXjKqUpbJUmhOswaaBHw==","t":"pack","tag":"N+aNfYECr1Lxfj9vBixkNQ==","tcid":"9424b8a45120","uid":20004875}

Response: {"t":"pack","tag":"7SEImdNY5dnFMRPa/crP7z==","i":0,"uid":20004875,"cid":"9424b8a45120","tcid":"app","pack":"XrNYJYpLWJvHr9MmcNy5jzAd6vXW7HRa5FbIWnu85wMYE+4JmryO/qQS30DolvmBAdYWtpkUXSzCnBA7B5/LB8225UjE3C24eMDa6XWaqoBAKpiAhw/dZO4OvS75c7DmuEaL2op9TN2s6YHUA0XwBl6fW74AWu0RtUqPiIt98+AxjU2dbw=="}

is a new parameter tag...

Can help to make it work on this firmware?

KiralyCraft commented 7 months ago

It seems I have the same 362001065279+U-WB05RT13V1.21.bin as you do, assuming we also have the same WiFi chip. Did you manage to find anything else regarding the communication between the app and the device? Mine also behaves exactly the same, but I didn't get to the MITM aspect of it just yet.

Urusus2 commented 6 months ago

With the new firmware version 1.53, the old method of obtaining the private key works...

Urusus2 commented 6 months ago

For info: work with firmware versions (tested): 1.16, 1.17, 1.53 not work (tested): 1.20, 1.21, 1.22

KiralyCraft commented 6 months ago

It seems that 1.53 is available for my model as well. Testing now!

Urusus2 commented 6 months ago

I tested it. It works.

KiralyCraft commented 6 months ago

It seems my device doesn't see the update, despite it being available. Did you still use GREE+? I'm on EWPE Smart. Which URL did you use to fetch the firmware?

Urusus2 commented 6 months ago

It seems my device doesn't see the update, despite it being available. Did you still use GREE+? I'm on EWPE Smart. Which URL did you use to fetch the firmware?

In GREE+, debug mode In debug mode apk work in test mode: region test, url test.grih.gree.com. Need new account...

KiralyCraft commented 6 months ago

Hmm, thanks for the tip. I'm running GREE+ 1.18.6.8; I managed to start it with a debugger attached, but there is no region "rest", it still seems to function normally. Did you do anything else to it besides launching it in debug mode? I tried to launch both with am start -D and from Android Studio with "Profile or debug APK", but I can't get it to run with region "test" at all.

EDIT: Figured it out. It looks like all and any regions are mapped to "test.grih.gree.com", there is no explicit "test" region, but I also added an entry in my DNS server for "eugrih.gree.com" to point to "test.grih.gree.com" and it seems fine. I'm updating right now.

Urusus2 commented 6 months ago

I use edited apk, added only android:debuggable="true" in AndroidManifest.xml

KiralyCraft commented 6 months ago

Oh my! It works with 1.53! It just works with Home Assistant now, but inside the app it's not controllable anymore. But it works locally! Wow! I wonder if will auto-update from this version.

EDIT: This seems to be stable, thank you for the tip!

Tempmail1234-pass commented 5 months ago

Oh my! It works with 1.53! It just works with Home Assistant now, but inside the app it's not controllable anymore. But it works locally! Wow! I wonder if will auto-update from this version.

EDIT: This seems to be stable, thank you for the tip!

Can you please help me? How to update to firmware 1.53? @KiralyCraft

Tempmail1234-pass commented 5 months ago

How to update to 1.53? @KiralyCraft Please help.

KiralyCraft commented 5 months ago

Hi, it looks like the method was actually discovered, but not yet implemented in the official plugin. Can you look into this custom component meanwhile?

https://github.com/RobHofmann/HomeAssistant-GreeClimateComponent/tree/2.10.0

Tempmail1234-pass commented 5 months ago

@KiralyCraft I tired for countless hours, but without success. I get this message: Setup failed for custom integration 'gree': No setup or config entry setup function defined There is also an open issue on the custom component repo: https://github.com/RobHofmann/HomeAssistant-GreeClimateComponent/issues/174 So maybe it's still not working? I posted the issue on reddit and someone just commented that he have the same problem, can you help? https://www.reddit.com/r/homeassistant/comments/1dhv7oa/comment/l9569i6/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

KiralyCraft commented 5 months ago

It looks like there could be something wrong with that integration. The best place for support about it might be it's issues tracker.

I've managed to update my devices to V1.53, and that seems to work with the old methods. They might've changed something indeed, since the post you linked seems to run V1.25 (the patch accounted for V1.2[0-2] only).

It looks like the efforts have dwindled, and unfortunately I do not have access to another unit for testing and debugging. Unless someone manages to "crack" this new version too (or at least fix the component), I'd think the best way to proceed here would be to attempt physical flashing with the right firmware.

Right now I'm out of ideas about how to do that. It would be advisable to see what's your unit's firmware code, using the "scan" of this PythonCLI snippet:

https://github.com/tomikaa87/gree-remote/tree/master/PythonCLI

It's still possible that it won't show, but it's worth a shot.

Tempmail1234-pass commented 5 months ago

@KiralyCraft This is what I got {"t":"dev","cid":"9424b8b7cc08","bc":"00000000000000000000000000000000","brand":"gree","catalog":"gree","mac":"9424b8b7cc08","mid":"10001","model":"gree","name":"","lock":0,"series":"gree","vender":"1","ver":"V2.0.0","ModelType":"32776","hid":"362001065279+U-WB05RT13V1.21.bin"} Can I get it to work?

KiralyCraft commented 5 months ago

It looks like your firmware code is 362001065279, and your current version is V1.21

The version you seem to be running is 1.21; There is an available 1.22 version, although I have a feeling that's more nerfing from their side. Theoretically, it should work for you.

Can you try this integration instead? It's from a fork I've mentioned here: https://github.com/tomaszduda23/HomeAssistant-GreeClimateComponent/

This is not the original, but the forked variant which added support for the encryption. I'm not sure what version of HA this supports. I'd try to add it manually in custom_components

Tempmail1234-pass commented 5 months ago

@KiralyCraft I tried, I don't see any logs and it's not connecting. It should be the same because this fork was merged into the original repo, am I right?

KiralyCraft commented 5 months ago

It should indeed, but what made me hopeful is that this fork was reported as being functional. Have you tried both encryption versions? I wonder if it's not just a firmware thing after all. Could it be your HA instance? Could it be the AC?

If you're comfortable, you could try to set up a VM with HA (see here) where you can play with the integrations without breaking your main install. Make sure it's set up as bridged with your network adapter for proper discovery.

I'll do some digging, but so far it looks quite strange indeed;

Tempmail1234-pass commented 5 months ago

@KiralyCraft My bad, I looked for the logs in the wrong place, this is my log:

2024-06-19 11:43:10.909 INFO (MainThread) [homeassistant.components.climate] Setting up gree.climate
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] Setting up Gree climate platform
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] Adding Gree climate device to hass
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] Initialize the GREE climate device
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] name(): ac
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] name(): ac
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] supported_features(): 441
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] temperature_unit(): °C
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] hvac_modes(): [<HVACMode.AUTO: 'auto'>, <HVACMode.COOL: 'cool'>, <HVACMode.DRY: 'dry'>, <HVACMode.FAN_ONLY: 'fan_only'>, <HVACMode.HEAT: 'heat'>, <HVACMode.OFF: 'off'>]
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] min_temp(): 16
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] max_temp(): 30
2024-06-19 11:43:10.909 INFO (MainThread) [custom_components.gree.climate] target_temperature_step(): 1.0
2024-06-19 11:43:10.910 INFO (MainThread) [custom_components.gree.climate] fan_list(): ['Auto', 'Low', 'Medium-Low', 'Medium', 'Medium-High', 'High', 'Turbo', 'Quiet']
2024-06-19 11:43:10.910 INFO (MainThread) [custom_components.gree.climate] swing_modes(): ['Default', 'Swing in full range', 'Fixed in the upmost position', 'Fixed in the middle-up position', 'Fixed in the middle position', 'Fixed in the middle-low position', 'Fixed in the lowest position', 'Swing in the downmost region', 'Swing in the middle-low region', 'Swing in the middle region', 'Swing in the middle-up region', 'Swing in the upmost region']
2024-06-19 11:43:10.910 INFO (MainThread) [custom_components.gree.climate] supported_features(): 441
2024-06-19 11:43:10.910 INFO (MainThread) [custom_components.gree.climate] Gree climate device added to hass()
2024-06-19 11:43:10.910 INFO (MainThread) [custom_components.gree.climate] Retrieving HVAC encryption key
2024-06-19 11:43:10.912 INFO (MainThread) [custom_components.gree.climate] Fetching(192.168.0.165, 7000, 10, {"cid": "app","i": 1,"pack": "Jtod3XIt89Lqss6DOHEXAMwiuNsAzgfkbQU3H+DJn/zDIm9Xj1Y9Kdit9aCGHseEwf35XMKtIPQDq97Iev6J","t":"pack","tcid":"9424b8b7cc08","uid": 0, "tag" : "0O6hIyG+4TwGey8NFvt5uQ=="})
2024-06-19 11:43:10.928 INFO (MainThread) [custom_components.gree.climate] Starting SyncState
2024-06-19 11:43:10.928 INFO (MainThread) [custom_components.gree.climate] Could not connect with device.

I have the "tag" which is good, but it

Could not connect with device

What should I try? This is what I tried


- platform: gree
  name: ac
  host: 192.168.0.165
  port: 7000
  mac: '9424b8b7cc08'
  target_temp_step: 1
  encryption_version: 2
Tempmail1234-pass commented 5 months ago

@KiralyCraft It finally worked, thank you so much for your help! Also see this https://github.com/RobHofmann/HomeAssistant-GreeClimateComponent/issues/174#issuecomment-2178157325

NikolaSivkov commented 4 months ago

Just passing by to say that with https://github.com/RobHofmann/HomeAssistant-GreeClimateComponent v2.13, with the following config, it worked! Gree AC firmware version 1.21

- platform: gree
  name: Bedroom AC
  host: 192.168.1.x
  port: 7000
  mac: '94:24:b8:xx:xx:xx'
  #encryption_key: 'a3K8Bx%2r8Y7GREE' < not needed
  encryption_version: 2 # < MUST BE V2
  target_temp_step: 1
  temp_sensor: sensor.bedroom_ac_temp
  lights: input_boolean.bedroom_ac_lights
  xfan: input_boolean.bedroom_ac_xfan
  health: input_boolean.bedroom_ac_health
  sleep: input_boolean.bedroom_ac_sleep
  powersave: input_boolean.bedroom_ac_powersave
  eightdegheat: input_boolean.bedroom_ac_eightdegheat
  air: input_boolean.bedroom_ac_air
  target_temp: input_number.bedroom_ac_target_temp
MarZab commented 3 months ago

Confirming the above config works on version 2.14 with a AC Firmware 1.23 (model 32792)