Files
ignis-core/app/core/scheduler.py
Артём Кокос 3fe2be5514 Improve sched
2026-02-21 11:45:15 +07:00

35 lines
1.1 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):
"""
Универсальное выполнение команды.
params может содержать: state, dimming, temp, sceneId, r, g, b
"""
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}")