control.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import cec
  2. from engine import log
  3. from engine.main import SETTINGS
  4. TV = None
  5. class TVControl:
  6. def __init__(self):
  7. cec.init()
  8. devices = cec.list_devices()
  9. # self.debug()
  10. self.tv = None
  11. for device in devices:
  12. if devices[device].osd_string == SETTINGS.get('CECTVName'):
  13. self.tv = devices[device]
  14. if not self.tv:
  15. raise RuntimeError('TV not found. Run TVControl.debug() to find device name')
  16. self.devices = {}
  17. if SETTINGS.get('ControlOtherCECDevices'):
  18. for device in devices:
  19. if devices[device] is not self.tv:
  20. self.devices[devices[device].osd_string] = devices[device]
  21. global TV
  22. TV = self
  23. def debug(self):
  24. log.debug(cec.list_adapters())
  25. devices = cec.list_devices()
  26. log.debug(devices)
  27. for device in devices:
  28. log.debug(devices[device].osd_string)
  29. log.debug(devices[device].vendor)
  30. log.debug(devices[device].address)
  31. log.debug(devices[device].is_active())
  32. def power_on(self):
  33. self.tv.power_on()
  34. def is_on(self):
  35. self.tv.is_on()
  36. def power_off(self):
  37. self.tv.standby()
  38. def is_active(self):
  39. self.tv.is_active()
  40. def make_active(self):
  41. cec.set_active_source()