46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
import logging
|
|
import time
|
|
|
|
import cec
|
|
import requests
|
|
|
|
from microkodi.config import Config
|
|
from microkodi.repository import I
|
|
|
|
|
|
class TVHandler:
|
|
logger: logging.Logger
|
|
|
|
def __init__(self):
|
|
self.logger = logging.getLogger("TVHandler")
|
|
|
|
config: Config = I.get("Config")
|
|
if config.cec:
|
|
cec.init()
|
|
self.logger.debug("CEC initialised")
|
|
|
|
def enable_power_if_configured(self) -> bool:
|
|
config: Config = I.get("Config")
|
|
if config.tv_power_webhook is not None:
|
|
try:
|
|
requests.put(config.tv_power_webhook)
|
|
self.logger.debug("Triggered webhook to enable power to the TV")
|
|
except Exception:
|
|
self.logger.warn("Failed to enable power to the TV")
|
|
return config.tv_power_webhook is not None
|
|
|
|
def power_on_if_needed(self) -> bool:
|
|
config: Config = I.get("Config")
|
|
if config.cec:
|
|
tc = cec.Device(cec.CECDEVICE_TV)
|
|
if not tc.is_on():
|
|
tc.power_on()
|
|
return config.cec
|
|
|
|
def turn_on_tv(self):
|
|
if self.enable_power_if_configured():
|
|
self.logger.debug("Waiting 500ms for TV to get power...")
|
|
time.sleep(500)
|
|
|
|
self.power_on_if_needed()
|