Skip to content

Commit 5dac91c

Browse files
committed
replace most values with instance_vars
1 parent 09b60a2 commit 5dac91c

File tree

1 file changed

+37
-19
lines changed

1 file changed

+37
-19
lines changed

WLedController.py

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import json
22
import math
3+
import sys
34
from datetime import datetime
45
from enum import Enum
56

@@ -25,11 +26,24 @@ class NightlightMode(Enum):
2526

2627

2728
class WLedController:
29+
_api_url: str
30+
_json_url: str
31+
_log: bool
32+
_MIN_BYTE: int
33+
_MAX_BYTE: int
34+
_MAX_TWO_BYTE: int
35+
_MAX_FX: int
36+
2837
def __init__(self, wled_socket: str, log: bool = True) -> None:
29-
self.api_url = f"http://{wled_socket}/"
30-
self.json_url = self.api_url + "json/"
38+
self._api_url = f"http://{wled_socket}/"
39+
self._json_url = self._api_url + "json/"
3140
self._log = log
3241

42+
self._MIN_BYTE = 0
43+
self._MAX_BYTE = 255
44+
self._MAX_TWO_BYTE = 65535
45+
self._MAX_FX = 117
46+
3347
try:
3448
self.get_status()
3549
except:
@@ -64,19 +78,19 @@ def deactivate_log(self) -> None:
6478

6579
# get requests
6680
def get_version(self) -> int:
67-
return int(self._get_request(self.api_url + "version").text)
81+
return int(self._get_request(self._api_url + "version").text)
6882

6983
def get_free_heap(self) -> int:
70-
return int(self._get_request(self.api_url + "freeheap").text)
84+
return int(self._get_request(self._api_url + "freeheap").text)
7185

7286
def get_uptime(self) -> int:
73-
return int(self._get_request(self.api_url + "uptime").text)
87+
return int(self._get_request(self._api_url + "uptime").text)
7488

7589
def get_timer(self) -> int:
7690
return self.get_status(Specifier.state, "nl")["rem"]
7791

7892
def get_status(self, specification: Specifier = Specifier.none, main_key: str = None) -> dict[str: dict[str: any]]:
79-
response = self._get_request(self.json_url + specification.value).json()
93+
response = self._get_request(self._json_url + specification.value).json()
8094
if main_key:
8195
try:
8296
return response[main_key]
@@ -87,7 +101,7 @@ def get_status(self, specification: Specifier = Specifier.none, main_key: str =
87101

88102
# nonparametric functions
89103
def reboot(self) -> int:
90-
return self._get_request(self.api_url + "reset").status_code
104+
return self._get_request(self._api_url + "reset").status_code
91105

92106
def activate(self) -> None:
93107
self.set_arguments(self._build_data(("on", "true")))
@@ -113,7 +127,7 @@ def deactivate_live(self) -> None:
113127
# parametric functions
114128
def set_arguments(self, arguments: str) -> None:
115129
try:
116-
status = list(json.loads(self._post_request(self.json_url, arguments).text))[0]
130+
status = list(json.loads(self._post_request(self._json_url, arguments).text))[0]
117131

118132
if self._log:
119133
self._logging(f"{arguments} --> {status}")
@@ -128,16 +142,16 @@ def set_arguments(self, arguments: str) -> None:
128142
raise Exception(f"'{arguments}' resulted in an Error.")
129143

130144
def set_brightness(self, brightness: int) -> None:
131-
if brightness < 0 or brightness > 255:
145+
if brightness < self._MIN_BYTE or brightness > self._MAX_BYTE:
132146
raise exceptions.ValueOutOfBoundsException(brightness)
133147

134148
self.set_arguments(self._build_data(("bri", brightness)))
135149

136150
def set_transition(self, milliseconds: int) -> None:
137151
milliseconds = milliseconds / 100
138152

139-
if milliseconds < 0 or milliseconds > 65535:
140-
raise exceptions.ValueOutOfBoundsException(milliseconds, stop=65535)
153+
if milliseconds < self._MIN_BYTE or milliseconds > self._MAX_TWO_BYTE:
154+
raise exceptions.ValueOutOfBoundsException(milliseconds, stop=self._MAX_TWO_BYTE)
141155

142156
self.set_arguments(self._build_data(("transition", math.floor(milliseconds))))
143157

@@ -148,7 +162,7 @@ def set_preset(self, preset: int) -> None:
148162
self.set_arguments(self._build_data(("ps", preset)))
149163

150164
def set_timer(self, minutes: int) -> None:
151-
if minutes < 0 or minutes > 255:
165+
if minutes < self._MIN_BYTE or minutes > self._MAX_BYTE:
152166
raise exceptions.ValueOutOfBoundsException(minutes)
153167

154168
self.set_arguments(self._build_data(("nl.dur", minutes)))
@@ -157,32 +171,36 @@ def set_timer_mode(self, mode: NightlightMode) -> None:
157171
self.set_arguments(self._build_data(("nl.mode", mode.value)))
158172

159173
def set_timer_brightness(self, target_brightness: int) -> None:
160-
if target_brightness < 0 or target_brightness > 255:
174+
if target_brightness < self._MIN_BYTE or target_brightness > self._MAX_BYTE:
161175
raise exceptions.ValueOutOfBoundsException(target_brightness)
162176

163177
self.set_arguments(self._build_data(("nl.tbri", target_brightness)))
164178

165179
def set_colors(self, *colors: list[int, int, int]) -> None:
166180
for color in colors:
167-
if min(color) < 0 or max(color) > 255:
168-
raise exceptions.ValueOutOfBoundsException(color, (0, 0, 0), (255, 255, 255))
181+
if min(color) < self._MIN_BYTE or max(color) > self._MAX_BYTE:
182+
raise exceptions.ValueOutOfBoundsException(color, (self._MIN_BYTE, self._MIN_BYTE, self._MIN_BYTE),
183+
(self._MAX_BYTE, self._MAX_BYTE, self._MAX_BYTE))
169184

170185
self.set_arguments(self._build_data(("seg", self._build_data(("col", str(list(colors)))))))
171186

172187
def set_effect(self, effect: int) -> None:
173-
if effect < 0 or effect > 117:
174-
raise exceptions.ValueOutOfBoundsException(effect, stop=101)
188+
if effect < self._MIN_BYTE or effect > self._MAX_FX:
189+
raise exceptions.ValueOutOfBoundsException(effect, stop=self._MAX_FX)
175190

176191
self.set_arguments(self._build_data(("seg", self._build_data(("fx", effect)))))
177192

178193
def set_effect_speed(self, speed: int) -> None:
179-
if speed < 0 or speed > 255:
194+
if speed < self._MIN_BYTE or speed > self._MAX_BYTE:
180195
raise exceptions.ValueOutOfBoundsException(speed)
181196

182197
self.set_arguments(self._build_data(("seg", self._build_data(("sx", speed)))))
183198

184199
def set_effect_intensity(self, intensity: int) -> None:
185-
if intensity < 0 or intensity > 255:
200+
if intensity < self._MIN_BYTE or intensity > self._MAX_BYTE:
186201
raise exceptions.ValueOutOfBoundsException(intensity)
187202

188203
self.set_arguments(self._build_data(("seg", self._build_data(("ix", intensity)))))
204+
205+
206+
WLedController("192.168.178.42").set_preset(10)

0 commit comments

Comments
 (0)