84 lines
1.8 KiB
Python
84 lines
1.8 KiB
Python
import asyncio
|
|
import json
|
|
import logging
|
|
from app.tion import (
|
|
TionController,
|
|
TionService,
|
|
)
|
|
|
|
from app.my_dataclasses import *
|
|
|
|
|
|
def print_service(service: TionService) -> None:
|
|
print()
|
|
print("=" * 60)
|
|
|
|
print(f"Running: {service.running}")
|
|
print(f"Online: {service.online}")
|
|
print(f"Last seen: {service.last_seen}")
|
|
print(f"Last error: {service.last_error}")
|
|
|
|
if service.state is not None:
|
|
print()
|
|
print(json.dumps(
|
|
service.state.to_dict(),
|
|
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)
|
|
|
|
controller = TionController(TION_MAC)
|
|
|
|
service = TionService(
|
|
controller,
|
|
poll_interval=3,
|
|
)
|
|
|
|
async with service:
|
|
|
|
print("=== После запуска ===")
|
|
print_service(service)
|
|
|
|
print()
|
|
print("Ждём несколько циклов polling...")
|
|
|
|
await asyncio.sleep(60)
|
|
|
|
print_service(service)
|
|
|
|
print()
|
|
print("=== Устанавливаем скорость 2 ===")
|
|
|
|
state = await service.execute(
|
|
lambda tion: tion.set_speed(2)
|
|
)
|
|
|
|
print(json.dumps(
|
|
state.to_dict(),
|
|
indent=2,
|
|
ensure_ascii=False,
|
|
))
|
|
|
|
print()
|
|
print("=== Устанавливаем температуру 20°C ===")
|
|
|
|
await service.execute(
|
|
lambda tion: tion.set_target_temperature(20)
|
|
)
|
|
|
|
print_service(service)
|
|
|
|
print()
|
|
print("=== После stop ===")
|
|
print_service(service)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main()) |