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}")