Вопрос или проблема
У меня есть ПК с Ubuntu 22.04 и графической картой Nvidia 1060 с одним экраном, используемым в качестве домашнего кинотеатра, с обычным монитором и проектором Panasonic PT-AT6000, который подключен через HDMI.
У меня есть служба systemd, которая запускает xsecurelock, когда монитор выключен, запрашивая состояние питания монитора с помощью ddcutil… но есть исключение: мы также хотим выключать монитор, пока проектор работает, так как он создает много фона света.
В настоящее время проверяется, работает ли vlc, но было бы намного лучше также запрашивать состояние питания проектора.
ddcutil interrogate может видеть проектор и возвращать его шину i2c, производителя и модель, но он говорит “Недействительный дисплей”, а не дает номер дисплея.
Xscreen всегда поддерживается активным другой службой systemd.
Есть ли какие-либо другие команды, которые могут проверить состояние питания проектора, который не поддерживает DDC? Я полагаю, что необработанный HDMI-сигнал поступает от X и без DDC не зависит от состояния питания монитора, поэтому, возможно, это становится вопросом IoT: отдельное устройство, например, чтобы уведомить ПК о том, сколько электроэнергии подается на розетку проектора, или можно ли запросить конкретный проектор с помощью его пульта дистанционного управления по ИК.
Ответ или решение
К сожалению, обнаружить состояние питания проектора, который не поддерживает DDC (Display Data Channel), вызывает определенные трудности, особенно когда вы используете Ubuntu 22.04 с графической картой Nvidia 1060 и подключаете проектор Panasonic PT-AT6000 через HDMI. Чтобы эффективно решить эту проблему, необходимо рассмотреть несколько подходов.
1. Альтернативные методы проверки состояния питания проектора
1.1 Использование IR-пульта
Некоторые проекторы можно контролировать через инфракрасный (IR) пульт. Если ваш проектор поддерживает такие команды, вы можете разработать программу, которая будет отправлять команду на включение или выключение проектора и в ответ получать его текущее состояние. Для этого потребуются:
- IR-передатчик и приемник (например, на базе Arduino).
- Библиотека для обработки IR-сигналов, например IRLib.
1.2 Учет потребления энергии
Если подключение проекта к сети электричества позволяет это сделать, вы можете использовать измеритель энергопотребления (например, устройство типа Kill A Watt или умные розетки, поддерживающие мониторинг энергии). Эти устройства могут предоставить данные о потреблении энергии и, соответственно, подтвердить, включен ли проектор (если его мощность превышает определенный порог).
2. Настройка системы для автоматического мониторинга
2.1 Создание системы оповещения
Для автоматизации процесса мониторинга состояния проектора можно создать небольшой сервер на базе Raspberry Pi или другого микроконтроллера. Он будет подключен к сети вашего дома и через API будет взаимодействовать с вашим ПК, отправляя запросы о текущем состоянии питания проектора.
2.2 Использование кастомного скрипта на Python
Если ваш проектор имеет доступный API (например, через USB или LAN), вы можете написать скрипт на Python, который будет отправлять команды на этот API и извлекать состояние питания проектора. Этот скрипт может взаимодействовать с вашим сервисом xsecurelock, чтобы управлять блокировкой экрана в зависимости от состояния проектора.
3. Интеграция с системой автоматизации дома
Системы умного дома (например, Home Assistant или OpenHAB) могут помочь интегрировать различные устройства и создавать условные сценарии. Например, вы можете настроить сценарий, который будет отслеживать состояние проектора и на основе его состояния управлять монитором.
Заключение
Проблема мониторинга состояния питания проектора без поддержки DDC требует интеграции нескольких технологий. Использование IR-контроля, счетчиков потребления энергии, а также интеграция с системами автоматизации – это возможные решения. Это даст вам больше контроля над вашим оборудованием и улучшит пользовательский опыт просмотра, особенно в условиях домашнего кинотеатра.