32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
import os
|
|
import logging
|
|
import pytz
|
|
from datetime import datetime
|
|
from dotenv import load_dotenv
|
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
|
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
|
|
from app.core.database import sync_engine
|
|
from app.drivers.wiz import WizDriver
|
|
|
|
load_dotenv()
|
|
logger = logging.getLogger(__name__)
|
|
|
|
TZ_NAME = os.getenv("APP_TIMEZONE", "Asia/Novosibirsk")
|
|
app_tz = pytz.timezone(TZ_NAME)
|
|
|
|
jobstores = {"default": SQLAlchemyJobStore(engine=sync_engine)}
|
|
scheduler = AsyncIOScheduler(jobstores=jobstores, timezone=app_tz)
|
|
|
|
|
|
async def execute_lamp_command(ip: str, params: dict):
|
|
"""Выполнение команды по расписанию"""
|
|
driver = WizDriver()
|
|
await driver.set_pilot(ip, params)
|
|
logger.info(f"⏰ Сработало расписание для {ip}: {params}")
|
|
|
|
|
|
async def start_scheduler():
|
|
if not scheduler.running:
|
|
scheduler.start()
|
|
logger.info(f"🚀 Планировщик запущен. Таймзона: {TZ_NAME}")
|