Skip to content

Commit 4c5a919

Browse files
lexiconzeroCopilotLash-L
authored
feat: enable support for snoo sleepytime timeout levels (#46)
* Enable support for snoo sleepytime timeout levels with enum provide values * Update python_snoo/snoo.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update containers.py remove future annotations * Fix up linting as suggested * Fix ordering of imports As suggested by linter * Update snoo.py * Update python_snoo/snoo.py Co-authored-by: Luke Lashley <conway220@gmail.com> * Update snoo.py for linter * trailing comma for linter * chore: lint --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Luke Lashley <conway220@gmail.com>
1 parent b1eb4a1 commit 4c5a919

3 files changed

Lines changed: 60 additions & 13 deletions

File tree

python_snoo/baby.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from datetime import datetime
22

3-
from python_snoo.containers import Activity, BabyData, BreastfeedingActivity, DiaperActivity, DiaperTypes
4-
from python_snoo.exceptions import SnooBabyError
5-
from python_snoo.snoo import Snoo
3+
from .containers import Activity, BabyData, BreastfeedingActivity, DiaperActivity, DiaperTypes
4+
from .exceptions import SnooBabyError
5+
from .snoo import Snoo
66

77

88
class Baby:

python_snoo/containers.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import dataclasses
22
import datetime
3-
from enum import StrEnum
3+
from enum import IntEnum, StrEnum
44
from typing import Any, Union
55

66
from mashumaro.mixins.json import DataClassJSONMixin
@@ -16,6 +16,45 @@ class SnooLevels(StrEnum):
1616
stop = "ONLINE"
1717

1818

19+
class SnooNoiseTimeoutLevels(IntEnum):
20+
_5_minutes = 5
21+
_10_minutes = 10
22+
_15_minutes = 15
23+
_20_minutes = 20
24+
_25_minutes = 25
25+
_30_minutes = 30
26+
_35_minutes = 35
27+
_40_minutes = 40
28+
_45_minutes = 45
29+
_50_minutes = 50
30+
_55_minutes = 55
31+
_60_minutes = 60
32+
_65_minutes = 65
33+
_70_minutes = 70
34+
_75_minutes = 75
35+
_80_minutes = 80
36+
_85_minutes = 85
37+
_90_minutes = 90
38+
_95_minutes = 95
39+
_100_minutes = 100
40+
_105_minutes = 105
41+
_110_minutes = 110
42+
_115_minutes = 115
43+
_120_minutes = 120
44+
_125_minutes = 125
45+
_130_minutes = 130
46+
_135_minutes = 135
47+
_140_minutes = 140
48+
_145_minutes = 145
49+
_150_minutes = 150
50+
_155_minutes = 155
51+
_160_minutes = 160
52+
_165_minutes = 165
53+
_170_minutes = 170
54+
_175_minutes = 175
55+
_180_minutes = 180
56+
57+
1958
class SnooStates(StrEnum):
2059
baseline = "BASELINE"
2160
level1 = "LEVEL1"

python_snoo/snoo.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,7 @@
1313
from pubnub.pnconfiguration import PNConfiguration
1414
from pubnub.pubnub_asyncio import PubNubAsyncio
1515

16-
from .containers import (
17-
AuthorizationInfo,
18-
BabyData,
19-
SnooData,
20-
SnooDevice,
21-
SnooStates,
22-
)
16+
from .containers import AuthorizationInfo, BabyData, SnooData, SnooDevice, SnooNoiseTimeoutLevels, SnooStates
2317
from .exceptions import InvalidSnooAuth, SnooAuthException, SnooBabyError, SnooCommandException, SnooDeviceError
2418
from .pubnub_async import SnooPubNub
2519

@@ -233,11 +227,25 @@ async def set_level(self, device: SnooDevice, level: SnooStates, hold: bool = Fa
233227

234228
await self.send_command("go_to_state", device, **{"state": level.value, "hold": hold})
235229

236-
async def set_sticky_white_noise(self, device: SnooDevice, on: bool):
230+
async def set_sticky_white_noise(
231+
self,
232+
device: SnooDevice,
233+
on: bool,
234+
timeout_value: SnooNoiseTimeoutLevels | int = SnooNoiseTimeoutLevels._15_minutes,
235+
):
236+
"""Enable or disable sticky white noise for a device.
237+
238+
Args:
239+
device: The SnooDevice to control.
240+
on: True to turn sticky white noise on, False to turn it off.
241+
timeout_value: How long the white noise should remain on before timing out.
242+
Must be a member of the SnooNoiseTimeoutLevels enum. The default is
243+
SnooNoiseTimeoutLevels._15_minutes.
244+
"""
237245
await self.send_command(
238246
"set_sticky_white_noise",
239247
device,
240-
**{"state": "on" if on else "off", "timeout_min": 15},
248+
**{"state": "on" if on else "off", "timeout_min": timeout_value},
241249
)
242250

243251
async def get_status(self, device: SnooDevice):

0 commit comments

Comments
 (0)