pypetkitapi 0.5.2__tar.gz → 0.5.4__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.
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/PKG-INFO +1 -1
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/client.py +2 -2
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/command.py +17 -86
- pypetkitapi-0.5.4/pypetkitapi/py.typed +0 -0
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pyproject.toml +2 -2
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/LICENSE +0 -0
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/README.md +0 -0
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/__init__.py +0 -0
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/const.py +0 -0
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/containers.py +0 -0
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/exceptions.py +0 -0
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/feeder_container.py +0 -0
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/litter_container.py +12 -12
- {pypetkitapi-0.5.2 → pypetkitapi-0.5.4}/pypetkitapi/water_fountain_container.py +0 -0
@@ -280,7 +280,7 @@ class PetKitClient:
|
|
280
280
|
self,
|
281
281
|
device_id: int,
|
282
282
|
action: StrEnum,
|
283
|
-
setting: dict |
|
283
|
+
setting: dict | None = None,
|
284
284
|
) -> None:
|
285
285
|
"""Control the device using the PetKit API."""
|
286
286
|
device = self.device_list.get(device_id)
|
@@ -333,7 +333,7 @@ class PetKitClient:
|
|
333
333
|
headers=headers,
|
334
334
|
)
|
335
335
|
if res in (SUCCESS_KEY, RES_KEY):
|
336
|
-
# TODO : Manage to get the response from
|
336
|
+
# TODO : Manage to get the response from manual feeding
|
337
337
|
_LOGGER.info("Command executed successfully")
|
338
338
|
else:
|
339
339
|
_LOGGER.error("Command execution failed")
|
@@ -3,7 +3,7 @@
|
|
3
3
|
from collections.abc import Callable
|
4
4
|
from dataclasses import dataclass, field
|
5
5
|
import datetime
|
6
|
-
from enum import StrEnum
|
6
|
+
from enum import IntEnum, StrEnum
|
7
7
|
import json
|
8
8
|
|
9
9
|
from pypetkitapi.const import (
|
@@ -62,27 +62,22 @@ class FountainCommand(StrEnum):
|
|
62
62
|
CONTROL_DEVICE = "control_device"
|
63
63
|
|
64
64
|
|
65
|
-
class
|
65
|
+
class LBCommand(IntEnum):
|
66
66
|
"""LitterBoxCommand"""
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
RESUME_LITTER_DUMP = "resume_litter_dump"
|
82
|
-
RESET_MAX_DEODOR = "reset_max_deodorizer"
|
83
|
-
|
84
|
-
|
85
|
-
class LitterBoxCommandKey(StrEnum):
|
68
|
+
CLEANING = 0
|
69
|
+
DUMPING = 1
|
70
|
+
ODOR_REMOVAL = 2
|
71
|
+
RESETTING = 3
|
72
|
+
LEVELING = 4
|
73
|
+
CALIBRATING = 5
|
74
|
+
RESET_DEODOR = 6
|
75
|
+
LIGHT = 7
|
76
|
+
RESET_MAX_DEODOR = 8
|
77
|
+
MAINTENANCE = 9
|
78
|
+
|
79
|
+
|
80
|
+
class LBAction(StrEnum):
|
86
81
|
"""LitterBoxCommandKey"""
|
87
82
|
|
88
83
|
CONTINUE = "continue_action"
|
@@ -92,70 +87,6 @@ class LitterBoxCommandKey(StrEnum):
|
|
92
87
|
STOP = "stop_action"
|
93
88
|
|
94
89
|
|
95
|
-
class LitterBoxCommandType(StrEnum):
|
96
|
-
"""LitterBoxCommandType"""
|
97
|
-
|
98
|
-
CONTINUE = "continue"
|
99
|
-
END = "end"
|
100
|
-
POWER = "power"
|
101
|
-
START = "start"
|
102
|
-
STOP = "stop"
|
103
|
-
|
104
|
-
|
105
|
-
LB_CMD_TO_KEY = {
|
106
|
-
LitterBoxCommand.LIGHT_ON: LitterBoxCommandKey.START,
|
107
|
-
LitterBoxCommand.POWER: LitterBoxCommandKey.POWER,
|
108
|
-
LitterBoxCommand.START_CLEAN: LitterBoxCommandKey.START,
|
109
|
-
LitterBoxCommand.PAUSE_CLEAN: LitterBoxCommandKey.STOP,
|
110
|
-
LitterBoxCommand.RESUME_CLEAN: LitterBoxCommandKey.CONTINUE,
|
111
|
-
LitterBoxCommand.ODOR_REMOVAL: LitterBoxCommandKey.START,
|
112
|
-
LitterBoxCommand.RESET_DEODOR: LitterBoxCommandKey.START,
|
113
|
-
LitterBoxCommand.START_MAINTENANCE: LitterBoxCommandKey.START,
|
114
|
-
LitterBoxCommand.EXIT_MAINTENANCE: LitterBoxCommandKey.END,
|
115
|
-
LitterBoxCommand.PAUSE_MAINTENANCE_EXIT: LitterBoxCommandKey.STOP,
|
116
|
-
LitterBoxCommand.RESUME_MAINTENANCE_EXIT: LitterBoxCommandKey.CONTINUE,
|
117
|
-
LitterBoxCommand.DUMP_LITTER: LitterBoxCommandKey.START,
|
118
|
-
LitterBoxCommand.PAUSE_LITTER_DUMP: LitterBoxCommandKey.STOP,
|
119
|
-
LitterBoxCommand.RESUME_LITTER_DUMP: LitterBoxCommandKey.CONTINUE,
|
120
|
-
LitterBoxCommand.RESET_MAX_DEODOR: LitterBoxCommandKey.START,
|
121
|
-
}
|
122
|
-
|
123
|
-
LB_CMD_TO_TYPE = {
|
124
|
-
LitterBoxCommand.LIGHT_ON: LitterBoxCommandType.START,
|
125
|
-
LitterBoxCommand.POWER: LitterBoxCommandType.POWER,
|
126
|
-
LitterBoxCommand.START_CLEAN: LitterBoxCommandType.START,
|
127
|
-
LitterBoxCommand.PAUSE_CLEAN: LitterBoxCommandType.STOP,
|
128
|
-
LitterBoxCommand.RESUME_CLEAN: LitterBoxCommandType.CONTINUE,
|
129
|
-
LitterBoxCommand.ODOR_REMOVAL: LitterBoxCommandType.START,
|
130
|
-
LitterBoxCommand.RESET_DEODOR: LitterBoxCommandType.START,
|
131
|
-
LitterBoxCommand.START_MAINTENANCE: LitterBoxCommandType.START,
|
132
|
-
LitterBoxCommand.EXIT_MAINTENANCE: LitterBoxCommandType.END,
|
133
|
-
LitterBoxCommand.PAUSE_MAINTENANCE_EXIT: LitterBoxCommandType.STOP,
|
134
|
-
LitterBoxCommand.RESUME_MAINTENANCE_EXIT: LitterBoxCommandType.CONTINUE,
|
135
|
-
LitterBoxCommand.DUMP_LITTER: LitterBoxCommandType.START,
|
136
|
-
LitterBoxCommand.PAUSE_LITTER_DUMP: LitterBoxCommandType.STOP,
|
137
|
-
LitterBoxCommand.RESUME_LITTER_DUMP: LitterBoxCommandType.CONTINUE,
|
138
|
-
LitterBoxCommand.RESET_MAX_DEODOR: LitterBoxCommandType.START,
|
139
|
-
}
|
140
|
-
|
141
|
-
LB_CMD_TO_VALUE = {
|
142
|
-
LitterBoxCommand.LIGHT_ON: 7,
|
143
|
-
LitterBoxCommand.START_CLEAN: 0,
|
144
|
-
LitterBoxCommand.PAUSE_CLEAN: 0,
|
145
|
-
LitterBoxCommand.RESUME_CLEAN: 0,
|
146
|
-
LitterBoxCommand.ODOR_REMOVAL: 2,
|
147
|
-
LitterBoxCommand.RESET_DEODOR: 6,
|
148
|
-
LitterBoxCommand.START_MAINTENANCE: 9,
|
149
|
-
LitterBoxCommand.EXIT_MAINTENANCE: 9,
|
150
|
-
LitterBoxCommand.PAUSE_MAINTENANCE_EXIT: 9,
|
151
|
-
LitterBoxCommand.RESUME_MAINTENANCE_EXIT: 9,
|
152
|
-
LitterBoxCommand.DUMP_LITTER: 1,
|
153
|
-
LitterBoxCommand.PAUSE_LITTER_DUMP: 1,
|
154
|
-
LitterBoxCommand.RESUME_LITTER_DUMP: 1,
|
155
|
-
LitterBoxCommand.RESET_MAX_DEODOR: 8,
|
156
|
-
}
|
157
|
-
|
158
|
-
|
159
90
|
class FountainAction(StrEnum):
|
160
91
|
"""Fountain Action"""
|
161
92
|
|
@@ -317,8 +248,8 @@ ACTIONS_MAP = {
|
|
317
248
|
endpoint=PetkitEndpoint.CONTROL_DEVICE,
|
318
249
|
params=lambda device, command: {
|
319
250
|
"id": device.id,
|
320
|
-
"kv": json.dumps(
|
321
|
-
"type":
|
251
|
+
"kv": json.dumps(command),
|
252
|
+
"type": list(command.keys())[0].split("_")[0],
|
322
253
|
},
|
323
254
|
supported_device=[T3, T4, T5, T6],
|
324
255
|
),
|
File without changes
|
@@ -187,7 +187,7 @@ build-backend = "poetry.core.masonry.api"
|
|
187
187
|
|
188
188
|
[tool.poetry]
|
189
189
|
name = "pypetkitapi"
|
190
|
-
version = "0.5.
|
190
|
+
version = "0.5.4"
|
191
191
|
description = "Python client for PetKit API"
|
192
192
|
authors = ["Jezza34000 <info@mail.com>"]
|
193
193
|
readme = "README.md"
|
@@ -204,7 +204,7 @@ black = "^24.10.0"
|
|
204
204
|
ruff = "^0.8.1"
|
205
205
|
|
206
206
|
[tool.bumpver]
|
207
|
-
current_version = "0.5.
|
207
|
+
current_version = "0.5.4"
|
208
208
|
version_pattern = "MAJOR.MINOR.PATCH"
|
209
209
|
commit_message = "bump version {old_version} -> {new_version}"
|
210
210
|
tag_message = "{new_version}"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -82,6 +82,17 @@ class SettingsLitter(BaseModel):
|
|
82
82
|
wander_detection: int | None = Field(None, alias="wanderDetection")
|
83
83
|
|
84
84
|
|
85
|
+
class WorkState(BaseModel):
|
86
|
+
"""Dataclass for work state data."""
|
87
|
+
|
88
|
+
safe_warn: int | None = Field(None, alias="safeWarn")
|
89
|
+
stop_time: int | None = Field(None, alias="stopTime")
|
90
|
+
work_mode: int | None = Field(None, alias="workMode")
|
91
|
+
work_process: int | None = Field(None, alias="workProcess")
|
92
|
+
work_reason: int | None = Field(None, alias="workReason")
|
93
|
+
pet_in_time: int | None = Field(None, alias="petInTime")
|
94
|
+
|
95
|
+
|
85
96
|
class StateLitter(BaseModel):
|
86
97
|
"""Dataclass for state.
|
87
98
|
-> LitterData subclass.
|
@@ -128,17 +139,7 @@ class StateLitter(BaseModel):
|
|
128
139
|
seal_door_state: int | None = Field(None, alias="sealDoorState")
|
129
140
|
top_ins: int | None = Field(None, alias="topIns")
|
130
141
|
wander_time: int | None = Field(None, alias="wanderTime")
|
131
|
-
|
132
|
-
|
133
|
-
class WorkState(BaseModel):
|
134
|
-
"""Dataclass for work state data."""
|
135
|
-
|
136
|
-
safe_warn: int | None = Field(None, alias="safeWarn")
|
137
|
-
stop_time: int | None = Field(None, alias="stopTime")
|
138
|
-
work_mode: int | None = Field(None, alias="workMode")
|
139
|
-
work_process: int | None = Field(None, alias="workProcess")
|
140
|
-
work_reason: int | None = Field(None, alias="workReason")
|
141
|
-
pet_in_time: int | None = Field(None, alias="petInTime")
|
142
|
+
work_state: WorkState | None = Field(None, alias="workState")
|
142
143
|
|
143
144
|
|
144
145
|
class Litter(BaseModel):
|
@@ -182,7 +183,6 @@ class Litter(BaseModel):
|
|
182
183
|
service_status: int | None = Field(None, alias="serviceStatus")
|
183
184
|
total_time: int | None = Field(None, alias="totalTime")
|
184
185
|
device_type: str | None = Field(None, alias="deviceType")
|
185
|
-
work_state: WorkState | None = Field(None, alias="workState")
|
186
186
|
|
187
187
|
@classmethod
|
188
188
|
def get_endpoint(cls, device_type: str) -> str:
|
File without changes
|