DotEfekts / ElectroluxClimateComponent

Custom Component for Home Assistant to control Electrolux airconditioners
Apache License 2.0
13 stars 3 forks source link

Failed to validate JSON checksum. (AirFlower-WP71-265WT) #3

Closed NukaQuantumCode closed 10 months ago

NukaQuantumCode commented 1 year ago

Trying to get this working with an Electrolux-AirFlower-WP71-265WT, it uses the Electrolux Comfort App.

After inputting the IP address of the device, an empty config is added to home assistant and no items are added.

The HA logs reveal these 2 issues: Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 320, in _async_setup_platform await asyncio.shield(task) File "/config/custom_components/electrolux_climate/climate.py", line 42, in async_setup_entry sn = json.loads(create_from_device(discovery[0]).get_status())["sn"] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/electrolux_climate/electrolux.py", line 61, in get_status resp = self._send(0x0e, bytearray('{}', "ascii")) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/electrolux_climate/electrolux.py", line 52, in _send raise e.BroadlinkException(DataValidationError, "Failed to validate JSON checksum.") broadlink.exceptions.BroadlinkException: [Errno <class 'broadlink.exceptions.DataValidationError'>] Failed to validate JSON checksum.

And Error unloading entry Electrolux Climate for electrolux_climate Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 543, in async_unload result = await component.async_unload_entry(hass, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/electrolux_climate/__init__.py", line 18, in async_unload_entry hass.data[DOMAIN].pop(entry.entry_id) KeyError: '3e6656ff4d08206cf09d2bcbfe0bce2c'

Notes: The AC is on a separate VLAN from HomeAssistant, but in theory the 2 are setup to be able to communicate with one another. Other devices are capable of doing this for example.

DotEfekts commented 1 year ago

Hi there,

The response checksum validation failing could indicate that your device uses a different protocol to the wall mounted air conditioners that I built this against. You can try connecting the device to the same network but as you say that shouldn't be affecting it. Unfortunately without having the device there's not much I can do.

Sprew commented 1 year ago

Got the same issue. Is there any information we could provide to try to fix this issue?

DotEfekts commented 1 year ago

Protocol hacking is not my forte unfortunately, I mostly stumbled through this while comparing it to the other python-broadlink devices. If you're able to capture some of the control packets I can try and take a look but it'd be difficult without having a device to test on.

slartibartfast11 commented 11 months ago

Same error with a Kelvinator KSV25HWM.

In a tcpdump I can see $ELECTROLUX_OEM as the only plain text output in the communication. What would help debug this?

DotEfekts commented 10 months ago

If you're able to provide Wireshark or similar dumps of unencrypted commands along with what each command does then it might be possible for me to add the functionality but unfortunately its unlikely without having the device.

NukaQuantumCode commented 1 month ago

Thank you @DotEfekts for your work on this project, I agree that this is out-of-scope if it's a different protocol.

For others that may arrive here, most of these ACs also come with an IR remote and it appears that many of the commands are the same between models. I'd suggest using an IR blaster to control your AC instead.