Add signed Parallax lock/unlock commands

Abierto
#228 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
python

Línea de trabajo

Start by reviewing the existing SendRemoteCommand flow, phone-key derivation from send_vehicle_command, and the state-subscription entry points _start_subscription and __graphql_query. Compare the proposed messages in app/parallax/commands/body-commands.md with existing .proto files such as operation.proto; confirm the public API shape with maintainers before implementation. Done means approved message definitions, signed lock/unlock commands, state-result handling, and tests for success and failure or signature errors.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I'd like to add the Parallax way of locking and unlocking to the client, and want to agree on the shape before opening a PR.

What the app does. Android app 3.17.0 sends lock/unlock as sendParallaxPayload (SendRemoteCommand) with a signed protobuf: an HMAC-SHA256 over a serialized operation (body.locks.unlock / body.locks.lock), keyed with the same phone-key secret send_vehicle_command already derives. It then follows a vehicleCommandStatePx subscription for the result. There is no separate WAKE_VEHICLE: the request itself wakes a sleeping vehicle. The vehicle needs PVS_BD_CMD in supportedFeatures.

Tested. On an R1T with an enrolled phone key: unlock on a sleeping vehicle (waking, executing, success in 26 s) and lock on an awake one. The message layouts are written up in kaedenbrinkman/rivian-api (app/parallax/commands/body-commands.md).

Why here. I have this working in the Home Assistant integration, but it has to reach into _start_subscription and __graphql_query. Public methods would remove that.

Proposal. .proto files for the envelope, operation and state messages (like operation.proto), an encoder and decoder in rivian.parallax, and on Rivian a method to send a signed body command and one to follow its state.

Questions

  1. One call that sends and waits for completion, or the two pieces (send, subscribe) with a small helper on top? I lean to the pieces.
  2. Fine to add the new .proto files and generated modules?
  3. #218 added keyless send_vehicle_operation. This is a different, signed mutation, so I don't think they overlap. Say so if you see it differently.
  4. Is anyone already working on this?

Not tested: a bad or missing signature, closure commands (frunk, windows), failure paths. I'll open the integration PR once there is a client release.

Lenguaje dominante
Python
Estrellas
32
Forks
17
Merge medio
12 h 18 min
PR fusionados (30 d)
14

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

  • Sin Dockerfile ni archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.