pypetkitapi 1.15.0__tar.gz → 1.16.0__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-1.15.0 → pypetkitapi-1.16.0}/PKG-INFO +29 -2
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/README.md +28 -1
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/__init__.py +1 -1
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/command.py +6 -4
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/const.py +1 -1
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/litter_container.py +67 -52
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pyproject.toml +2 -2
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/LICENSE +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/bluetooth.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/client.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/containers.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/exceptions.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/feeder_container.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/media.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/purifier_container.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/py.typed +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/schedule_container.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/utils.py +0 -0
- {pypetkitapi-1.15.0 → pypetkitapi-1.16.0}/pypetkitapi/water_fountain_container.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: pypetkitapi
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.16.0
|
4
4
|
Summary: Python client for PetKit API
|
5
5
|
License: MIT
|
6
6
|
Author: Jezza34000
|
@@ -52,6 +52,12 @@ Description-Content-Type: text/markdown
|
|
52
52
|
[pre-commit]: https://github.com/pre-commit/pre-commit
|
53
53
|
[black]: https://github.com/psf/black
|
54
54
|
|
55
|
+
### Enjoying this library?
|
56
|
+
|
57
|
+
[![Sponsor Jezza34000][github-sponsor-shield]][github-sponsor] [![Static Badge][buymeacoffee-shield]][buymeacoffee]
|
58
|
+
|
59
|
+
---
|
60
|
+
|
55
61
|
## Overview
|
56
62
|
|
57
63
|
PetKit Client is a Python library for interacting with the PetKit API. It allows you to manage your PetKit devices, retrieve account data, and control devices through the API.
|
@@ -62,6 +68,7 @@ PetKit Client is a Python library for interacting with the PetKit API. It allows
|
|
62
68
|
- Fetch account and device data
|
63
69
|
- Control PetKit devices (Feeder, Litter Box, Water Fountain, Purifiers)
|
64
70
|
- Fetch images & videos produced by devices
|
71
|
+
> Pictures are available **with or without** Care+ subscription, Videos are only available **with** Care+ subscription
|
65
72
|
|
66
73
|
## Installation
|
67
74
|
|
@@ -136,7 +143,9 @@ Check at the usage in the Home Assistant integration : [here](https://github.com
|
|
136
143
|
|
137
144
|
## Help and Support
|
138
145
|
|
139
|
-
|
146
|
+
Developers? Want to help? Join us on our Discord channel dedicated to developers and contributors.
|
147
|
+
|
148
|
+
[![Discord][discord-shield]][discord]
|
140
149
|
|
141
150
|
## Contributing
|
142
151
|
|
@@ -147,3 +156,21 @@ Please open an issue or submit a pull request.
|
|
147
156
|
|
148
157
|
This project is licensed under the MIT License. See the LICENSE file for details.
|
149
158
|
|
159
|
+
---
|
160
|
+
|
161
|
+
[homeassistant_petkit]: https://github.com/Jezza34000/py-petkit-api
|
162
|
+
[commits-shield]: https://img.shields.io/github/commit-activity/y/Jezza34000/py-petkit-api.svg?style=flat
|
163
|
+
[commits]: https://github.com/Jezza34000/py-petkit-api/commits/main
|
164
|
+
[discord]: https://discord.gg/Va8DrmtweP
|
165
|
+
[discord-shield]: https://img.shields.io/discord/1318098700379361362.svg?style=for-the-badge&label=Discord&logo=discord&color=5865F2
|
166
|
+
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg?style=for-the-badge&label=Home%20Assistant%20Community&logo=homeassistant&color=18bcf2
|
167
|
+
[forum]: https://community.home-assistant.io/t/petkit-integration/834431
|
168
|
+
[license-shield]: https://img.shields.io/github/license/Jezza34000/py-petkit-api.svg??style=flat
|
169
|
+
[maintenance-shield]: https://img.shields.io/badge/maintainer-Jezza34000-blue.svg?style=flat
|
170
|
+
[releases-shield]: https://img.shields.io/github/release/Jezza34000/py-petkit-api.svg?style=for-the-badge&color=41BDF5
|
171
|
+
[releases]: https://github.com/Jezza34000/py-petkit-api/releases
|
172
|
+
[github-sponsor-shield]: https://img.shields.io/badge/sponsor-Jezza34000-blue.svg?style=for-the-badge&logo=githubsponsors&color=EA4AAA
|
173
|
+
[github-sponsor]: https://github.com/sponsors/Jezza34000
|
174
|
+
[buymeacoffee-shield]: https://img.shields.io/badge/Donate-buy_me_a_coffee-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee
|
175
|
+
[buymeacoffee]: https://www.buymeacoffee.com/jezza
|
176
|
+
|
@@ -31,6 +31,12 @@
|
|
31
31
|
[pre-commit]: https://github.com/pre-commit/pre-commit
|
32
32
|
[black]: https://github.com/psf/black
|
33
33
|
|
34
|
+
### Enjoying this library?
|
35
|
+
|
36
|
+
[![Sponsor Jezza34000][github-sponsor-shield]][github-sponsor] [![Static Badge][buymeacoffee-shield]][buymeacoffee]
|
37
|
+
|
38
|
+
---
|
39
|
+
|
34
40
|
## Overview
|
35
41
|
|
36
42
|
PetKit Client is a Python library for interacting with the PetKit API. It allows you to manage your PetKit devices, retrieve account data, and control devices through the API.
|
@@ -41,6 +47,7 @@ PetKit Client is a Python library for interacting with the PetKit API. It allows
|
|
41
47
|
- Fetch account and device data
|
42
48
|
- Control PetKit devices (Feeder, Litter Box, Water Fountain, Purifiers)
|
43
49
|
- Fetch images & videos produced by devices
|
50
|
+
> Pictures are available **with or without** Care+ subscription, Videos are only available **with** Care+ subscription
|
44
51
|
|
45
52
|
## Installation
|
46
53
|
|
@@ -115,7 +122,9 @@ Check at the usage in the Home Assistant integration : [here](https://github.com
|
|
115
122
|
|
116
123
|
## Help and Support
|
117
124
|
|
118
|
-
|
125
|
+
Developers? Want to help? Join us on our Discord channel dedicated to developers and contributors.
|
126
|
+
|
127
|
+
[![Discord][discord-shield]][discord]
|
119
128
|
|
120
129
|
## Contributing
|
121
130
|
|
@@ -125,3 +134,21 @@ Please open an issue or submit a pull request.
|
|
125
134
|
## License
|
126
135
|
|
127
136
|
This project is licensed under the MIT License. See the LICENSE file for details.
|
137
|
+
|
138
|
+
---
|
139
|
+
|
140
|
+
[homeassistant_petkit]: https://github.com/Jezza34000/py-petkit-api
|
141
|
+
[commits-shield]: https://img.shields.io/github/commit-activity/y/Jezza34000/py-petkit-api.svg?style=flat
|
142
|
+
[commits]: https://github.com/Jezza34000/py-petkit-api/commits/main
|
143
|
+
[discord]: https://discord.gg/Va8DrmtweP
|
144
|
+
[discord-shield]: https://img.shields.io/discord/1318098700379361362.svg?style=for-the-badge&label=Discord&logo=discord&color=5865F2
|
145
|
+
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg?style=for-the-badge&label=Home%20Assistant%20Community&logo=homeassistant&color=18bcf2
|
146
|
+
[forum]: https://community.home-assistant.io/t/petkit-integration/834431
|
147
|
+
[license-shield]: https://img.shields.io/github/license/Jezza34000/py-petkit-api.svg??style=flat
|
148
|
+
[maintenance-shield]: https://img.shields.io/badge/maintainer-Jezza34000-blue.svg?style=flat
|
149
|
+
[releases-shield]: https://img.shields.io/github/release/Jezza34000/py-petkit-api.svg?style=for-the-badge&color=41BDF5
|
150
|
+
[releases]: https://github.com/Jezza34000/py-petkit-api/releases
|
151
|
+
[github-sponsor-shield]: https://img.shields.io/badge/sponsor-Jezza34000-blue.svg?style=for-the-badge&logo=githubsponsors&color=EA4AAA
|
152
|
+
[github-sponsor]: https://github.com/sponsors/Jezza34000
|
153
|
+
[buymeacoffee-shield]: https://img.shields.io/badge/Donate-buy_me_a_coffee-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee
|
154
|
+
[buymeacoffee]: https://www.buymeacoffee.com/jezza
|
@@ -57,7 +57,8 @@ class FeederCommand(StrEnum):
|
|
57
57
|
class LitterCommand(StrEnum):
|
58
58
|
"""Specific LitterCommand"""
|
59
59
|
|
60
|
-
|
60
|
+
RESET_N50_DEODORIZER = "reset_deodorizer"
|
61
|
+
# T5/T6 N60 does not have this command, must use control_device
|
61
62
|
|
62
63
|
|
63
64
|
class PetCommand(StrEnum):
|
@@ -71,14 +72,15 @@ class LBCommand(IntEnum):
|
|
71
72
|
|
72
73
|
CLEANING = 0
|
73
74
|
DUMPING = 1
|
74
|
-
ODOR_REMOVAL = 2
|
75
|
+
ODOR_REMOVAL = 2 # For T4=K3 spray, for T5/T6=N60 fan
|
75
76
|
RESETTING = 3
|
76
77
|
LEVELING = 4
|
77
78
|
CALIBRATING = 5
|
78
79
|
RESET_DEODOR = 6
|
79
80
|
LIGHT = 7
|
80
|
-
|
81
|
+
RESET_N50_DEODOR = 8
|
81
82
|
MAINTENANCE = 9
|
83
|
+
RESET_N60_DEODOR = 10
|
82
84
|
|
83
85
|
|
84
86
|
class PurMode(IntEnum):
|
@@ -251,7 +253,7 @@ ACTIONS_MAP = {
|
|
251
253
|
},
|
252
254
|
supported_device=DEVICES_FEEDER,
|
253
255
|
),
|
254
|
-
LitterCommand.
|
256
|
+
LitterCommand.RESET_N50_DEODORIZER: CmdData(
|
255
257
|
endpoint=PetkitEndpoint.DEODORANT_RESET,
|
256
258
|
params=lambda device: {
|
257
259
|
"deviceId": device.id,
|
@@ -166,7 +166,7 @@ class PetkitEndpoint(StrEnum):
|
|
166
166
|
GET_WORK_RECORD = "getWorkRecord"
|
167
167
|
|
168
168
|
# Litter Box
|
169
|
-
DEODORANT_RESET = "deodorantReset"
|
169
|
+
DEODORANT_RESET = "deodorantReset" # For N50 only
|
170
170
|
STATISTIC = "statistic"
|
171
171
|
STATISTIC_RELEASE = "statisticRelease"
|
172
172
|
GET_PET_OUT_GRAPH = "getPetOutGraph"
|
@@ -30,12 +30,21 @@ class SettingsLitter(BaseModel):
|
|
30
30
|
"""
|
31
31
|
|
32
32
|
auto_interval_min: int | None = Field(None, alias="autoIntervalMin")
|
33
|
+
auto_interval_spray: int | None = Field(None, alias="autoIntervalSpray")
|
34
|
+
auto_product: int | None = Field(None, alias="autoProduct")
|
35
|
+
auto_spray: int | None = Field(None, alias="autoSpray")
|
33
36
|
auto_work: int | None = Field(None, alias="autoWork")
|
34
37
|
avoid_repeat: int | None = Field(None, alias="avoidRepeat")
|
35
38
|
bury: int | None = None
|
39
|
+
camera: int | None = None
|
40
|
+
camera_config: int | None = Field(None, alias="cameraConfig")
|
41
|
+
camera_light: int | None = Field(None, alias="cameraLight")
|
42
|
+
cleanning_notify: int | None = Field(None, alias="cleanningNotify")
|
43
|
+
click_ok_enable: int | None = Field(None, alias="clickOkEnable")
|
36
44
|
control_settings: int | None = Field(None, alias="controlSettings")
|
37
45
|
deep_clean: int | None = Field(None, alias="deepClean")
|
38
46
|
deep_refresh: int | None = Field(None, alias="deepRefresh")
|
47
|
+
deep_spray: int | None = Field(None, alias="deepSpray")
|
39
48
|
deodorant_notify: int | None = Field(None, alias="deodorantNotify")
|
40
49
|
distrub_multi_range: list[list[int]] | None = Field(None, alias="distrubMultiRange")
|
41
50
|
disturb_config: int | None = Field(None, alias="disturbConfig")
|
@@ -44,6 +53,9 @@ class SettingsLitter(BaseModel):
|
|
44
53
|
downpos: int | None = None
|
45
54
|
dump_switch: int | None = Field(None, alias="dumpSwitch")
|
46
55
|
fixed_time_clear: int | None = Field(None, alias="fixedTimeClear")
|
56
|
+
fixed_time_spray: int | None = Field(None, alias="fixedTimeSpray")
|
57
|
+
garbage_notify: int | None = Field(None, alias="garbageNotify")
|
58
|
+
highlight: int | None = Field(None, alias="highlight")
|
47
59
|
kitten: int | None = None
|
48
60
|
kitten_percent: float | None = Field(None, alias="kittenPercent")
|
49
61
|
kitten_tips_time: int | None = Field(None, alias="kittenTipsTime")
|
@@ -52,39 +64,30 @@ class SettingsLitter(BaseModel):
|
|
52
64
|
language: str | None = None
|
53
65
|
language_follow: int | None = Field(None, alias="languageFollow")
|
54
66
|
languages: list[str] | None = None
|
67
|
+
light_assist: int | None = Field(None, alias="lightAssist")
|
55
68
|
light_config: int | None = Field(None, alias="lightConfig")
|
56
69
|
light_mode: int | None = Field(None, alias="lightMode")
|
57
70
|
light_multi_range: list[Any] | None = Field(None, alias="lightMultiRange")
|
58
71
|
light_range: list[int] | None = Field(None, alias="lightRange")
|
59
72
|
lightest: int | None = Field(None, alias="lightest")
|
60
73
|
litter_full_notify: int | None = Field(None, alias="litterFullNotify")
|
61
|
-
manual_lock: int | None = Field(None, alias="manualLock")
|
62
|
-
no_remind: int | None = Field(None, alias="noRemind")
|
63
|
-
pet_in_notify: int | None = Field(None, alias="petInNotify")
|
64
|
-
relate_k3_switch: int | None = Field(None, alias="relateK3Switch")
|
65
|
-
sand_type: int | None = Field(None, alias="sandType")
|
66
|
-
soft_mode: int | None = Field(None, alias="softMode")
|
67
|
-
still_time: int | None = Field(None, alias="stillTime")
|
68
|
-
stop_time: int | None = Field(None, alias="stopTime")
|
69
|
-
underweight: int | None = Field(None, alias="underweight")
|
70
|
-
unit: int | None = None
|
71
|
-
weight_popup: int | None = Field(None, alias="weightPopup")
|
72
|
-
work_notify: int | None = Field(None, alias="workNotify")
|
73
|
-
auto_product: int | None = Field(None, alias="autoProduct")
|
74
|
-
camera: int | None = None
|
75
|
-
camera_config: int | None = Field(None, alias="cameraConfig")
|
76
|
-
cleanning_notify: int | None = Field(None, alias="cleanningNotify")
|
77
|
-
garbage_notify: int | None = Field(None, alias="garbageNotify")
|
78
|
-
highlight: int | None = Field(None, alias="highlight")
|
79
|
-
light_assist: int | None = Field(None, alias="lightAssist")
|
80
74
|
live_encrypt: int | None = Field(None, alias="liveEncrypt")
|
75
|
+
manual_lock: int | None = Field(None, alias="manualLock")
|
81
76
|
microphone: int | None = None
|
82
77
|
move_notify: int | None = Field(None, alias="moveNotify")
|
83
78
|
night: int | None = None
|
79
|
+
no_remind: int | None = Field(None, alias="noRemind")
|
84
80
|
package_standard: list[int] | None = Field(None, alias="packageStandard")
|
85
81
|
pet_detection: int | None = Field(None, alias="petDetection")
|
82
|
+
pet_in_notify: int | None = Field(None, alias="petInNotify")
|
86
83
|
pet_notify: int | None = Field(None, alias="petNotify")
|
87
84
|
pre_live: int | None = Field(None, alias="preLive")
|
85
|
+
relate_k3_switch: int | None = Field(None, alias="relateK3Switch")
|
86
|
+
sand_type: int | None = Field(None, alias="sandType")
|
87
|
+
soft_mode: int | None = Field(None, alias="softMode")
|
88
|
+
spray_notify: int | None = Field(None, alias="sprayNotify")
|
89
|
+
still_time: int | None = Field(None, alias="stillTime")
|
90
|
+
stop_time: int | None = Field(None, alias="stopTime")
|
88
91
|
system_sound_enable: int | None = Field(None, alias="systemSoundEnable")
|
89
92
|
time_display: int | None = Field(None, alias="timeDisplay")
|
90
93
|
toilet_detection: int | None = Field(None, alias="toiletDetection")
|
@@ -93,9 +96,13 @@ class SettingsLitter(BaseModel):
|
|
93
96
|
tone_mode: int | None = Field(None, alias="toneMode")
|
94
97
|
tone_multi_range: list[list[int]] | None = Field(None, alias="toneMultiRange")
|
95
98
|
tumbling: int | None = None
|
99
|
+
underweight: int | None = Field(None, alias="underweight")
|
100
|
+
unit: int | None = None
|
96
101
|
upload: int | None = None
|
97
102
|
volume: int | None = None
|
98
103
|
wander_detection: int | None = Field(None, alias="wanderDetection")
|
104
|
+
weight_popup: int | None = Field(None, alias="weightPopup")
|
105
|
+
work_notify: int | None = Field(None, alias="workNotify")
|
99
106
|
|
100
107
|
|
101
108
|
class WorkState(BaseModel):
|
@@ -114,51 +121,57 @@ class StateLitter(BaseModel):
|
|
114
121
|
-> LitterData subclass.
|
115
122
|
"""
|
116
123
|
|
124
|
+
bagging_state: int | None = Field(None, alias="baggingState")
|
125
|
+
battery: int | None = None
|
117
126
|
box: int | None = None
|
118
127
|
box_full: bool | None = Field(None, alias="boxFull")
|
119
128
|
box_state: int | None = Field(None, alias="boxState")
|
129
|
+
box_store_state: int | None = Field(None, alias="boxStoreState")
|
130
|
+
camera_status: int | None = Field(None, alias="cameraStatus")
|
120
131
|
deodorant_left_days: int | None = Field(None, alias="deodorantLeftDays")
|
132
|
+
dump_state: int | None = Field(None, alias="dumpState")
|
121
133
|
error_code: str | None = Field(None, alias="errorCode")
|
122
134
|
error_detail: str | None = Field(None, alias="errorDetail")
|
123
135
|
error_level: int | None = Field(None, alias="errorLevel")
|
124
136
|
error_msg: str | None = Field(None, alias="errorMsg")
|
125
137
|
frequent_restroom: int | None = Field(None, alias="frequentRestroom")
|
138
|
+
liquid: int | None = None
|
126
139
|
liquid_empty: bool | None = Field(None, alias="liquidEmpty")
|
127
140
|
liquid_lack: bool | None = Field(None, alias="liquidLack")
|
128
141
|
liquid_reset: int | None = Field(None, alias="liquidReset")
|
142
|
+
light_state: dict | None = Field(None, alias="lightState")
|
129
143
|
low_power: bool | None = Field(None, alias="lowPower")
|
130
144
|
offline_time: int | None = Field(None, alias="offlineTime")
|
131
145
|
ota: int | None = None
|
132
146
|
overall: int | None = None
|
147
|
+
pack_state: int | None = Field(None, alias="packState")
|
148
|
+
package_install: int | None = Field(None, alias="packageInstall")
|
149
|
+
package_secret: str | None = Field(None, alias="packageSecret")
|
150
|
+
package_sn: str | None = Field(None, alias="packageSn")
|
151
|
+
package_state: int | None = Field(None, alias="packageState")
|
133
152
|
pet_error: bool | None = Field(None, alias="petError")
|
134
153
|
pet_in_time: int | None = Field(None, alias="petInTime")
|
135
154
|
pim: int | None = None
|
155
|
+
pi_ins: int | None = Field(None, alias="piIns")
|
136
156
|
power: int | None = None
|
157
|
+
purification_left_days: int | None = Field(None, alias="purificationLeftDays")
|
158
|
+
refresh_state: WorkState | None = Field(None, alias="refreshState")
|
137
159
|
sand_correct: int | None = Field(None, alias="sandCorrect")
|
138
160
|
sand_lack: bool | None = Field(None, alias="sandLack")
|
139
161
|
sand_percent: int | None = Field(None, alias="sandPercent")
|
140
162
|
sand_status: int | None = Field(None, alias="sandStatus")
|
141
163
|
sand_type: int | None = Field(None, alias="sandType")
|
142
164
|
sand_weight: int | None = Field(None, alias="sandWeight")
|
143
|
-
used_times: int | None = Field(None, alias="usedTimes")
|
144
|
-
wifi: Wifi | None = None
|
145
|
-
bagging_state: int | None = Field(None, alias="baggingState")
|
146
|
-
battery: int | None = None
|
147
|
-
box_store_state: int | None = Field(None, alias="boxStoreState")
|
148
|
-
camera_status: int | None = Field(None, alias="cameraStatus")
|
149
|
-
dump_state: int | None = Field(None, alias="dumpState")
|
150
|
-
liquid: int | None = None
|
151
|
-
light_state: dict | None = Field(None, alias="lightState")
|
152
|
-
pack_state: int | None = Field(None, alias="packState")
|
153
|
-
package_install: int | None = Field(None, alias="packageInstall")
|
154
|
-
package_secret: str | None = Field(None, alias="packageSecret")
|
155
|
-
package_sn: str | None = Field(None, alias="packageSn")
|
156
|
-
package_state: int | None = Field(None, alias="packageState")
|
157
|
-
pi_ins: int | None = Field(None, alias="piIns")
|
158
|
-
purification_left_days: int | None = Field(None, alias="purificationLeftDays")
|
159
165
|
seal_door_state: int | None = Field(None, alias="sealDoorState")
|
166
|
+
spray_days: int | None = Field(None, alias="sprayDays")
|
167
|
+
spray_left_days: int | None = Field(None, alias="sprayLeftDays")
|
168
|
+
spray_reset_time: int | None = Field(None, alias="sprayResetTime")
|
169
|
+
spray_state: int | None = Field(None, alias="sprayState")
|
160
170
|
top_ins: int | None = Field(None, alias="topIns")
|
171
|
+
used_times: int | None = Field(None, alias="usedTimes")
|
161
172
|
wander_time: int | None = Field(None, alias="wanderTime")
|
173
|
+
weight_state: int | None = Field(None, alias="weightState")
|
174
|
+
wifi: Wifi | None = None
|
162
175
|
work_state: WorkState | None = Field(None, alias="workState")
|
163
176
|
|
164
177
|
|
@@ -396,44 +409,46 @@ class Litter(BaseModel):
|
|
396
409
|
|
397
410
|
auto_upgrade: int | None = Field(None, alias="autoUpgrade")
|
398
411
|
bt_mac: str | None = Field(None, alias="btMac")
|
412
|
+
cloud_product: CloudProduct | None = Field(None, alias="cloudProduct") # For T5/T6
|
399
413
|
created_at: str | None = Field(None, alias="createdAt")
|
414
|
+
deodorant_tip: int | None = Field(None, alias="deodorantTip")
|
415
|
+
device_nfo: Device | None = None
|
416
|
+
device_pet_graph_out: list[PetOutGraph] | None = None
|
417
|
+
device_records: list[LitterRecord] | None = None
|
418
|
+
device_stats: LitterStats | None = None
|
400
419
|
firmware: float
|
401
420
|
firmware_details: list[FirmwareDetail] = Field(alias="firmwareDetails")
|
402
421
|
hardware: int
|
403
422
|
id: int
|
404
|
-
|
423
|
+
in_times: int | None = None
|
405
424
|
is_pet_out_tips: int | None = Field(None, alias="isPetOutTips")
|
425
|
+
k3_device: Purifier | None = Field(None, alias="k3Device")
|
426
|
+
last_out_time: int | None = None
|
406
427
|
locale: str | None = None
|
407
428
|
mac: str | None = None
|
408
429
|
maintenance_time: int | None = Field(None, alias="maintenanceTime")
|
430
|
+
medias: list | None = None
|
409
431
|
multi_config: bool | None = Field(None, alias="multiConfig")
|
410
432
|
name: str | None = None
|
433
|
+
p2p_type: int | None = Field(None, alias="p2pType")
|
434
|
+
package_ignore_state: int | None = Field(None, alias="packageIgnoreState")
|
435
|
+
package_total_count: int | None = Field(None, alias="packageTotalCount")
|
436
|
+
package_used_count: int | None = Field(None, alias="packageUsedCount")
|
411
437
|
pet_in_tip_limit: int | None = Field(None, alias="petInTipLimit")
|
438
|
+
pet_out_records: list[list[int]] | None = Field(None, alias="petOutRecords")
|
412
439
|
pet_out_tips: list[Any] | None = Field(None, alias="petOutTips")
|
440
|
+
purification_tip: int | None = Field(None, alias="purificationTip")
|
413
441
|
secret: str | None = None
|
442
|
+
service_status: int | None = None
|
414
443
|
settings: SettingsLitter | None = None
|
415
444
|
share_open: int | None = Field(None, alias="shareOpen")
|
416
445
|
signup_at: str | None = Field(None, alias="signupAt")
|
417
446
|
sn: str
|
418
447
|
state: StateLitter | None = None
|
419
448
|
timezone: float | None = None
|
420
|
-
|
421
|
-
in_times: int | None = Field(None, alias="inTimes")
|
422
|
-
last_out_time: int | None = Field(None, alias="lastOutTime")
|
423
|
-
p2p_type: int | None = Field(None, alias="p2pType")
|
424
|
-
package_ignore_state: int | None = Field(None, alias="packageIgnoreState")
|
425
|
-
package_total_count: int | None = Field(None, alias="packageTotalCount")
|
426
|
-
package_used_count: int | None = Field(None, alias="packageUsedCount")
|
427
|
-
pet_out_records: list[list[int]] | None = Field(None, alias="petOutRecords")
|
428
|
-
service_status: int | None = Field(None, alias="serviceStatus")
|
429
|
-
total_time: int | None = Field(None, alias="totalTime")
|
430
|
-
with_k3: int | None = Field(None, alias="withK3")
|
449
|
+
total_time: int | None = None
|
431
450
|
user: UserDevice | None = None
|
432
|
-
|
433
|
-
device_stats: LitterStats | None = None
|
434
|
-
device_pet_graph_out: list[PetOutGraph] | None = None
|
435
|
-
device_nfo: Device | None = None
|
436
|
-
medias: list | None = None
|
451
|
+
with_k3: int | None = Field(None, alias="withK3")
|
437
452
|
|
438
453
|
@classmethod
|
439
454
|
def get_endpoint(cls, device_type: str) -> str:
|
@@ -186,7 +186,7 @@ build-backend = "poetry.core.masonry.api"
|
|
186
186
|
|
187
187
|
[tool.poetry]
|
188
188
|
name = "pypetkitapi"
|
189
|
-
version = "1.
|
189
|
+
version = "1.16.0"
|
190
190
|
description = "Python client for PetKit API"
|
191
191
|
authors = ["Jezza34000 <info@mail.com>"]
|
192
192
|
readme = "README.md"
|
@@ -208,7 +208,7 @@ ruff = "^0.8.1"
|
|
208
208
|
types-aiofiles = "^24.1.0.20240626"
|
209
209
|
|
210
210
|
[tool.bumpver]
|
211
|
-
current_version = "1.
|
211
|
+
current_version = "1.16.0"
|
212
212
|
version_pattern = "MAJOR.MINOR.PATCH"
|
213
213
|
commit_message = "bump version {old_version} -> {new_version}"
|
214
214
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|