Skip to content

Commit 03f762d

Browse files
committed
feat: add aws device update methods
1 parent b65b47c commit 03f762d

File tree

3 files changed

+38
-3
lines changed

3 files changed

+38
-3
lines changed

src/blueair_api/device_aws.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class DeviceAws(CallbacksMixin):
3030
tVOC: int = None
3131
temperature: int = None
3232
humidity: int = None
33-
filter_usage: int = None # percentage
33+
filter_usage: int = None # percentage
3434

3535
def __init__(
3636
self,
@@ -73,8 +73,25 @@ async def refresh(self):
7373

7474
self.publish_updates()
7575

76-
async def set_fan_speed(self, new_speed):
77-
await self.api.set_fan_speed(self.uuid, new_speed)
76+
async def set_brightness(self, value: int):
77+
self.brightness = value
78+
await self.api.set_device_info(self.uuid, 'brightness', 'v', value)
79+
80+
async def set_fan_speed(self, value: int):
81+
self.fan_speed = value
82+
await self.api.set_device_info(self.uuid, 'fanspeed', 'v', value)
83+
84+
async def set_running(self, running: bool):
85+
self.running = running
86+
await self.api.set_device_info(self.uuid, 'standby', 'vb', not running)
87+
88+
async def set_fan_auto_mode(self, fan_auto_mode: bool):
89+
self.fan_auto_mode = fan_auto_mode
90+
await self.api.set_device_info(self.uuid, 'automode', 'vb', fan_auto_mode)
91+
92+
async def set_child_lock(self, child_lock: bool):
93+
self.child_lock = child_lock
94+
await self.api.set_device_info(self.uuid, 'childlock', 'vb', child_lock)
7895

7996
def __repr__(self):
8097
return {

src/blueair_api/http_aws_blueair.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,20 @@ async def device_info(self, device_name, device_uuid):
153153
)
154154
response_json = await response.json()
155155
return response_json["deviceInfo"][0]
156+
157+
async def set_device_info(self, device_uuid, service_name, action_verb, action_value):
158+
url = f"https://{AWS_APIKEYS[self.region]['restApiId']}.execute-api.{AWS_APIKEYS[self.region]['awsRegion']}.amazonaws.com/prod/c/{device_uuid}/a/{service_name}"
159+
headers = {
160+
'Authorization': f"Bearer {await self.get_access_token()}",
161+
}
162+
json_body = {
163+
"n": service_name,
164+
action_verb: action_value
165+
}
166+
response: ClientResponse = (
167+
await self._post_request_with_logging_and_errors_raised(
168+
url=url, headers=headers, json_body=json_body
169+
)
170+
)
171+
response_text = await response.text()
172+
return response_text == "Success"

src/blueair_api/stub.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ async def testing():
2929
try:
3030
api, devices = await get_aws_devices(username=username, password=password)
3131
await devices[0].refresh()
32+
await devices[0].set_child_lock(True)
3233
logger.debug(devices[0])
3334
finally:
3435
if api:

0 commit comments

Comments
 (0)