Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

USA - No heated steering wheel with multiple levels #700

Open
joeshaw opened this issue Dec 24, 2024 · 3 comments
Open

USA - No heated steering wheel with multiple levels #700

joeshaw opened this issue Dec 24, 2024 · 3 comments

Comments

@joeshaw
Copy link
Contributor

joeshaw commented Dec 24, 2024

  • Hyundai / Kia Connect version: 3.30.0

Description

On USA vehicles with more than one heated steering wheel level (such as a 2024 Kia EV9), sending "steeringWheel": 1 is insufficient, we also need to send steeringWheelStep.

Using the kia_uvo home-assistant integration, I saw this when I sent a request to the API:

'remoteClimate': {'airTemp': {'unit': 1, 'value': '70'}, 'airCtrl': True, 'defrost': True, 'heatingAccessory': {'rearWindow': 1, 'sideMirror': 1, 'steeringWheel': 1}, 'ignitionOnDuration': {'unit': 4, 'value': 15}, 'heatVentSeat': {'driverSeat': {'heatVentType': 1, 'heatVentLevel': 4, 'heatVentStep': 1}, 'passengerSeat': {'heatVentType': 0, 'heatVentLevel': 1, 'heatVentStep': 0}, 'rearLeftSeat': {'heatVentType': 0, 'heatVentLevel': 1, 'heatVentStep': 0}, 'rearRightSeat': {'heatVentType': 0, 'heatVentLevel': 1, 'heatVentStep': 0}}}}

Note heatingAccessory there. Formatted for readability:

'heatingAccessory': {
    'rearWindow': 1, 
    'sideMirror': 1, 
    'steeringWheel': 1
}

Once the command had been processed, this is what I was receiving back from the vehicle:

"heatingAccessory":{
    "steeringWheel":0,
    "sideMirror":1,
    "rearWindow":1,
    "steeringWheelStep":0
}

After testing, and looking at what the web UI sends, steeringWheelStep needs to be 1 for low and 2 for high.

Next steps

From a protocol standpoint this is an easy fix. But what's less clear to me is how best to fix this. In const.py, the different heating settings are an exclusive enum:

HEAT_STATUS = {
    None: None,
    0: "Off",
    1: "Steering Wheel and Rear Window",
    2: "Rear Window",
    3: "Steering Wheel",
    # Seems to be the same as 1 but different region (EU):
    4: "Steering Wheel and Rear Window",
}

Should we always just send steeringWheelStep: 2 if steering wheel heating is enabled? Do we want to allow the step to be specified in some way? I am also unsure what will happen if we try sending a step to a vehicle that doesn't support it. Hopefully it'll be ignored but I don't have a way to test that.

@joeshaw
Copy link
Contributor Author

joeshaw commented Dec 24, 2024

#701 implements the simple thing, which is to always set steeringWheelStep: 2 on requests.

@joeshaw
Copy link
Contributor Author

joeshaw commented Dec 24, 2024

hmm, I am also noticing that HEAT_STATUS doesn't line up with what the USA code does:

                "heatingAccessory": {
                    "rearWindow": 1 if options.heating in [3, 4] else 0,
                    "sideMirror": 1 if options.heating == 4 else 0,
                    "steeringWheel": 1 if options.heating in [2, 4] else 0,
                    "steeringWheelStep": 2 if options.heating in [2, 4] else 0,
                },

@joeshaw
Copy link
Contributor Author

joeshaw commented Dec 24, 2024

I pushed a commit to #701 that fixes the mismatch between the heatingAccesory values and HEAT_STATUS. I think it was just a mistake in #668.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant