rivian-python-client 2.2.0b2__tar.gz → 2.2.0b4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/PKG-INFO +1 -1
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/__version__.py +1 -1
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/body.py +1 -1
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/charging.py +16 -6
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/comfort.py +35 -47
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/device_table.py +1 -1
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/dynamics.py +31 -29
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/energy.py +6 -11
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/energy_edge_compute.py +6 -8
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/holiday_celebration.py +2 -4
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/navigation.py +12 -32
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/ota.py +4 -7
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/body.proto +2 -2
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/charging.proto +6 -5
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/charging_pb2.py +12 -12
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/charging_pb2.pyi +6 -6
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/comfort.proto +11 -11
- rivian_python_client-2.2.0b4/src/rivian/parallax/proto/comfort_pb2.py +78 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/departure.proto +1 -1
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/departure_pb2.py +11 -11
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/device_table.proto +1 -1
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/dynamics.proto +19 -20
- rivian_python_client-2.2.0b4/src/rivian/parallax/proto/dynamics_pb2.py +72 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/dynamics_pb2.pyi +12 -12
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/energy.proto +6 -6
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/energy_edge_compute.proto +12 -12
- rivian_python_client-2.2.0b4/src/rivian/parallax/proto/energy_edge_compute_pb2.py +49 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/energy_pb2.py +11 -11
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/geofence.proto +1 -1
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/holiday_celebration.proto +3 -3
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/holiday_celebration_pb2.py +12 -12
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/navigation.proto +10 -10
- rivian_python_client-2.2.0b4/src/rivian/parallax/proto/navigation_pb2.py +78 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/ota.proto +4 -4
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/ota_pb2.py +25 -25
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/security.proto +1 -1
- rivian_python_client-2.2.0b4/src/rivian/parallax/proto/security_pb2.py +66 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/vehicle.proto +23 -16
- rivian_python_client-2.2.0b4/src/rivian/parallax/proto/vehicle_pb2.py +64 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/vehicle_pb2.pyi +15 -6
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/security.py +2 -2
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/vehicle.py +47 -33
- rivian_python_client-2.2.0b2/src/rivian/parallax/proto/comfort_pb2.py +0 -78
- rivian_python_client-2.2.0b2/src/rivian/parallax/proto/dynamics_pb2.py +0 -72
- rivian_python_client-2.2.0b2/src/rivian/parallax/proto/energy_edge_compute_pb2.py +0 -49
- rivian_python_client-2.2.0b2/src/rivian/parallax/proto/navigation_pb2.py +0 -78
- rivian_python_client-2.2.0b2/src/rivian/parallax/proto/security_pb2.py +0 -66
- rivian_python_client-2.2.0b2/src/rivian/parallax/proto/vehicle_pb2.py +0 -62
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/.gitignore +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/README.md +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/pyproject.toml +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/__init__.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/ble.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/const.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/exceptions.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/__init__.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/core.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/departure.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/gearguard_streaming.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/geofence.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/parallax.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/__init__.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/body_pb2.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/body_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/comfort_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/departure_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/device_table_pb2.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/device_table_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/energy_edge_compute_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/energy_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/gearguard_streaming.proto +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/gearguard_streaming_pb2.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/gearguard_streaming_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/geofence_pb2.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/geofence_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/holiday_celebration_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/navigation_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/ota_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/parallax.proto +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/parallax_pb2.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/parallax_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/secure_file_transfer.proto +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/secure_file_transfer_pb2.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/secure_file_transfer_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/security_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/user_passcodes.proto +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/user_passcodes_pb2.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/user_passcodes_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/vehicle_access.proto +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/vehicle_access_pb2.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/vehicle_access_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/secure_file_transfer.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/user_passcodes.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/vehicle_access.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/py.typed +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/rivian.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/schemas/charging.graphql +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/schemas/gateway.graphql +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/schemas/orders.graphql +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/utils.py +0 -0
- {rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/ws_monitor.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rivian-python-client
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.0b4
|
|
4
4
|
Summary: Rivian API Client (Unofficial)
|
|
5
5
|
Author-email: Brian Retterer <bretterer@gmail.com>, "J.R. Gutierrez" <jrgutier@gmail.com>, Nathan Spencer <natekspencer@gmail.com>, Trevor Mack <drummer8001@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -196,7 +196,7 @@ def decode_wiper_fluid_level(m: body_pb2.WiperFluidLevel) -> dict[str, Any]:
|
|
|
196
196
|
"""body.wipers.fluid_level — washer fluid level.
|
|
197
197
|
|
|
198
198
|
Fields:
|
|
199
|
-
_wiperFluidLevel: int — raw
|
|
199
|
+
_wiperFluidLevel: int — raw
|
|
200
200
|
"""
|
|
201
201
|
if (v := _present(m, "field_2")) is None:
|
|
202
202
|
return {}
|
{rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/charging.py
RENAMED
|
@@ -219,20 +219,30 @@ _CHARGER_STATUS_MAP: Final[dict[int, str]] = {
|
|
|
219
219
|
|
|
220
220
|
@RVMDecoder.register("charging.energy.state", charging_pb2.EnergyState)
|
|
221
221
|
def decode_energy_state(m: charging_pb2.EnergyState) -> dict[str, Any]:
|
|
222
|
-
"""charging.energy.state — charger connection
|
|
222
|
+
"""charging.energy.state — charger connection and charging state.
|
|
223
223
|
|
|
224
224
|
Fields:
|
|
225
225
|
chargerStatus: str — GraphQL chargerStatus values
|
|
226
226
|
("chrgr_sts_not_connected" | "chrgr_sts_connected_no_chrg" |
|
|
227
227
|
"chrgr_sts_connected_charging"); inferred
|
|
228
|
-
|
|
228
|
+
chargerState, connectionState: str | None — as in
|
|
229
|
+
charging.session.status
|
|
230
|
+
_field3: int — raw
|
|
229
231
|
"""
|
|
230
|
-
result: dict[str, Any] = {
|
|
232
|
+
result: dict[str, Any] = {
|
|
233
|
+
"chargerState": _enum(
|
|
234
|
+
_CHARGING_STATE_MAP, m.charging_state or None, what="charging state"
|
|
235
|
+
),
|
|
236
|
+
"connectionState": _enum(
|
|
237
|
+
_CONNECTION_STATE_MAP,
|
|
238
|
+
m.connection_state or None,
|
|
239
|
+
what="charging connection state",
|
|
240
|
+
),
|
|
241
|
+
}
|
|
231
242
|
if (v := _present(m, "charger_status")) is not None:
|
|
232
243
|
result["chargerStatus"] = _enum(_CHARGER_STATUS_MAP, v, what="charger status")
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
result[f"_field{num}"] = v
|
|
244
|
+
if (v := _present(m, "field_3")) is not None:
|
|
245
|
+
result["_field3"] = v
|
|
236
246
|
return result
|
|
237
247
|
|
|
238
248
|
|
{rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/comfort.py
RENAMED
|
@@ -17,9 +17,7 @@ def decode_hvac_settings_status(m: comfort_pb2.HvacSettingsStatus) -> dict[str,
|
|
|
17
17
|
Fields:
|
|
18
18
|
hvacTargetTemperature: float (°C; 63.5 = "HI", set while defrosting)
|
|
19
19
|
"""
|
|
20
|
-
|
|
21
|
-
return {}
|
|
22
|
-
return {"hvacTargetTemperature": round(v, 1)}
|
|
20
|
+
return {"hvacTargetTemperature": round(m.target_temperature, 1)}
|
|
23
21
|
|
|
24
22
|
|
|
25
23
|
@RVMDecoder.register("comfort.user_modes.state", comfort_pb2.UserModesState)
|
|
@@ -132,12 +130,10 @@ def decode_cabin_temperatures(m: comfort_pb2.CabinTemperatures) -> dict[str, Any
|
|
|
132
130
|
cabinClimateDriverTemperature: float (°C) — set point, same as
|
|
133
131
|
`hvacTargetTemperature`
|
|
134
132
|
"""
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
result["cabinClimateDriverTemperature"] = round(v, 1)
|
|
140
|
-
return result
|
|
133
|
+
return {
|
|
134
|
+
"cabinClimateInteriorTemperature": round(m.interior_temperature, 1),
|
|
135
|
+
"cabinClimateDriverTemperature": round(m.driver_set_point, 1),
|
|
136
|
+
}
|
|
141
137
|
|
|
142
138
|
|
|
143
139
|
@RVMDecoder.register(
|
|
@@ -146,24 +142,20 @@ def decode_cabin_temperatures(m: comfort_pb2.CabinTemperatures) -> dict[str, Any
|
|
|
146
142
|
def decode_cabin_ventilation(m: comfort_pb2.CabinVentilationSetting) -> dict[str, Any]:
|
|
147
143
|
"""comfort.cabin.cabin_ventilation_setting — passive ventilation settings.
|
|
148
144
|
|
|
149
|
-
Fields
|
|
145
|
+
Fields:
|
|
150
146
|
cabinVentilationEnabled: bool
|
|
151
|
-
cabinVentilationMode: str ("AUTO" | "MANUAL" | "OFF")
|
|
147
|
+
cabinVentilationMode: str | None ("AUTO" | "MANUAL" | "OFF")
|
|
152
148
|
cabinVentilationWindowsPosition: int (percent open)
|
|
153
149
|
cabinVentilationSunroofPosition: int (percent open)
|
|
154
150
|
cabinVentilationDuration: int (minutes)
|
|
155
151
|
"""
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
):
|
|
164
|
-
if (v := _present(m, field)) is not None:
|
|
165
|
-
result[key] = v
|
|
166
|
-
return result
|
|
152
|
+
return {
|
|
153
|
+
"cabinVentilationEnabled": m.enabled,
|
|
154
|
+
"cabinVentilationMode": m.mode or None,
|
|
155
|
+
"cabinVentilationWindowsPosition": m.windows_position,
|
|
156
|
+
"cabinVentilationSunroofPosition": m.sunroof_position,
|
|
157
|
+
"cabinVentilationDuration": m.duration,
|
|
158
|
+
}
|
|
167
159
|
|
|
168
160
|
|
|
169
161
|
@RVMDecoder.register(
|
|
@@ -185,29 +177,26 @@ def decode_climate_hold_status(m: comfort_pb2.ClimateHoldStatus) -> dict[str, An
|
|
|
185
177
|
Fields:
|
|
186
178
|
climateHoldStatus: str ("off" | "on" | "unavailable" | "fault" | "unspecified")
|
|
187
179
|
climateHoldAvailability: str
|
|
188
|
-
climateHoldUnavailabilityReason: str
|
|
189
|
-
climateHoldEndTime: int (epoch seconds
|
|
180
|
+
climateHoldUnavailabilityReason: str | None — None when unspecified
|
|
181
|
+
climateHoldEndTime: int | None (epoch seconds; None unless a hold runs)
|
|
190
182
|
"""
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
)
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if m.end_time.seconds:
|
|
209
|
-
result["climateHoldEndTime"] = m.end_time.seconds
|
|
210
|
-
return result
|
|
183
|
+
reason = _enum(
|
|
184
|
+
_CLIMATE_HOLD_UNAVAILABILITY_REASON_MAP,
|
|
185
|
+
m.unavailability_reason,
|
|
186
|
+
what="climate hold unavailability reason",
|
|
187
|
+
)
|
|
188
|
+
return {
|
|
189
|
+
"climateHoldStatus": _enum(
|
|
190
|
+
_CLIMATE_HOLD_STATUS_MAP, m.status, what="climate hold status"
|
|
191
|
+
),
|
|
192
|
+
"climateHoldAvailability": _enum(
|
|
193
|
+
_CLIMATE_HOLD_AVAILABILITY_MAP,
|
|
194
|
+
m.availability,
|
|
195
|
+
what="climate hold availability",
|
|
196
|
+
),
|
|
197
|
+
"climateHoldUnavailabilityReason": None if reason == "unspecified" else reason,
|
|
198
|
+
"climateHoldEndTime": m.end_time.seconds or None,
|
|
199
|
+
}
|
|
211
200
|
|
|
212
201
|
|
|
213
202
|
@RVMDecoder.register(
|
|
@@ -259,13 +248,12 @@ def decode_seat_conditioning(m: comfort_pb2.SeatConditioningStatus) -> dict[str,
|
|
|
259
248
|
plus <surface>Heat/Vent for any other surface sent (middle seats,
|
|
260
249
|
rearGlass, frontGlass, sideviewMirrors, wiperArea)
|
|
261
250
|
|
|
262
|
-
|
|
251
|
+
A surface sent without a state is off.
|
|
263
252
|
"""
|
|
264
253
|
result: dict[str, Any] = {}
|
|
265
254
|
for surface in m.surface:
|
|
266
255
|
surface_id, hvac_type = surface.id, surface.type
|
|
267
|
-
|
|
268
|
-
continue
|
|
256
|
+
state_val = _present(surface, "state")
|
|
269
257
|
if surface_id in _CABIN_SURFACE_MAP and hvac_type in _CONDITIONING_TYPE_MAP:
|
|
270
258
|
key = f"{_CABIN_SURFACE_MAP[surface_id]}{_CONDITIONING_TYPE_MAP[hvac_type]}"
|
|
271
259
|
result[key] = _CONDITIONING_LEVEL_MAP.get(state_val, state_val)
|
{rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/device_table.py
RENAMED
|
@@ -45,7 +45,7 @@ def decode_vas_keyper_devices(m: device_table_pb2.VasKeyperDevices) -> dict[str,
|
|
|
45
45
|
deleted keys
|
|
46
46
|
infoC: int — 1 while active, 2147483647 while inactive, else the
|
|
47
47
|
pairing attempt number
|
|
48
|
-
infoA, infoB: int — unknown
|
|
48
|
+
infoA, infoB: int — unknown
|
|
49
49
|
deviceId: str — hex; for a key card, the GraphQL `devices[].id`
|
|
50
50
|
phoneId: str — the phone's UUID; phone keys
|
|
51
51
|
credentialHex: str — hex; likely key material
|
{rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/dynamics.py
RENAMED
|
@@ -71,8 +71,8 @@ def decode_drive_mode(m: dynamics_pb2.DriveMode) -> dict[str, Any]:
|
|
|
71
71
|
"""
|
|
72
72
|
return {
|
|
73
73
|
"driveMode": _enum(_DRIVE_MODE_MAP, _present(m, "mode"), what="drive mode"),
|
|
74
|
-
"limitedAccelCold":
|
|
75
|
-
"limitedRegenCold":
|
|
74
|
+
"limitedAccelCold": m.limited_accel_cold,
|
|
75
|
+
"limitedRegenCold": m.limited_regen_cold,
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
|
|
@@ -83,12 +83,12 @@ def decode_gear(m: dynamics_pb2.Gear) -> dict[str, Any]:
|
|
|
83
83
|
Fields:
|
|
84
84
|
gearStatus: str
|
|
85
85
|
"""
|
|
86
|
-
return {"gearStatus": _enum(_GEAR_MAP,
|
|
86
|
+
return {"gearStatus": _enum(_GEAR_MAP, m.gear, what="gear")}
|
|
87
87
|
|
|
88
88
|
|
|
89
89
|
@RVMDecoder.register("dynamics.vehicle.gnss", dynamics_pb2.Gnss)
|
|
90
90
|
def decode_gnss(m: dynamics_pb2.Gnss) -> dict[str, Any]:
|
|
91
|
-
"""dynamics.vehicle.gnss — GPS position, altitude and
|
|
91
|
+
"""dynamics.vehicle.gnss — GPS position, altitude, bearing and speed.
|
|
92
92
|
|
|
93
93
|
Fields:
|
|
94
94
|
gnssTimeStamp: datetime — time of the fix
|
|
@@ -96,30 +96,32 @@ def decode_gnss(m: dynamics_pb2.Gnss) -> dict[str, Any]:
|
|
|
96
96
|
(the gateway's VehicleLocation shape)
|
|
97
97
|
gnssAltitude: float (meters)
|
|
98
98
|
gnssBearing: float (degrees)
|
|
99
|
+
gnssSpeed: float (m/s)
|
|
100
|
+
gnssError: {"timeStamp": datetime, "positionVertical": float (m),
|
|
101
|
+
"positionHorizontal": float (m), "speed": float (m/s),
|
|
102
|
+
"bearing": float} (the gateway's gnssError shape)
|
|
99
103
|
"""
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
result["gnssBearing"] = round(bearing, 1)
|
|
122
|
-
return result
|
|
104
|
+
if not m.ByteSize():
|
|
105
|
+
return {}
|
|
106
|
+
fix_time = from_epoch(m.time)
|
|
107
|
+
return {
|
|
108
|
+
"gnssTimeStamp": fix_time,
|
|
109
|
+
"gnssLocation": {
|
|
110
|
+
"latitude": round(m.latitude, 6),
|
|
111
|
+
"longitude": round(m.longitude, 6),
|
|
112
|
+
"timeStamp": fix_time,
|
|
113
|
+
},
|
|
114
|
+
"gnssAltitude": round(m.altitude, 1),
|
|
115
|
+
"gnssBearing": round(m.bearing, 1),
|
|
116
|
+
"gnssSpeed": round(m.speed, 2),
|
|
117
|
+
"gnssError": {
|
|
118
|
+
"timeStamp": fix_time,
|
|
119
|
+
"positionVertical": round(m.position_vertical_error, 1),
|
|
120
|
+
"positionHorizontal": round(m.position_horizontal_error, 1),
|
|
121
|
+
"speed": round(m.speed_error, 1),
|
|
122
|
+
"bearing": round(m.bearing_error, 1),
|
|
123
|
+
},
|
|
124
|
+
}
|
|
123
125
|
|
|
124
126
|
|
|
125
127
|
@RVMDecoder.register("dynamics.vehicle.location", dynamics_pb2.KnownLocation)
|
|
@@ -158,7 +160,7 @@ def decode_range(m: dynamics_pb2.Range) -> dict[str, Any]:
|
|
|
158
160
|
coldRangeNotification: str
|
|
159
161
|
"""
|
|
160
162
|
return {
|
|
161
|
-
"distanceToEmpty":
|
|
163
|
+
"distanceToEmpty": m.distance_to_empty,
|
|
162
164
|
"rangeThreshold": _enum(
|
|
163
165
|
_RANGE_THRESHOLD_MAP, _present(m, "threshold"), what="range threshold"
|
|
164
166
|
),
|
|
@@ -238,7 +240,7 @@ def decode_brake_fluid_level(m: dynamics_pb2.BrakeFluidLevel) -> dict[str, Any]:
|
|
|
238
240
|
"""dynamics.brakes.fluid_level — brake fluid level.
|
|
239
241
|
|
|
240
242
|
Fields:
|
|
241
|
-
_brakeFluidLevel: int — raw
|
|
243
|
+
_brakeFluidLevel: int — raw
|
|
242
244
|
"""
|
|
243
245
|
if (v := _present(m, "field_1")) is None:
|
|
244
246
|
return {}
|
|
@@ -50,26 +50,21 @@ def decode_battery_state(m: energy_pb2.BatteryState) -> dict[str, Any]:
|
|
|
50
50
|
batteryLevel: float (percent)
|
|
51
51
|
batteryCapacity: float (kWh)
|
|
52
52
|
range: float (km, if present)
|
|
53
|
-
batteryTempMin, batteryTempMid, batteryTempMax: float (°C
|
|
53
|
+
batteryTempMin, batteryTempMid, batteryTempMax: float (°C)
|
|
54
54
|
_bmsStateRaw: int — 4 idle, 5 discharging, 6 charging, others unnamed
|
|
55
55
|
"""
|
|
56
56
|
result: dict[str, Any] = {}
|
|
57
57
|
if m.HasField("charge_state"):
|
|
58
58
|
charge_state = m.charge_state
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (v := _present(charge_state, "pack_energy")) is not None:
|
|
62
|
-
result["batteryCapacity"] = round(v, 2)
|
|
59
|
+
result["batteryLevel"] = round(charge_state.soc, 2)
|
|
60
|
+
result["batteryCapacity"] = round(charge_state.pack_energy, 2)
|
|
63
61
|
if (v := _present(charge_state, "range")) is not None:
|
|
64
62
|
result["range"] = round(v, 1)
|
|
65
63
|
if m.HasField("temperatures"):
|
|
66
64
|
temps = m.temperatures
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
result["batteryTempMid"] = round(v, 1)
|
|
71
|
-
if (v := _present(temps, "max")) is not None:
|
|
72
|
-
result["batteryTempMax"] = round(v, 1)
|
|
65
|
+
result["batteryTempMin"] = round(temps.min, 1)
|
|
66
|
+
result["batteryTempMid"] = round(temps.mid, 1)
|
|
67
|
+
result["batteryTempMax"] = round(temps.max, 1)
|
|
73
68
|
if (v := _present(m, "bms_state_raw")) is not None:
|
|
74
69
|
result["_bmsStateRaw"] = v
|
|
75
70
|
return result
|
|
@@ -70,14 +70,12 @@ def decode_parked_energy_distributions(
|
|
|
70
70
|
if not m.HasField(field):
|
|
71
71
|
continue
|
|
72
72
|
distribution = getattr(m, field)
|
|
73
|
-
window: dict[str, float] = {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if window:
|
|
80
|
-
result[key] = window
|
|
73
|
+
window: dict[str, float] = {
|
|
74
|
+
measure_key: round(getattr(distribution, measure), 4)
|
|
75
|
+
for measure, measure_key in _ENERGY_DISTRIBUTION_MAP.items()
|
|
76
|
+
}
|
|
77
|
+
window["duration"] = distribution.duration
|
|
78
|
+
result[key] = window
|
|
81
79
|
return result
|
|
82
80
|
|
|
83
81
|
|
|
@@ -45,9 +45,7 @@ def decode_car_costume_state(
|
|
|
45
45
|
Fields:
|
|
46
46
|
costumeId: int (0 = none; other ids unmapped)
|
|
47
47
|
"""
|
|
48
|
-
|
|
49
|
-
return {}
|
|
50
|
-
return {"costumeId": v}
|
|
48
|
+
return {"costumeId": m.costume_id}
|
|
51
49
|
|
|
52
50
|
|
|
53
51
|
# Wrapped HalloweenCelebrationSettings field -> result key.
|
|
@@ -74,7 +72,7 @@ def decode_halloween_celebration_settings(
|
|
|
74
72
|
) -> dict[str, Any]:
|
|
75
73
|
"""holiday_celebration.mobile_vehicle_settings.halloween_celebration_settings.
|
|
76
74
|
|
|
77
|
-
Names come from the app
|
|
75
|
+
Names come from the app.
|
|
78
76
|
|
|
79
77
|
Fields (each only when set):
|
|
80
78
|
halloweenCostumeTheme: str
|
{rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/navigation.py
RENAMED
|
@@ -60,8 +60,7 @@ def _decode_origin(origin: TripInfo.Origin) -> dict[str, Any]:
|
|
|
60
60
|
result = _decode_geocoordinate(
|
|
61
61
|
_present(origin, "location"), "originLatitude", "originLongitude"
|
|
62
62
|
)
|
|
63
|
-
|
|
64
|
-
result["originHeading"] = v
|
|
63
|
+
result["originHeading"] = origin.heading
|
|
65
64
|
if (origin_epoch := _present(origin, "time")) is not None:
|
|
66
65
|
result["originTime"] = from_epoch(origin_epoch)
|
|
67
66
|
return result
|
|
@@ -93,11 +92,11 @@ def _decode_place(place: TripInfo.Place) -> dict[str, Any]:
|
|
|
93
92
|
("place_type", "placeType"),
|
|
94
93
|
("name", "name"),
|
|
95
94
|
("place_id", "placeId"),
|
|
96
|
-
("soc", "stateOfCharge"),
|
|
97
|
-
("range", "rangeRemaining"),
|
|
98
95
|
),
|
|
99
96
|
)
|
|
100
97
|
)
|
|
98
|
+
entry["stateOfCharge"] = place.soc
|
|
99
|
+
entry["rangeRemaining"] = place.range
|
|
101
100
|
if (arrival := _decode_timestamp(_present(place, "arrival"))) is not None:
|
|
102
101
|
entry["arrivalTime"] = arrival
|
|
103
102
|
return entry
|
|
@@ -170,17 +169,12 @@ def _decode_categorized_ranges(leg: TripInfo.Leg) -> list[dict[str, Any]]:
|
|
|
170
169
|
|
|
171
170
|
def _decode_leg(leg: TripInfo.Leg) -> dict[str, Any]:
|
|
172
171
|
"""Decode one route leg."""
|
|
173
|
-
entry =
|
|
174
|
-
|
|
175
|
-
(
|
|
176
|
-
("distance", "distance"),
|
|
177
|
-
("duration", "duration"),
|
|
178
|
-
("road_label", "roadLabel"),
|
|
179
|
-
("polyline", "polyline"),
|
|
180
|
-
),
|
|
172
|
+
entry: dict[str, Any] = {"distance": leg.distance, "duration": leg.duration}
|
|
173
|
+
entry.update(
|
|
174
|
+
_copy_present(leg, (("road_label", "roadLabel"), ("polyline", "polyline")))
|
|
181
175
|
)
|
|
182
|
-
if leg.HasField("energy")
|
|
183
|
-
entry["energyUsed"] =
|
|
176
|
+
if leg.HasField("energy"):
|
|
177
|
+
entry["energyUsed"] = leg.energy.kwh
|
|
184
178
|
# flagged/unflagged_ranges_packed duplicate the index ranges.
|
|
185
179
|
if index_ranges := _decode_index_ranges(leg):
|
|
186
180
|
entry["indexRangeSegments"] = index_ranges
|
|
@@ -307,29 +301,15 @@ def decode_trip_progress(m: navigation_pb2.TripProgress) -> dict[str, Any]:
|
|
|
307
301
|
result["nextWaypointArrivalTime"] = eta
|
|
308
302
|
if (eta := _decode_timestamp(_present(m, "final_destination"))) is not None:
|
|
309
303
|
result["finalDestinationArrivalTime"] = eta
|
|
310
|
-
result.
|
|
311
|
-
|
|
312
|
-
m,
|
|
313
|
-
(
|
|
314
|
-
("distance_remaining", "distanceRemaining"),
|
|
315
|
-
("duration_remaining", "durationRemaining"),
|
|
316
|
-
),
|
|
317
|
-
)
|
|
318
|
-
)
|
|
304
|
+
result["distanceRemaining"] = m.distance_remaining
|
|
305
|
+
result["durationRemaining"] = m.duration_remaining
|
|
319
306
|
if m.HasField("location_fix"):
|
|
320
307
|
fix = m.location_fix
|
|
321
308
|
result.update(
|
|
322
309
|
_decode_geocoordinate(_present(fix, "location"), "latitude", "longitude")
|
|
323
310
|
)
|
|
324
|
-
result.
|
|
325
|
-
|
|
326
|
-
fix,
|
|
327
|
-
(
|
|
328
|
-
("speed", "speed"),
|
|
329
|
-
("heading", "heading"),
|
|
330
|
-
),
|
|
331
|
-
)
|
|
332
|
-
)
|
|
311
|
+
result["speed"] = fix.speed
|
|
312
|
+
result["heading"] = fix.heading
|
|
333
313
|
if (fix_epoch := _present(fix, "time")) is not None:
|
|
334
314
|
result["locationTime"] = from_epoch(fix_epoch)
|
|
335
315
|
return result
|
|
@@ -110,13 +110,10 @@ def decode_deployment_state(m: ota_pb2.DeploymentState) -> dict[str, Any]:
|
|
|
110
110
|
and (v := _present(progress.install_progress, "field_2")) is not None
|
|
111
111
|
):
|
|
112
112
|
result["otaInstallProgress"] = v
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
):
|
|
118
|
-
if (v := _present(progress, field)) is not None:
|
|
119
|
-
result[key] = v
|
|
113
|
+
result["otaTimeRemaining"] = progress.time_remaining
|
|
114
|
+
result["otaUpdateCycleCount"] = progress.update_cycle_count
|
|
115
|
+
if (v := _present(progress, "field_9")) is not None:
|
|
116
|
+
result["_otaProgressField9"] = v
|
|
120
117
|
return result
|
|
121
118
|
|
|
122
119
|
|
{rivian_python_client-2.2.0b2 → rivian_python_client-2.2.0b4}/src/rivian/parallax/proto/body.proto
RENAMED
|
@@ -100,7 +100,7 @@ enum LockFault {
|
|
|
100
100
|
// body.trailer.state
|
|
101
101
|
message TrailerState {
|
|
102
102
|
optional TrailerPresence presence = 1;
|
|
103
|
-
int32 field_2 = 2; // unknown
|
|
103
|
+
int32 field_2 = 2; // unknown
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
enum ClosureFault {
|
|
@@ -218,5 +218,5 @@ enum WindowsNextAction {
|
|
|
218
218
|
|
|
219
219
|
// body.wipers.fluid_level
|
|
220
220
|
message WiperFluidLevel {
|
|
221
|
-
optional int32 field_2 = 2; // unknown
|
|
221
|
+
optional int32 field_2 = 2; // unknown
|
|
222
222
|
}
|
|
@@ -123,12 +123,13 @@ message TimeEstimation {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
// charging.energy.state
|
|
126
|
+
// The states match charging.session.status, give or take a message.
|
|
126
127
|
message EnergyState {
|
|
127
|
-
|
|
128
|
+
ChargingState charging_state = 1;
|
|
128
129
|
optional ChargerStatus charger_status = 2; // inferred
|
|
129
|
-
optional int32 field_3 = 3; // unknown
|
|
130
|
-
string field_10 = 10; //
|
|
131
|
-
|
|
130
|
+
optional int32 field_3 = 3; // unknown
|
|
131
|
+
string field_10 = 10; // unknown
|
|
132
|
+
ConnectionState connection_state = 11;
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
enum ChargerStatus {
|
|
@@ -140,5 +141,5 @@ enum ChargerStatus {
|
|
|
140
141
|
|
|
141
142
|
// charging.session.power -- live charging power; empty when not charging.
|
|
142
143
|
message SessionPower {
|
|
143
|
-
|
|
144
|
+
float power = 1; // kW
|
|
144
145
|
}
|
|
@@ -24,21 +24,21 @@ _sym_db = _symbol_database.Default()
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$rivian/parallax/proto/charging.proto\x12\x18rivian.parallax.charging\"\xe8\x04\n\x12ScheduleTimeWindow\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x43\n\x06window\x18\x02 \x01(\x0b\x32\x33.rivian.parallax.charging.ScheduleTimeWindow.Window\x1a\xbe\x02\n\x06Window\x12\x12\n\nstart_time\x18\x01 \x01(\x05\x12\x10\n\x08\x65nd_time\x18\x02 \x01(\x05\x12\x10\n\x08\x64uration\x18\x03 \x01(\x05\x12\x11\n\x04\x61mps\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12L\n\x08location\x18\x05 \x01(\x0b\x32:.rivian.parallax.charging.ScheduleTimeWindow.GeoCoordinate\x12I\n\tstart_day\x18\x06 \x01(\x0e\x32\x36.rivian.parallax.charging.ScheduleTimeWindow.DayOfWeek\x12G\n\x07\x65nd_day\x18\x07 \x01(\x0e\x32\x36.rivian.parallax.charging.ScheduleTimeWindow.DayOfWeekB\x07\n\x05_amps\x1a\x34\n\rGeoCoordinate\x12\x10\n\x08latitude\x18\x01 \x01(\x01\x12\x11\n\tlongitude\x18\x02 \x01(\x01\"\x84\x01\n\tDayOfWeek\x12\x1b\n\x17\x44\x41Y_OF_WEEK_UNSPECIFIED\x10\x00\x12\n\n\x06SUNDAY\x10\x01\x12\n\n\x06MONDAY\x10\x02\x12\x0b\n\x07TUESDAY\x10\x03\x12\r\n\tWEDNESDAY\x10\x04\x12\x0c\n\x08THURSDAY\x10\x05\x12\n\n\x06\x46RIDAY\x10\x06\x12\x0c\n\x08SATURDAY\x10\x07\"5\n\x13SessionNotification\x12\x13\n\x06\x66ield1\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\t\n\x07_field1\"a\n\x14SessionRemoteCommand\x12=\n\x07\x63ommand\x18\x01 \x01(\x0e\x32\'.rivian.parallax.charging.RemoteCommandH\x00\x88\x01\x01\x42\n\n\x08_command\"1\n\tSocSlider\x12\x16\n\tsoc_limit\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x0c\n\n_soc_limit\",\n\nTripTarget\x12\x13\n\x06\x66ield2\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\t\n\x07_field2\"\x17\n\x15SmartChargingSettings\"\x13\n\x11SmartChargingInfo\"\x1a\n\x18WeightedChargingForecast\"\xda\x01\n\rSessionStatus\x12H\n\x10\x63onnection_state\x18\x01 \x01(\x0e\x32).rivian.parallax.charging.ConnectionStateH\x00\x88\x01\x01\x12\x44\n\x0e\x63harging_state\x18\x02 \x01(\x0e\x32\'.rivian.parallax.charging.ChargingStateH\x01\x88\x01\x01\x12\x11\n\tis_active\x18\x03 \x01(\x08\x42\x13\n\x11_connection_stateB\x11\n\x0f_charging_state\"2\n\x0eTimeEstimation\x12 \n\x18\x65stimated_time_remaining\x18\x02 \x01(\x05\"\
|
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$rivian/parallax/proto/charging.proto\x12\x18rivian.parallax.charging\"\xe8\x04\n\x12ScheduleTimeWindow\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x43\n\x06window\x18\x02 \x01(\x0b\x32\x33.rivian.parallax.charging.ScheduleTimeWindow.Window\x1a\xbe\x02\n\x06Window\x12\x12\n\nstart_time\x18\x01 \x01(\x05\x12\x10\n\x08\x65nd_time\x18\x02 \x01(\x05\x12\x10\n\x08\x64uration\x18\x03 \x01(\x05\x12\x11\n\x04\x61mps\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12L\n\x08location\x18\x05 \x01(\x0b\x32:.rivian.parallax.charging.ScheduleTimeWindow.GeoCoordinate\x12I\n\tstart_day\x18\x06 \x01(\x0e\x32\x36.rivian.parallax.charging.ScheduleTimeWindow.DayOfWeek\x12G\n\x07\x65nd_day\x18\x07 \x01(\x0e\x32\x36.rivian.parallax.charging.ScheduleTimeWindow.DayOfWeekB\x07\n\x05_amps\x1a\x34\n\rGeoCoordinate\x12\x10\n\x08latitude\x18\x01 \x01(\x01\x12\x11\n\tlongitude\x18\x02 \x01(\x01\"\x84\x01\n\tDayOfWeek\x12\x1b\n\x17\x44\x41Y_OF_WEEK_UNSPECIFIED\x10\x00\x12\n\n\x06SUNDAY\x10\x01\x12\n\n\x06MONDAY\x10\x02\x12\x0b\n\x07TUESDAY\x10\x03\x12\r\n\tWEDNESDAY\x10\x04\x12\x0c\n\x08THURSDAY\x10\x05\x12\n\n\x06\x46RIDAY\x10\x06\x12\x0c\n\x08SATURDAY\x10\x07\"5\n\x13SessionNotification\x12\x13\n\x06\x66ield1\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\t\n\x07_field1\"a\n\x14SessionRemoteCommand\x12=\n\x07\x63ommand\x18\x01 \x01(\x0e\x32\'.rivian.parallax.charging.RemoteCommandH\x00\x88\x01\x01\x42\n\n\x08_command\"1\n\tSocSlider\x12\x16\n\tsoc_limit\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x0c\n\n_soc_limit\",\n\nTripTarget\x12\x13\n\x06\x66ield2\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\t\n\x07_field2\"\x17\n\x15SmartChargingSettings\"\x13\n\x11SmartChargingInfo\"\x1a\n\x18WeightedChargingForecast\"\xda\x01\n\rSessionStatus\x12H\n\x10\x63onnection_state\x18\x01 \x01(\x0e\x32).rivian.parallax.charging.ConnectionStateH\x00\x88\x01\x01\x12\x44\n\x0e\x63harging_state\x18\x02 \x01(\x0e\x32\'.rivian.parallax.charging.ChargingStateH\x01\x88\x01\x01\x12\x11\n\tis_active\x18\x03 \x01(\x08\x42\x13\n\x11_connection_stateB\x11\n\x0f_charging_state\"2\n\x0eTimeEstimation\x12 \n\x18\x65stimated_time_remaining\x18\x02 \x01(\x05\"\xa0\x02\n\x0b\x45nergyState\x12?\n\x0e\x63harging_state\x18\x01 \x01(\x0e\x32\'.rivian.parallax.charging.ChargingState\x12\x44\n\x0e\x63harger_status\x18\x02 \x01(\x0e\x32\'.rivian.parallax.charging.ChargerStatusH\x00\x88\x01\x01\x12\x14\n\x07\x66ield_3\x18\x03 \x01(\x05H\x01\x88\x01\x01\x12\x10\n\x08\x66ield_10\x18\n \x01(\t\x12\x43\n\x10\x63onnection_state\x18\x0b \x01(\x0e\x32).rivian.parallax.charging.ConnectionStateB\x11\n\x0f_charger_statusB\n\n\x08_field_3\"\x1d\n\x0cSessionPower\x12\r\n\x05power\x18\x01 \x01(\x02*b\n\rRemoteCommand\x12\x1e\n\x1aREMOTE_COMMAND_UNSPECIFIED\x10\x00\x12\x18\n\x14REMOTE_COMMAND_START\x10\x01\x12\x17\n\x13REMOTE_COMMAND_STOP\x10\x02*v\n\x0f\x43onnectionState\x12 \n\x1c\x43ONNECTION_STATE_UNSPECIFIED\x10\x00\x12!\n\x1d\x43ONNECTION_STATE_DISCONNECTED\x10\x01\x12\x1e\n\x1a\x43ONNECTION_STATE_CONNECTED\x10\x02*\xfc\x05\n\rChargingState\x12\x1e\n\x1a\x43HARGING_STATE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43HARGING_READY\x10\x01\x12\x17\n\x13\x43HARGING_CONNECTING\x10\x02\x12\x13\n\x0f\x43HARGING_ACTIVE\x10\x03\x12\x15\n\x11\x43HARGING_COMPLETE\x10\x04\x12\x16\n\x12\x43HARGING_SCHEDULED\x10\x05\x12\x1a\n\x16\x43HARGING_VEHICLE_ERROR\x10\x06\x12\x1a\n\x16\x43HARGING_STATION_ERROR\x10\x07\x12\x19\n\x15\x43HARGING_USER_STOPPED\x10\x08\x12\x1c\n\x18\x43HARGING_STATION_STOPPED\x10\t\x12\x1a\n\x16\x43HARGING_PAYMENT_ERROR\x10\n\x12\x17\n\x13\x43HARGING_CERT_ERROR\x10\x0b\x12\x16\n\x12\x43HARGING_TLS_ERROR\x10\x0c\x12(\n$CHARGING_ERROR_AC_ADAPTER_USED_ON_DC\x10\r\x12(\n$CHARGING_ERROR_DC_ADAPTER_USED_ON_AC\x10\x0e\x12\'\n#CHARGING_ERROR_INCOMPATIBLE_CHARGER\x10\x0f\x12\x1c\n\x18\x43HARGING_SD_COMPENSATION\x10\x10\x12\x16\n\x12WAITING_ON_CHARGER\x10\x11\x12%\n!CHARGER_NOT_READY_OR_INCOMPATIBLE\x10\x12\x12\x1c\n\x18\x43HARGING_VEHICLE_STOPPED\x10\x13\x12+\n\'CHARGING_PAYMENT_ERROR_START_RIVIAN_APP\x10\x14\x12&\n\"CHARGING_TLS_ERROR_UNKNOWN_CHARGER\x10\x15\x12&\n\"CHARGING_TLS_ERROR_UNEXPECTED_FAIL\x10\x16\x12\'\n#CHARGING_TLS_ERROR_START_RIVIAN_APP\x10\x17*\xa0\x01\n\rChargerStatus\x12\x1e\n\x1a\x43HARGER_STATUS_UNSPECIFIED\x10\x00\x12 \n\x1c\x43HARGER_STATUS_NOT_CONNECTED\x10\x01\x12&\n\"CHARGER_STATUS_CONNECTED_NO_CHARGE\x10\x02\x12%\n!CHARGER_STATUS_CONNECTED_CHARGING\x10\x03\x62\x06proto3')
|
|
28
28
|
|
|
29
29
|
_globals = globals()
|
|
30
30
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
31
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rivian.parallax.proto.charging_pb2', _globals)
|
|
32
32
|
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
33
|
DESCRIPTOR._loaded_options = None
|
|
34
|
-
_globals['_REMOTECOMMAND']._serialized_start=
|
|
35
|
-
_globals['_REMOTECOMMAND']._serialized_end=
|
|
36
|
-
_globals['_CONNECTIONSTATE']._serialized_start=
|
|
37
|
-
_globals['_CONNECTIONSTATE']._serialized_end=
|
|
38
|
-
_globals['_CHARGINGSTATE']._serialized_start=
|
|
39
|
-
_globals['_CHARGINGSTATE']._serialized_end=
|
|
40
|
-
_globals['_CHARGERSTATUS']._serialized_start=
|
|
41
|
-
_globals['_CHARGERSTATUS']._serialized_end=
|
|
34
|
+
_globals['_REMOTECOMMAND']._serialized_start=1605
|
|
35
|
+
_globals['_REMOTECOMMAND']._serialized_end=1703
|
|
36
|
+
_globals['_CONNECTIONSTATE']._serialized_start=1705
|
|
37
|
+
_globals['_CONNECTIONSTATE']._serialized_end=1823
|
|
38
|
+
_globals['_CHARGINGSTATE']._serialized_start=1826
|
|
39
|
+
_globals['_CHARGINGSTATE']._serialized_end=2590
|
|
40
|
+
_globals['_CHARGERSTATUS']._serialized_start=2593
|
|
41
|
+
_globals['_CHARGERSTATUS']._serialized_end=2753
|
|
42
42
|
_globals['_SCHEDULETIMEWINDOW']._serialized_start=67
|
|
43
43
|
_globals['_SCHEDULETIMEWINDOW']._serialized_end=683
|
|
44
44
|
_globals['_SCHEDULETIMEWINDOW_WINDOW']._serialized_start=176
|
|
@@ -66,7 +66,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
66
66
|
_globals['_TIMEESTIMATION']._serialized_start=1231
|
|
67
67
|
_globals['_TIMEESTIMATION']._serialized_end=1281
|
|
68
68
|
_globals['_ENERGYSTATE']._serialized_start=1284
|
|
69
|
-
_globals['_ENERGYSTATE']._serialized_end=
|
|
70
|
-
_globals['_SESSIONPOWER']._serialized_start=
|
|
71
|
-
_globals['_SESSIONPOWER']._serialized_end=
|
|
69
|
+
_globals['_ENERGYSTATE']._serialized_end=1572
|
|
70
|
+
_globals['_SESSIONPOWER']._serialized_start=1574
|
|
71
|
+
_globals['_SESSIONPOWER']._serialized_end=1603
|
|
72
72
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -189,18 +189,18 @@ class TimeEstimation(_message.Message):
|
|
|
189
189
|
def __init__(self, estimated_time_remaining: _Optional[int] = ...) -> None: ...
|
|
190
190
|
|
|
191
191
|
class EnergyState(_message.Message):
|
|
192
|
-
__slots__ = ("
|
|
193
|
-
|
|
192
|
+
__slots__ = ("charging_state", "charger_status", "field_3", "field_10", "connection_state")
|
|
193
|
+
CHARGING_STATE_FIELD_NUMBER: _ClassVar[int]
|
|
194
194
|
CHARGER_STATUS_FIELD_NUMBER: _ClassVar[int]
|
|
195
195
|
FIELD_3_FIELD_NUMBER: _ClassVar[int]
|
|
196
196
|
FIELD_10_FIELD_NUMBER: _ClassVar[int]
|
|
197
|
-
|
|
198
|
-
|
|
197
|
+
CONNECTION_STATE_FIELD_NUMBER: _ClassVar[int]
|
|
198
|
+
charging_state: ChargingState
|
|
199
199
|
charger_status: ChargerStatus
|
|
200
200
|
field_3: int
|
|
201
201
|
field_10: str
|
|
202
|
-
|
|
203
|
-
def __init__(self,
|
|
202
|
+
connection_state: ConnectionState
|
|
203
|
+
def __init__(self, charging_state: _Optional[_Union[ChargingState, str]] = ..., charger_status: _Optional[_Union[ChargerStatus, str]] = ..., field_3: _Optional[int] = ..., field_10: _Optional[str] = ..., connection_state: _Optional[_Union[ConnectionState, str]] = ...) -> None: ...
|
|
204
204
|
|
|
205
205
|
class SessionPower(_message.Message):
|
|
206
206
|
__slots__ = ("power",)
|