60 lines
1.4 KiB
Python
60 lines
1.4 KiB
Python
#d1749bebeea6
|
|
|
|
import asyncio
|
|
import json
|
|
import logging
|
|
|
|
from tion_btle import TionS4
|
|
from my_dataclasses import *
|
|
|
|
|
|
def print_state(state: dict):
|
|
print(json.dumps(
|
|
state,
|
|
indent=2,
|
|
ensure_ascii=False
|
|
))
|
|
|
|
|
|
async def main():
|
|
# Убираем лишнее логирование
|
|
logging.getLogger("asyncio").setLevel(logging.WARNING)
|
|
logging.getLogger("bleak").setLevel(logging.WARNING)
|
|
logging.getLogger("tion_btle").setLevel(logging.WARNING)
|
|
|
|
tion = TionS4(TION_MAC)
|
|
|
|
print("=== Подключение к Tion ===")
|
|
await tion.connect()
|
|
|
|
try:
|
|
# 1. Получаем исходное состояние
|
|
print("\n=== Исходное состояние ===")
|
|
state = await tion.get()
|
|
print_state(state)
|
|
|
|
# 2. Включаем Tion и устанавливаем скорость 2
|
|
print("\n=== Включаю Tion, скорость 2 ===")
|
|
|
|
await tion.set({
|
|
"state": "on",
|
|
"fan_speed": 2
|
|
})
|
|
|
|
await asyncio.sleep(1)
|
|
|
|
# 3. Повторно читаем реальное состояние
|
|
print("\n=== Состояние после команды ===")
|
|
state = await tion.get()
|
|
print_state(state)
|
|
|
|
|
|
|
|
finally:
|
|
print("\n=== Отключение ===")
|
|
await tion.disconnect()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|