mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Bump subarulink to 0.7.5 (#89162)
This commit is contained in:
parent
5e2b7c6377
commit
34f8e94ca9
@ -66,7 +66,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
|
||||
vehicle_info = {}
|
||||
for vin in controller.get_vehicles():
|
||||
vehicle_info[vin] = get_vehicle_info(controller, vin)
|
||||
if controller.get_subscription_status(vin):
|
||||
vehicle_info[vin] = get_vehicle_info(controller, vin)
|
||||
|
||||
async def async_update_data():
|
||||
"""Fetch data from API endpoint."""
|
||||
@ -116,10 +117,6 @@ async def refresh_subaru_data(config_entry, vehicle_info, controller):
|
||||
for vehicle in vehicle_info.values():
|
||||
vin = vehicle[VEHICLE_VIN]
|
||||
|
||||
# Active subscription required
|
||||
if not vehicle[VEHICLE_HAS_SAFETY_SERVICE]:
|
||||
continue
|
||||
|
||||
# Optionally send an "update" remote command to vehicle (throttled with update_interval)
|
||||
if config_entry.options.get(CONF_UPDATE_ENABLED, False):
|
||||
await update_subaru(vehicle, controller)
|
||||
|
@ -28,11 +28,12 @@ VEHICLE_HAS_REMOTE_START = "has_res"
|
||||
VEHICLE_HAS_REMOTE_SERVICE = "has_remote"
|
||||
VEHICLE_HAS_SAFETY_SERVICE = "has_safety"
|
||||
VEHICLE_LAST_UPDATE = "last_update"
|
||||
VEHICLE_STATUS = "status"
|
||||
VEHICLE_STATUS = "vehicle_status"
|
||||
|
||||
|
||||
API_GEN_1 = "g1"
|
||||
API_GEN_2 = "g2"
|
||||
API_GEN_3 = "g3"
|
||||
MANUFACTURER = "Subaru"
|
||||
|
||||
PLATFORMS = [
|
||||
|
@ -6,5 +6,5 @@
|
||||
"documentation": "https://www.home-assistant.io/integrations/subaru",
|
||||
"iot_class": "cloud_polling",
|
||||
"loggers": ["stdiomask", "subarulink"],
|
||||
"requirements": ["subarulink==0.7.0"]
|
||||
"requirements": ["subarulink==0.7.5"]
|
||||
}
|
||||
|
@ -31,12 +31,12 @@ from homeassistant.util.unit_system import (
|
||||
from . import get_device_info
|
||||
from .const import (
|
||||
API_GEN_2,
|
||||
API_GEN_3,
|
||||
DOMAIN,
|
||||
ENTRY_COORDINATOR,
|
||||
ENTRY_VEHICLES,
|
||||
VEHICLE_API_GEN,
|
||||
VEHICLE_HAS_EV,
|
||||
VEHICLE_HAS_SAFETY_SERVICE,
|
||||
VEHICLE_STATUS,
|
||||
VEHICLE_VIN,
|
||||
)
|
||||
@ -51,7 +51,7 @@ FUEL_CONSUMPTION_MILES_PER_GALLON = "mi/gal"
|
||||
L_PER_GAL = VolumeConverter.convert(1, UnitOfVolume.GALLONS, UnitOfVolume.LITERS)
|
||||
KM_PER_MI = DistanceConverter.convert(1, UnitOfLength.MILES, UnitOfLength.KILOMETERS)
|
||||
|
||||
# Sensor available to "Subaru Safety Plus" subscribers with Gen1 or Gen2 vehicles
|
||||
# Sensor available for Gen1 or Gen2 vehicles
|
||||
SAFETY_SENSORS = [
|
||||
SensorEntityDescription(
|
||||
key=sc.ODOMETER,
|
||||
@ -63,7 +63,7 @@ SAFETY_SENSORS = [
|
||||
),
|
||||
]
|
||||
|
||||
# Sensors available to "Subaru Safety Plus" subscribers with Gen2 vehicles
|
||||
# Sensors available to subscribers with Gen2/Gen3 vehicles
|
||||
API_GEN_2_SENSORS = [
|
||||
SensorEntityDescription(
|
||||
key=sc.AVG_FUEL_CONSUMPTION,
|
||||
@ -110,7 +110,18 @@ API_GEN_2_SENSORS = [
|
||||
),
|
||||
]
|
||||
|
||||
# Sensors available to "Subaru Safety Plus" subscribers with PHEV vehicles
|
||||
# Sensors available for Gen3 vehicles
|
||||
API_GEN_3_SENSORS = [
|
||||
SensorEntityDescription(
|
||||
key=sc.REMAINING_FUEL_PERCENT,
|
||||
icon="mdi:gas-station",
|
||||
name="Fuel level",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
]
|
||||
|
||||
# Sensors available to subscribers with PHEV vehicles
|
||||
EV_SENSORS = [
|
||||
SensorEntityDescription(
|
||||
key=sc.EV_DISTANCE_TO_EMPTY,
|
||||
@ -156,14 +167,16 @@ def create_vehicle_sensors(
|
||||
) -> list[SubaruSensor]:
|
||||
"""Instantiate all available sensors for the vehicle."""
|
||||
sensor_descriptions_to_add = []
|
||||
if vehicle_info[VEHICLE_HAS_SAFETY_SERVICE]:
|
||||
sensor_descriptions_to_add.extend(SAFETY_SENSORS)
|
||||
sensor_descriptions_to_add.extend(SAFETY_SENSORS)
|
||||
|
||||
if vehicle_info[VEHICLE_API_GEN] == API_GEN_2:
|
||||
sensor_descriptions_to_add.extend(API_GEN_2_SENSORS)
|
||||
if vehicle_info[VEHICLE_API_GEN] in [API_GEN_2, API_GEN_3]:
|
||||
sensor_descriptions_to_add.extend(API_GEN_2_SENSORS)
|
||||
|
||||
if vehicle_info[VEHICLE_HAS_EV]:
|
||||
sensor_descriptions_to_add.extend(EV_SENSORS)
|
||||
if vehicle_info[VEHICLE_API_GEN] == API_GEN_3:
|
||||
sensor_descriptions_to_add.extend(API_GEN_3_SENSORS)
|
||||
|
||||
if vehicle_info[VEHICLE_HAS_EV]:
|
||||
sensor_descriptions_to_add.extend(EV_SENSORS)
|
||||
|
||||
return [
|
||||
SubaruSensor(
|
||||
|
@ -2434,7 +2434,7 @@ streamlabswater==1.0.1
|
||||
stringcase==1.2.0
|
||||
|
||||
# homeassistant.components.subaru
|
||||
subarulink==0.7.0
|
||||
subarulink==0.7.5
|
||||
|
||||
# homeassistant.components.solarlog
|
||||
sunwatcher==0.2.1
|
||||
|
@ -1734,7 +1734,7 @@ stookwijzer==1.3.0
|
||||
stringcase==1.2.0
|
||||
|
||||
# homeassistant.components.subaru
|
||||
subarulink==0.7.0
|
||||
subarulink==0.7.5
|
||||
|
||||
# homeassistant.components.solarlog
|
||||
sunwatcher==0.2.1
|
||||
|
@ -5,22 +5,28 @@ from datetime import datetime, timezone
|
||||
from homeassistant.components.subaru.const import (
|
||||
API_GEN_1,
|
||||
API_GEN_2,
|
||||
API_GEN_3,
|
||||
VEHICLE_API_GEN,
|
||||
VEHICLE_HAS_EV,
|
||||
VEHICLE_HAS_REMOTE_SERVICE,
|
||||
VEHICLE_HAS_REMOTE_START,
|
||||
VEHICLE_HAS_SAFETY_SERVICE,
|
||||
VEHICLE_MODEL_NAME,
|
||||
VEHICLE_MODEL_YEAR,
|
||||
VEHICLE_NAME,
|
||||
VEHICLE_STATUS,
|
||||
VEHICLE_VIN,
|
||||
)
|
||||
|
||||
TEST_VIN_1_G1 = "JF2ABCDE6L0000001"
|
||||
TEST_VIN_2_EV = "JF2ABCDE6L0000002"
|
||||
TEST_VIN_3_G2 = "JF2ABCDE6L0000003"
|
||||
TEST_VIN_3_G3 = "JF2ABCDE6L0000003"
|
||||
|
||||
VEHICLE_DATA = {
|
||||
TEST_VIN_1_G1: {
|
||||
VEHICLE_VIN: TEST_VIN_1_G1,
|
||||
VEHICLE_MODEL_YEAR: "2017",
|
||||
VEHICLE_MODEL_NAME: "Outback",
|
||||
VEHICLE_NAME: "test_vehicle_1",
|
||||
VEHICLE_HAS_EV: False,
|
||||
VEHICLE_API_GEN: API_GEN_1,
|
||||
@ -30,6 +36,8 @@ VEHICLE_DATA = {
|
||||
},
|
||||
TEST_VIN_2_EV: {
|
||||
VEHICLE_VIN: TEST_VIN_2_EV,
|
||||
VEHICLE_MODEL_YEAR: "2019",
|
||||
VEHICLE_MODEL_NAME: "Crosstrek",
|
||||
VEHICLE_NAME: "test_vehicle_2",
|
||||
VEHICLE_HAS_EV: True,
|
||||
VEHICLE_API_GEN: API_GEN_2,
|
||||
@ -37,11 +45,13 @@ VEHICLE_DATA = {
|
||||
VEHICLE_HAS_REMOTE_SERVICE: True,
|
||||
VEHICLE_HAS_SAFETY_SERVICE: True,
|
||||
},
|
||||
TEST_VIN_3_G2: {
|
||||
VEHICLE_VIN: TEST_VIN_3_G2,
|
||||
TEST_VIN_3_G3: {
|
||||
VEHICLE_VIN: TEST_VIN_3_G3,
|
||||
VEHICLE_MODEL_YEAR: "2022",
|
||||
VEHICLE_MODEL_NAME: "Ascent",
|
||||
VEHICLE_NAME: "test_vehicle_3",
|
||||
VEHICLE_HAS_EV: False,
|
||||
VEHICLE_API_GEN: API_GEN_2,
|
||||
VEHICLE_API_GEN: API_GEN_3,
|
||||
VEHICLE_HAS_REMOTE_START: True,
|
||||
VEHICLE_HAS_REMOTE_SERVICE: True,
|
||||
VEHICLE_HAS_SAFETY_SERVICE: True,
|
||||
@ -51,7 +61,7 @@ VEHICLE_DATA = {
|
||||
MOCK_DATETIME = datetime.fromtimestamp(1595560000, timezone.utc)
|
||||
|
||||
VEHICLE_STATUS_EV = {
|
||||
"status": {
|
||||
VEHICLE_STATUS: {
|
||||
"AVG_FUEL_CONSUMPTION": 2.3,
|
||||
"DISTANCE_TO_EMPTY_FUEL": 707,
|
||||
"DOOR_BOOT_LOCK_STATUS": "UNKNOWN",
|
||||
@ -120,8 +130,8 @@ VEHICLE_STATUS_EV = {
|
||||
}
|
||||
|
||||
|
||||
VEHICLE_STATUS_G2 = {
|
||||
"status": {
|
||||
VEHICLE_STATUS_G3 = {
|
||||
VEHICLE_STATUS: {
|
||||
"AVG_FUEL_CONSUMPTION": 2.3,
|
||||
"DISTANCE_TO_EMPTY_FUEL": 707,
|
||||
"DOOR_BOOT_LOCK_STATUS": "UNKNOWN",
|
||||
@ -136,6 +146,7 @@ VEHICLE_STATUS_G2 = {
|
||||
"DOOR_REAR_LEFT_POSITION": "CLOSED",
|
||||
"DOOR_REAR_RIGHT_LOCK_STATUS": "UNKNOWN",
|
||||
"DOOR_REAR_RIGHT_POSITION": "CLOSED",
|
||||
"REMAINING_FUEL_PERCENT": 77,
|
||||
"ODOMETER": 1234,
|
||||
"POSITION_HEADING_DEGREE": 150,
|
||||
"POSITION_SPEED_KMPH": "0",
|
||||
|
@ -17,6 +17,8 @@ from homeassistant.components.subaru.const import (
|
||||
VEHICLE_HAS_REMOTE_SERVICE,
|
||||
VEHICLE_HAS_REMOTE_START,
|
||||
VEHICLE_HAS_SAFETY_SERVICE,
|
||||
VEHICLE_MODEL_NAME,
|
||||
VEHICLE_MODEL_YEAR,
|
||||
VEHICLE_NAME,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntryState
|
||||
@ -40,10 +42,13 @@ MOCK_API_UPDATE_SAVED_PIN = f"{MOCK_API}update_saved_pin"
|
||||
MOCK_API_GET_VEHICLES = f"{MOCK_API}get_vehicles"
|
||||
MOCK_API_VIN_TO_NAME = f"{MOCK_API}vin_to_name"
|
||||
MOCK_API_GET_API_GEN = f"{MOCK_API}get_api_gen"
|
||||
MOCK_API_GET_MODEL_NAME = f"{MOCK_API}get_model_name"
|
||||
MOCK_API_GET_MODEL_YEAR = f"{MOCK_API}get_model_year"
|
||||
MOCK_API_GET_EV_STATUS = f"{MOCK_API}get_ev_status"
|
||||
MOCK_API_GET_RES_STATUS = f"{MOCK_API}get_res_status"
|
||||
MOCK_API_GET_REMOTE_STATUS = f"{MOCK_API}get_remote_status"
|
||||
MOCK_API_GET_SAFETY_STATUS = f"{MOCK_API}get_safety_status"
|
||||
MOCK_API_GET_SUBSCRIPTION_STATUS = f"{MOCK_API}get_subscription_status"
|
||||
MOCK_API_GET_DATA = f"{MOCK_API}get_data"
|
||||
MOCK_API_UPDATE = f"{MOCK_API}update"
|
||||
MOCK_API_FETCH = f"{MOCK_API}fetch"
|
||||
@ -114,6 +119,12 @@ async def setup_subaru_config_entry(
|
||||
), patch(
|
||||
MOCK_API_GET_API_GEN,
|
||||
return_value=vehicle_data[VEHICLE_API_GEN],
|
||||
), patch(
|
||||
MOCK_API_GET_MODEL_NAME,
|
||||
return_value=vehicle_data[VEHICLE_MODEL_NAME],
|
||||
), patch(
|
||||
MOCK_API_GET_MODEL_YEAR,
|
||||
return_value=vehicle_data[VEHICLE_MODEL_YEAR],
|
||||
), patch(
|
||||
MOCK_API_GET_EV_STATUS,
|
||||
return_value=vehicle_data[VEHICLE_HAS_EV],
|
||||
@ -126,6 +137,9 @@ async def setup_subaru_config_entry(
|
||||
), patch(
|
||||
MOCK_API_GET_SAFETY_STATUS,
|
||||
return_value=vehicle_data[VEHICLE_HAS_SAFETY_SERVICE],
|
||||
), patch(
|
||||
MOCK_API_GET_SUBSCRIPTION_STATUS,
|
||||
return_value=True,
|
||||
), patch(
|
||||
MOCK_API_GET_DATA,
|
||||
return_value=vehicle_status,
|
||||
|
@ -11,7 +11,7 @@
|
||||
},
|
||||
"data": [
|
||||
{
|
||||
"status": {
|
||||
"vehicle_status": {
|
||||
"AVG_FUEL_CONSUMPTION": 2.3,
|
||||
"DISTANCE_TO_EMPTY_FUEL": 707,
|
||||
"DOOR_BOOT_LOCK_STATUS": "UNKNOWN",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"update_enabled": true
|
||||
},
|
||||
"data": {
|
||||
"status": {
|
||||
"vehicle_status": {
|
||||
"AVG_FUEL_CONSUMPTION": 2.3,
|
||||
"DISTANCE_TO_EMPTY_FUEL": 707,
|
||||
"DOOR_BOOT_LOCK_STATUS": "UNKNOWN",
|
||||
|
@ -16,10 +16,10 @@ from homeassistant.setup import async_setup_component
|
||||
from .api_responses import (
|
||||
TEST_VIN_1_G1,
|
||||
TEST_VIN_2_EV,
|
||||
TEST_VIN_3_G2,
|
||||
TEST_VIN_3_G3,
|
||||
VEHICLE_DATA,
|
||||
VEHICLE_STATUS_EV,
|
||||
VEHICLE_STATUS_G2,
|
||||
VEHICLE_STATUS_G3,
|
||||
)
|
||||
from .conftest import (
|
||||
MOCK_API_FETCH,
|
||||
@ -43,14 +43,14 @@ async def test_setup_ev(hass: HomeAssistant, ev_entry) -> None:
|
||||
assert check_entry.state is ConfigEntryState.LOADED
|
||||
|
||||
|
||||
async def test_setup_g2(hass: HomeAssistant, subaru_config_entry) -> None:
|
||||
"""Test setup with a G2 vehcile ."""
|
||||
async def test_setup_g3(hass: HomeAssistant, subaru_config_entry) -> None:
|
||||
"""Test setup with a G3 vehicle ."""
|
||||
await setup_subaru_config_entry(
|
||||
hass,
|
||||
subaru_config_entry,
|
||||
vehicle_list=[TEST_VIN_3_G2],
|
||||
vehicle_data=VEHICLE_DATA[TEST_VIN_3_G2],
|
||||
vehicle_status=VEHICLE_STATUS_G2,
|
||||
vehicle_list=[TEST_VIN_3_G3],
|
||||
vehicle_data=VEHICLE_DATA[TEST_VIN_3_G3],
|
||||
vehicle_status=VEHICLE_STATUS_G3,
|
||||
)
|
||||
check_entry = hass.config_entries.async_get_entry(subaru_config_entry.entry_id)
|
||||
assert check_entry
|
||||
|
Loading…
x
Reference in New Issue
Block a user