Add signed Parallax lock/unlock commands

オープン
#228 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
python

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
Python
スター
32
フォーク
17
平均マージ
12時間 18分
マージ済み PR(30日)
14

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。