From 4332cbe1127777724f08170f4729fd7410e724c6 Mon Sep 17 00:00:00 2001 From: Olivier B <hobbe@users.noreply.github.com> Date: Mon, 23 Mar 2020 10:52:59 +0100 Subject: [PATCH] Add Tesla sentry mode switch (#32938) * Add Tesla sentry mode switch * add available property, fix is_on * bump teslajsonpy to 0.6.0 --- homeassistant/components/tesla/const.py | 1 + homeassistant/components/tesla/manifest.json | 2 +- homeassistant/components/tesla/switch.py | 31 ++++++++++++++++++++ requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/tesla/const.py b/homeassistant/components/tesla/const.py index d7930c01fe8..2b8485c7616 100644 --- a/homeassistant/components/tesla/const.py +++ b/homeassistant/components/tesla/const.py @@ -25,4 +25,5 @@ ICONS = { "temperature sensor": "mdi:thermometer", "location tracker": "mdi:crosshairs-gps", "charging rate sensor": "mdi:speedometer", + "sentry mode switch": "mdi:shield-car", } diff --git a/homeassistant/components/tesla/manifest.json b/homeassistant/components/tesla/manifest.json index 950a860b308..1bba8436312 100644 --- a/homeassistant/components/tesla/manifest.json +++ b/homeassistant/components/tesla/manifest.json @@ -4,7 +4,7 @@ "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/tesla", "requirements": [ - "teslajsonpy==0.5.1" + "teslajsonpy==0.6.0" ], "dependencies": [], "codeowners": [ diff --git a/homeassistant/components/tesla/switch.py b/homeassistant/components/tesla/switch.py index 331f6bd8126..716836821c4 100644 --- a/homeassistant/components/tesla/switch.py +++ b/homeassistant/components/tesla/switch.py @@ -19,6 +19,8 @@ async def async_setup_entry(hass, config_entry, async_add_entities): entities.append(UpdateSwitch(device, controller, config_entry)) elif device.type == "maxrange switch": entities.append(RangeSwitch(device, controller, config_entry)) + elif device.type == "sentry mode switch": + entities.append(SentryModeSwitch(device, controller, config_entry)) async_add_entities(entities, True) @@ -114,3 +116,32 @@ class UpdateSwitch(TeslaDevice, SwitchDevice): _LOGGER.debug("Updating state for: %s %s", self._name, car_id) await super().async_update() self._state = bool(self.controller.get_updates(car_id)) + + +class SentryModeSwitch(TeslaDevice, SwitchDevice): + """Representation of a Tesla sentry mode switch.""" + + async def async_turn_on(self, **kwargs): + """Send the on command.""" + _LOGGER.debug("Enable sentry mode: %s", self._name) + await self.tesla_device.enable_sentry_mode() + + async def async_turn_off(self, **kwargs): + """Send the off command.""" + _LOGGER.debug("Disable sentry mode: %s", self._name) + await self.tesla_device.disable_sentry_mode() + + @property + def is_on(self): + """Get whether the switch is in on state.""" + return self.tesla_device.is_on() + + @property + def available(self): + """Indicate if Home Assistant is able to read the state and control the underlying device.""" + return self.tesla_device.available() + + async def async_update(self): + """Update the state of the switch.""" + _LOGGER.debug("Updating state for: %s", self._name) + await super().async_update() diff --git a/requirements_all.txt b/requirements_all.txt index e2f81dbcf20..44422771b13 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2000,7 +2000,7 @@ temperusb==1.5.3 tesla-powerwall==0.1.1 # homeassistant.components.tesla -teslajsonpy==0.5.1 +teslajsonpy==0.6.0 # homeassistant.components.thermoworks_smoke thermoworks_smoke==0.1.8 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index d5b56f9c14c..f8ed63bf8b3 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -719,7 +719,7 @@ tellduslive==0.10.10 tesla-powerwall==0.1.1 # homeassistant.components.tesla -teslajsonpy==0.5.1 +teslajsonpy==0.6.0 # homeassistant.components.toon toonapilib==3.2.4 -- GitLab