Skip to content

Commit e3a4a02

Browse files
committed
examples: standalone: fix smart fan
1 parent 337468c commit e3a4a02

File tree

7 files changed

+116
-133
lines changed

7 files changed

+116
-133
lines changed

examples/standalone/zhimi-fan-za5/Dockerfile renamed to examples/standalone/mi-fan-1c/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM python:3.10-alpine3.16
1+
FROM python:3.13-alpine
22

33
WORKDIR /app
44

examples/standalone/zhimi-fan-za5/docker_run.sh renamed to examples/standalone/mi-fan-1c/docker_run.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ set -euo pipefail
44
IFS=$'\n\t'
55

66
SCRIPT_DIR="$(realpath "$(dirname "$0")")"
7-
IMAGE_TAG="${IMAGE_TAG:-"enapter-vucm-examples/$(basename "$SCRIPT_DIR"):latest"}"
7+
IMAGE_TAG="${IMAGE_TAG:-"enapter-standalone-examples/$(basename "$SCRIPT_DIR"):latest"}"
88

99
docker build --tag "$IMAGE_TAG" "$SCRIPT_DIR"
1010

1111
docker run --rm -it \
1212
--network host \
1313
-e ENAPTER_LOG_LEVEL="${ENAPTER_LOG_LEVEL:-info}" \
14-
-e ENAPTER_VUCM_BLOB="$ENAPTER_VUCM_BLOB" \
14+
-e ENAPTER_STANDALONE_COMMUNICATION_CONFIG="$ENAPTER_STANDALONE_COMMUNICATION_CONFIG" \
1515
-e MIIO_IP="$MIIO_IP" \
1616
-e MIIO_TOKEN="$MIIO_TOKEN" \
1717
"$IMAGE_TAG"
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
blueprint_spec: "device/1.0"
2+
3+
display_name: "Mi Smart Standing Fan 1C"
4+
5+
communication_module:
6+
product: ENP-VIRTUAL
7+
8+
command_groups:
9+
commands:
10+
display_name: Commands
11+
12+
properties: {}
13+
14+
telemetry:
15+
"on":
16+
display_name: "On"
17+
type: boolean
18+
mode:
19+
display_name: Mode
20+
type: string
21+
enum:
22+
- normal
23+
- nature
24+
buzzer:
25+
display_name: Buzzer
26+
type: boolean
27+
speed:
28+
display_name: Speed
29+
type: integer
30+
enum: [1, 2, 3]
31+
32+
commands:
33+
power:
34+
display_name: Power
35+
group: commands
36+
arguments:
37+
"on":
38+
display_name: "On"
39+
type: boolean
40+
mode:
41+
display_name: Mode
42+
group: commands
43+
arguments:
44+
mode:
45+
display_name: Mode
46+
type: string
47+
enum:
48+
- normal
49+
- nature
50+
buzzer:
51+
display_name: Buzzer
52+
group: commands
53+
arguments:
54+
"on":
55+
display_name: "On"
56+
type: boolean
57+
speed:
58+
display_name: Speed
59+
group: commands
60+
arguments:
61+
speed:
62+
display_name: Speed
63+
type: integer
64+
enum: [1, 2, 3]
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import asyncio
2+
import os
3+
4+
import miio
5+
6+
import enapter
7+
8+
9+
async def main():
10+
await enapter.standalone.run(
11+
Fan1C(ip=os.environ["MIIO_IP"], token=os.environ["MIIO_TOKEN"])
12+
)
13+
14+
15+
class Fan1C(enapter.standalone.Device):
16+
17+
def __init__(self, ip, token):
18+
super().__init__()
19+
self.fan = miio.Fan1C(ip=ip, token=token)
20+
21+
async def run(self):
22+
while True:
23+
status = await asyncio.to_thread(self.fan.status)
24+
await self.send_telemetry(
25+
{
26+
"on": status.is_on,
27+
"mode": status.mode.value,
28+
"buzzer": status.buzzer,
29+
"speed": status.speed,
30+
},
31+
)
32+
await asyncio.sleep(1)
33+
34+
async def cmd_power(self, on: bool = False):
35+
return await asyncio.to_thread(self.fan.on if on else self.fan.off)
36+
37+
async def cmd_mode(self, mode: str):
38+
miio_mode = miio.fan_common.OperationMode(mode)
39+
return await asyncio.to_thread(self.fan.set_mode, miio_mode)
40+
41+
async def cmd_buzzer(self, on: bool = False):
42+
return await asyncio.to_thread(self.fan.set_buzzer, on)
43+
44+
async def cmd_speed(self, speed: int):
45+
return await asyncio.to_thread(self.fan.set_speed, speed)
46+
47+
48+
if __name__ == "__main__":
49+
asyncio.run(main())

examples/standalone/zhimi-fan-za5/manifest.yml

Lines changed: 0 additions & 71 deletions
This file was deleted.

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

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)