SAIC-iSmart-API / saic-home-assistant-addon

SAIC-iSmart-API repository for Home Assistant OS (HASS.IO)
MIT License
58 stars 6 forks source link

Front window heating enables "Blowing only" #40

Closed DreamT80 closed 10 months ago

DreamT80 commented 12 months ago

I'm not sure if I should put the issue here or in one of the other repositories. But I'll start here, since I discovered it in HA.

First of all, I have an. MG ZS EV -22. I'm using the latest version of the HA addon (0.4.5).

When I enable switch.[vin]_front_window_defroster_heating, the "Blowing only" mode gets activated instead.

The MQTT broker first says topic: saic/[email]/vehicles/[vin]/climate/remoteClimateState/set value: front

...and after a while says Message 19 received at saic/[email]/vehicles/[vin]/climate/remoteClimateState at 10:46 : blowingOnly

The HA log says [ INFO ] A/C will be set to front seats only - __main__ (which also is incorrect, it isn't the seats that are heated)

However, actually enabling the blowing only (via switch.[vin]_vehicle_climate_fan_only) doesn't work:

Message 26 received at saic/[email]/vehicles/[vin]/climate/remoteClimateState/set at 10:47 : blowingOnly

Message 27 received at saic/[email]/vehicles/[vin]/climate/remoteClimateState/result at 10:47 : Failed: Unsupported payload blowingOnly

Tonno87 commented 10 months ago
                case mqtt_topics.CLIMATE_REMOTE_CLIMATE_STATE:
                    match msg.payload.decode().strip().lower():
                        case 'off':
                            LOG.info('A/C will be switched off')
                            self.saic_api.stop_ac(self.vin_info)
                        case 'blowingOnly':
                            LOG.info('A/C will be set to blowing only')
                            self.saic_api.start_ac_blowing(self.vin_info)
                        case 'on':
                            LOG.info('A/C will be switched on')
                            self.saic_api.start_ac(self.vin_info,
                                                   temperature_idx=self.vehicle_state.get_ac_temperature_idx())
                        case 'front':
                            LOG.info("A/C will be set to front seats only")
                            self.saic_api.start_ac_blowing(self.vin_info)

Seems that both values use the same command: self.saic_api.start_ac_blowing(self.vin_info)

Tonno87 commented 10 months ago

The right command for case "front" should be: self.saic_api.start_front_defrost(self.vin_info).

tosate commented 10 months ago

Thank you @Tonno87 for hint.

DreamT80 commented 10 months ago

I can confirm that it's working with the new release. Great!