Skip to content

Commit 3672135

Browse files
committed
examples: vucm: use Device.run_in_thread
1 parent 8a8f1e5 commit 3672135

2 files changed

Lines changed: 52 additions & 37 deletions

File tree

examples/vucm/snmp-eaton-ups/script.py

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,42 +30,58 @@ def __init__(self, snmp_community, snmp_host, snmp_port, **kwargs):
3030

3131
async def task_get_telemetry_data(self):
3232
while True:
33-
if (value := self.snmp_get("1.3.6.1.4.1.534.1.6.1.0")) is not None:
34-
self.telemetry["temperature"] = int(value)
33+
temperature = await self.snmp_get("1.3.6.1.4.1.534.1.6.1.0")
34+
if temperature is not None:
35+
self.telemetry["temperature"] = int(temperature)
3536

36-
if (value := self.snmp_get("1.3.6.1.4.1.534.1.2.4.0")) is not None:
37-
self.telemetry["capacity"] = int(value)
37+
capacity = await self.snmp_get("1.3.6.1.4.1.534.1.2.4.0")
38+
if capacity is not None:
39+
self.telemetry["capacity"] = int(capacity)
3840

39-
if (value := self.snmp_get("1.3.6.1.4.1.534.1.2.5.0")) is not None:
40-
self.telemetry["status"] = str(value)
41+
status = await self.snmp_get("1.3.6.1.4.1.534.1.2.5.0")
42+
if status is not None:
43+
self.telemetry["status"] = str(status)
4144

42-
if (value := self.snmp_get("1.3.6.1.2.1.33.1.3.3.1.2.1")) is not None:
43-
self.telemetry["grid_freq"] = int(value) * 0.1
45+
grid_freq = await self.snmp_get("1.3.6.1.2.1.33.1.3.3.1.2.1")
46+
if grid_freq is not None:
47+
self.telemetry["grid_freq"] = int(grid_freq) * 0.1
4448

45-
if (value := self.snmp_get("1.3.6.1.4.1.534.1.4.2.0")) is not None:
46-
self.telemetry["ups_freq"] = int(value) * 0.1
49+
ups_freq = await self.snmp_get("1.3.6.1.4.1.534.1.4.2.0")
50+
if ups_freq is not None:
51+
self.telemetry["ups_freq"] = int(ups_freq) * 0.1
4752

48-
if (value := self.snmp_get("1.3.6.1.4.1.534.1.3.4.1.2.1")) is not None:
49-
self.telemetry["grid_v"] = int(value)
53+
grid_v = await self.snmp_get("1.3.6.1.4.1.534.1.3.4.1.2.1")
54+
if grid_v is not None:
55+
self.telemetry["grid_v"] = int(grid_v)
5056

51-
if (value := self.snmp_get("1.3.6.1.4.1.534.1.4.1.0")) is not None:
52-
self.telemetry["out_load"] = int(value)
57+
out_load = await self.snmp_get("1.3.6.1.4.1.534.1.4.1.0")
58+
if out_load is not None:
59+
self.telemetry["out_load"] = int(out_load)
5360

54-
if (value := self.snmp_get("1.3.6.1.4.1.534.1.4.4.1.4.1")) is not None:
55-
self.telemetry["ac_out_active_power"] = int(value)
61+
ac_out_active_power = await self.snmp_get("1.3.6.1.4.1.534.1.4.4.1.4.1")
62+
if ac_out_active_power is not None:
63+
self.telemetry["ac_out_active_power"] = int(ac_out_active_power)
5664

5765
await asyncio.sleep(10)
5866

5967
async def task_get_properties_data(self):
6068
while True:
61-
if (value := self.snmp_get("1.3.6.1.2.1.33.1.1.2.0")) is not None:
62-
self.properties["model"] = str(value)
63-
if (value := self.snmp_get("1.3.6.1.2.1.33.1.1.1.0")) is not None:
64-
self.properties["manufacturer"] = str(value)
65-
if (value := self.snmp_get("1.3.6.1.2.1.33.1.1.3.0")) is not None:
66-
self.properties["fw_ver"] = str(value)
67-
if (value := self.snmp_get("1.3.6.1.2.1.33.1.1.4.0")) is not None:
68-
self.properties["agent_ver"] = str(value)
69+
model = await self.snmp_get("1.3.6.1.2.1.33.1.1.2.0")
70+
if model is not None:
71+
self.properties["model"] = str(model)
72+
73+
manufacturer = await self.snmp_get("1.3.6.1.2.1.33.1.1.1.0")
74+
if manufacturer is not None:
75+
self.properties["manufacturer"] = str(manufacturer)
76+
77+
fw_ver = await self.snmp_get("1.3.6.1.2.1.33.1.1.3.0")
78+
if fw_ver is not None:
79+
self.properties["fw_ver"] = str(fw_ver)
80+
81+
agent_ver = await self.snmp_get("1.3.6.1.2.1.33.1.1.4.0")
82+
if agent_ver is not None:
83+
self.properties["agent_ver"] = str(agent_ver)
84+
6985
await asyncio.sleep(60)
7086

7187
async def task_telemetry_sender(self):
@@ -78,8 +94,13 @@ async def task_properties_publisher(self):
7894
await self.send_properties(self.properties)
7995
await asyncio.sleep(10)
8096

81-
def snmp_get(self, oid):
82-
result = self.cmd_gen.getCmd(self.auth_data, self.transport_target, oid)
97+
async def snmp_get(self, oid):
98+
result = await self.run_in_thread(
99+
self.cmd_gen.getCmd,
100+
self.auth_data,
101+
self.transport_target,
102+
oid,
103+
)
83104
(error_indication, error_status, error_index, var_binds) = result
84105

85106
if error_indication:

examples/vucm/zhimi-fan-za5/script.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,21 @@ def __init__(self, ip, token, **kwargs):
2222
self.fan = miio.FanZA5(ip=ip, token=token)
2323

2424
async def cmd_power(self, on: bool = False):
25-
return await self.exec(self.fan.on if on else self.fan.off)
25+
return await self.run_in_thread(self.fan.on if on else self.fan.off)
2626

2727
async def cmd_mode(self, mode: str):
2828
miio_mode = miio.fan_common.OperationMode(mode)
29-
return await self.exec(self.fan.set_mode, miio_mode)
29+
return await self.run_in_thread(self.fan.set_mode, miio_mode)
3030

3131
async def cmd_buzzer(self, on: bool = False):
32-
return await self.exec(self.fan.set_buzzer, on)
32+
return await self.run_in_thread(self.fan.set_buzzer, on)
3333

3434
async def cmd_speed(self, speed: int):
35-
return await self.exec(self.fan.set_speed, speed)
35+
return await self.run_in_thread(self.fan.set_speed, speed)
3636

3737
async def task_telemetry_sender(self):
3838
while True:
39-
status = await self.exec(self.fan.status)
39+
status = await self.run_in_thread(self.fan.status)
4040
await self.send_telemetry(
4141
{
4242
"humidity": status.humidity,
@@ -49,12 +49,6 @@ async def task_telemetry_sender(self):
4949
)
5050
await asyncio.sleep(1)
5151

52-
async def exec(self, func, *args, **kwargs):
53-
loop = asyncio.get_running_loop()
54-
return await loop.run_in_executor(
55-
None, functools.partial(func, *args, **kwargs)
56-
)
57-
5852

5953
if __name__ == "__main__":
6054
asyncio.run(main())

0 commit comments

Comments
 (0)