From 8630022e928dc077defce781f0d5f0cfa3017e7a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 1 Dec 2021 08:19:14 +1300 Subject: [PATCH] Add mode to ESPHome numbers (#60653) --- .../components/esphome/manifest.json | 2 +- homeassistant/components/esphome/number.py | 27 ++++++++++++++++--- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/esphome/manifest.json b/homeassistant/components/esphome/manifest.json index 025c98def88..527fc6bf768 100644 --- a/homeassistant/components/esphome/manifest.json +++ b/homeassistant/components/esphome/manifest.json @@ -3,7 +3,7 @@ "name": "ESPHome", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/esphome", - "requirements": ["aioesphomeapi==10.5.0"], + "requirements": ["aioesphomeapi==10.6.0"], "zeroconf": ["_esphomelib._tcp.local."], "codeowners": ["@OttoWinter", "@jesserockz"], "after_dependencies": ["zeroconf", "tag"], diff --git a/homeassistant/components/esphome/number.py b/homeassistant/components/esphome/number.py index c26d0398398..be27779437d 100644 --- a/homeassistant/components/esphome/number.py +++ b/homeassistant/components/esphome/number.py @@ -3,14 +3,19 @@ from __future__ import annotations import math -from aioesphomeapi import NumberInfo, NumberState +from aioesphomeapi import NumberInfo, NumberMode as EsphomeNumberMode, NumberState -from homeassistant.components.number import NumberEntity +from homeassistant.components.number import NumberEntity, NumberMode from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import EsphomeEntity, esphome_state_property, platform_async_setup_entry +from . import ( + EsphomeEntity, + EsphomeEnumMapper, + esphome_state_property, + platform_async_setup_entry, +) async def async_setup_entry( @@ -30,6 +35,15 @@ async def async_setup_entry( ) +NUMBER_MODES: EsphomeEnumMapper[EsphomeNumberMode, NumberMode] = EsphomeEnumMapper( + { + EsphomeNumberMode.AUTO: NumberMode.AUTO, + EsphomeNumberMode.BOX: NumberMode.BOX, + EsphomeNumberMode.SLIDER: NumberMode.SLIDER, + } +) + + # https://github.com/PyCQA/pylint/issues/3150 for all @esphome_state_property # pylint: disable=invalid-overridden-method @@ -57,6 +71,13 @@ class EsphomeNumber(EsphomeEntity[NumberInfo, NumberState], NumberEntity): """Return the unit of measurement.""" return super()._static_info.unit_of_measurement + @property + def mode(self) -> NumberMode: + """Return the mode of the entity.""" + if self._static_info.mode: + return NUMBER_MODES.from_esphome(self._static_info.mode) + return NumberMode.AUTO + @esphome_state_property def value(self) -> float | None: """Return the state of the entity.""" diff --git a/requirements_all.txt b/requirements_all.txt index d021d8cc687..3324723c6df 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -161,7 +161,7 @@ aioeagle==1.1.0 aioemonitor==1.0.5 # homeassistant.components.esphome -aioesphomeapi==10.5.0 +aioesphomeapi==10.6.0 # homeassistant.components.flo aioflo==2021.11.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 26a2823334c..554404e4e0c 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -112,7 +112,7 @@ aioeagle==1.1.0 aioemonitor==1.0.5 # homeassistant.components.esphome -aioesphomeapi==10.5.0 +aioesphomeapi==10.6.0 # homeassistant.components.flo aioflo==2021.11.0