Skip to content

Commit

Permalink
Scale down changes to only Date Entity
Browse files Browse the repository at this point in the history
  • Loading branch information
jesserockz committed Mar 6, 2024
1 parent afb2d35 commit 718fc0c
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 46 deletions.
6 changes: 3 additions & 3 deletions aioesphomeapi/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
CameraImageResponse,
ClimateCommandRequest,
CoverCommandRequest,
DatetimeCommandRequest,
DateCommandRequest,
DeviceInfoRequest,
DeviceInfoResponse,
ExecuteServiceArgument,
Expand Down Expand Up @@ -1101,9 +1101,9 @@ def climate_command( # pylint: disable=too-many-branches
def number_command(self, key: int, state: float) -> None:
self._get_connection().send_message(NumberCommandRequest(key=key, state=state))

def datetime_command(self, key: int, state: str) -> None:
def date_command(self, key: int, year: int, month: int, day: int) -> None:
self._get_connection().send_message(
DatetimeCommandRequest(key=key, state=state)
DateCommandRequest(key=key, year=year, month=month, day=day)
)

def select_command(self, key: int, state: str) -> None:
Expand Down
12 changes: 6 additions & 6 deletions aioesphomeapi/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
ConnectResponse,
CoverCommandRequest,
CoverStateResponse,
DatetimeCommandRequest,
DatetimeStateResponse,
DateCommandRequest,
DateStateResponse,
DeviceInfoRequest,
DeviceInfoResponse,
DisconnectRequest,
Expand All @@ -61,7 +61,7 @@
ListEntitiesCameraResponse,
ListEntitiesClimateResponse,
ListEntitiesCoverResponse,
ListEntitiesDatetimeResponse,
ListEntitiesDateResponse,
ListEntitiesDoneResponse,
ListEntitiesFanResponse,
ListEntitiesLightResponse,
Expand Down Expand Up @@ -357,7 +357,7 @@ def __init__(self, error: BluetoothGATTError) -> None:
97: ListEntitiesTextResponse,
98: TextStateResponse,
99: TextCommandRequest,
100: ListEntitiesDatetimeResponse,
101: DatetimeStateResponse,
102: DatetimeCommandRequest,
100: ListEntitiesDateResponse,
101: DateStateResponse,
102: DateCommandRequest,
}
21 changes: 9 additions & 12 deletions aioesphomeapi/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -637,22 +637,19 @@ class NumberState(EntityState):
missing_state: bool = False


# ==================== DATETIME ====================
class DatetimeMode(APIIntEnum):
AUTO = 0

# ==================== DATETIME DATE ====================

@_frozen_dataclass_decorator
class DatetimeInfo(EntityInfo):
mode: DatetimeMode | None = converter_field(
default=DatetimeMode.AUTO, converter=DatetimeMode.convert
)
class DateInfo(EntityInfo):
pass


@_frozen_dataclass_decorator
class DatetimeState(EntityState):
state: str = ""
class DateState(EntityState):
missing_state: bool = False
year: int = 0
month: int = 0
day: int = 0


# ==================== SELECT ====================
Expand Down Expand Up @@ -824,7 +821,7 @@ class TextState(EntityState):
"camera": CameraInfo,
"climate": ClimateInfo,
"number": NumberInfo,
"datetime": DatetimeInfo,
"date": DateInfo,
"select": SelectInfo,
"siren": SirenInfo,
"button": ButtonInfo,
Expand Down Expand Up @@ -1173,7 +1170,7 @@ class VoiceAssistantEventType(APIIntEnum):
FanInfo: "fan",
LightInfo: "light",
NumberInfo: "number",
DatetimeInfo: "datetime",
DateInfo: "date",
SelectInfo: "select",
SensorInfo: "sensor",
SirenInfo: "siren",
Expand Down
12 changes: 6 additions & 6 deletions aioesphomeapi/model_conversions.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
BinarySensorStateResponse,
ClimateStateResponse,
CoverStateResponse,
DatetimeStateResponse,
DateStateResponse,
FanStateResponse,
LightStateResponse,
ListEntitiesAlarmControlPanelResponse,
Expand All @@ -16,7 +16,7 @@
ListEntitiesCameraResponse,
ListEntitiesClimateResponse,
ListEntitiesCoverResponse,
ListEntitiesDatetimeResponse,
ListEntitiesDateResponse,
ListEntitiesFanResponse,
ListEntitiesLightResponse,
ListEntitiesLockResponse,
Expand Down Expand Up @@ -50,8 +50,8 @@
ClimateState,
CoverInfo,
CoverState,
DatetimeInfo,
DatetimeState,
DateInfo,
DateState,
EntityInfo,
EntityState,
FanInfo,
Expand Down Expand Up @@ -84,7 +84,7 @@
FanStateResponse: FanState,
LightStateResponse: LightState,
NumberStateResponse: NumberState,
DatetimeStateResponse: DatetimeState,
DateStateResponse: DateState,
SelectStateResponse: SelectState,
SensorStateResponse: SensorState,
SirenStateResponse: SirenState,
Expand All @@ -104,7 +104,7 @@
ListEntitiesFanResponse: FanInfo,
ListEntitiesLightResponse: LightInfo,
ListEntitiesNumberResponse: NumberInfo,
ListEntitiesDatetimeResponse: DatetimeInfo,
ListEntitiesDateResponse: DateInfo,
ListEntitiesSelectResponse: SelectInfo,
ListEntitiesSensorResponse: SensorInfo,
ListEntitiesSirenResponse: SirenInfo,
Expand Down
18 changes: 6 additions & 12 deletions tests/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
CameraImageResponse,
ClimateCommandRequest,
CoverCommandRequest,
DatetimeCommandRequest,
DateCommandRequest,
DeviceInfoResponse,
DisconnectResponse,
ExecuteServiceArgument,
Expand Down Expand Up @@ -622,23 +622,17 @@ async def test_number_command(
@pytest.mark.parametrize(
"cmd, req",
[
(dict(key=1, state="2024-02-15"), dict(key=1, state="2024-02-15")),
(dict(key=1, state="18:30"), dict(key=1, state="18:30")),
(dict(key=1, state="18:30:45"), dict(key=1, state="18:30:45")),
(dict(key=1, state="2024-02-15 18:30"), dict(key=1, state="2024-02-15 18:30")),
(
dict(key=1, state="2024-02-15 18:30:45"),
dict(key=1, state="2024-02-15 18:30:45"),
),
(dict(key=1, year=2024, month=2, day=29), dict(key=1, year=2024, month=2, day=29)),
(dict(key=1, year=2000, month=6, day=10), dict(key=1, year=2000, month=6, day=10)),
],
)
async def test_datetime_command(
async def test_date_command(
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
) -> None:
send = patch_send(auth_client)

auth_client.datetime_command(**cmd)
send.assert_called_once_with(DatetimeCommandRequest(**req))
auth_client.date_command(**cmd)
send.assert_called_once_with(DateCommandRequest(**req))


@pytest.mark.asyncio
Expand Down
14 changes: 7 additions & 7 deletions tests/test_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
BluetoothGATTGetServicesResponse,
ClimateStateResponse,
CoverStateResponse,
DatetimeStateResponse,
DateStateResponse,
DeviceInfoResponse,
FanStateResponse,
HomeassistantServiceMap,
Expand All @@ -24,7 +24,7 @@
ListEntitiesButtonResponse,
ListEntitiesClimateResponse,
ListEntitiesCoverResponse,
ListEntitiesDatetimeResponse,
ListEntitiesDateResponse,
ListEntitiesFanResponse,
ListEntitiesLightResponse,
ListEntitiesLockResponse,
Expand Down Expand Up @@ -71,8 +71,8 @@
ClimateState,
CoverInfo,
CoverState,
DatetimeInfo,
DatetimeState,
DateInfo,
DateState,
DeviceInfo,
FanInfo,
FanState,
Expand Down Expand Up @@ -246,8 +246,8 @@ def test_api_version_ord():
(ClimateState, ClimateStateResponse),
(NumberInfo, ListEntitiesNumberResponse),
(NumberState, NumberStateResponse),
(DatetimeInfo, ListEntitiesDatetimeResponse),
(DatetimeState, DatetimeStateResponse),
(DateInfo, ListEntitiesDateResponse),
(DateState, DateStateResponse),
(SelectInfo, ListEntitiesSelectResponse),
(SelectState, SelectStateResponse),
(HomeassistantServiceCall, HomeassistantServiceResponse),
Expand Down Expand Up @@ -364,7 +364,7 @@ def test_user_service_conversion():
FanInfo,
LightInfo,
NumberInfo,
DatetimeInfo,
DateInfo,
SelectInfo,
SensorInfo,
SirenInfo,
Expand Down

0 comments on commit 718fc0c

Please sign in to comment.