Детектирование включенного телевизора с помощью фотодиода

Детектирование включенного телевизора с помощью фотодиода

У меня есть телевизор, купленный 8 лет, НЕ смарт тв, в нем нет USB и Ethernet. Иногда я его включаю для просмотра телепередач. И часто бывает, начал смотреть передачу, как вдруг понадобилось выйти из дома, оделся, стоишь в ботинках в коридоре, а телевизор не выключен! Приходится снимать ботинки (негоже в ботинках по комнате ходить), заходишь в комнату, находишь на диване пульт, выключаешь телевизор, идешь по своим делам. Такая ситуация бывает часто, поэтому я решил положить этому конец и всё-таки сделать кнопку выключения телевизора в коридоре.

  • Описание используемой Z-Wave системы автоматизации
  • Устройство детектирования включенного телевизора на базе фотодиода BPW34
  • Внедрение фотодетектора в систему автоматизации Z-Way HA с помощью HTTP Device
Описание используемой Z-Wave системы автоматизации

Дом у меня частично автоматизирован Z-Wave устройствами, среди них несколько Z-Wave.Me Dimmer для плавного управления освещением, пара Fibaro Universal Sensor в качестве датчиков движения для включения света, выключатели на батарейках и еще несколько устройств. В коридоре около входной двери в стену вмонтирован iPhone, являющийся панелью управления Умным Домом. С этой панели можно посмотреть температуру в доме и на улице, влажность в комнате, пробки и выключить свет в комнатах.

Рис. 1 — Панель управления умным домом из iPhone 4

Для телевизора я собрал ИК-приёмопередатчик подключенный к Raspberry Pi. Благодаря этому устройству я могу управлять телевизором с помощью HTTP запросов: включать/выключать, переключать каналы, менять громкость и т.д. Но я никак не могу узнать включен или выключен телевизор.

Рис. 2 — ИК-приёмопередатчик для управления TV

Задача которую мне предстояло решить, это как узнать, что телевизор включен и как эту информацию передать на контроллер умного дома RaZberry, чтобы работать с ней уже в рамках моей домашней системы автоматизации. Коротко расскажу о моем контроллере домашней автоматизации.

Для коммуникации с Z-Wave устройствами я использую плату RaZberry установленную на Raspberry Pi.

Рис. 3 — Z-Wave плата RaZberry на Raspbberry Pi

В комлекте к плате идет софт для автоматизации — Z-Way. Z-Way имеет модульную структуру. Одна его часть — это проприетарная библиотека для работы с Z-Wave написанная на Си, вторая часть — это OpenSource движок автоматизации Z-Way Home Automation (Z-Way HA) написанный на JavaScript. Z-Way HA помимо Z-Wave устройств поддерживает еще и любые HTTP устройство, т.е. устройства с которыми можно общаться HTTP запросами. Для движка автоматизации Z-Wave устройства и HTTP устройства ничем не отличаются. Легко можно создать HTTP устройство, которое забирает погоду с OpenWeather, и создать правило автоматизации: Если на улице 30 °C, то включить Z-Wave реле, которое управляет электроприводом мансардного окна.

Рис. 4 — Правило автоматизации в системе Z-Way HA

  1. Современные умные телевизоры по Ethernet расскажут, что хочешь (У моего телека нет Ethernet)
  2. Многие телевизоры поддерживают CEC технологию по HDMI (Мой не поддерживает CEC)
  3. Некоторые телевизору в выключенном состоянии на USB выходе не имеют питания (У моего телека нет USB)
  4. Можно телевизор запитать через Fibaro Wall Plug — Z-Wave Розеточный Модуль с измерением энергопотребления. Самый удобный вариант для меня, так как я остаюсь в рамках системы Z-Wave. Легко устанавливать, легко детектировать состояние телека, есть энергопотребление — телек включен, нет энергопотребления — телек выключен (3000 р. за модуль)
  5. Детектировать состояние светодиода телевизора, который горит, когда телевизор выключен и не горит, когда телевизор включен (Мой выбор!)
Устройство детектирования включенного телевизора на базе фотодиода BPW34

Детектировать состояние телевизора я решил с помощью светодиода на нем. Около телевизора у меня стоит Raspberry Pi для просмотра кино, планировал, светодиод напрямую подключить к GPIO и тем самым узнавать состояние телевизора, но для этого нужно было снимать телевизор со стены, разбирать его. Я решил пойти другим путем.

Для детектирования, что светодиод горит я воспользовался фотодиодом BPW34, который работает, как фотодетектор. Для его подключения к Raspberry Pi, я сначала усилил сигнал с помощью Операционного Усилителя LM358 и затем сигнал с ОУ уже подал на GPIO. Схема получилась простая:

Рис. 5 — Схема фотодетектора с цифровым выходом

Рис. 6 — Фотодетектор подключаемый к Raspberry Pi

На Raspberry Pi у меня уже установлен ИК-приёмопередатчик и Датчик влажности с экраном, на экранчик прикрепил фотодетектор:

Рис. 7 — Установленный Фотодетектор на Raspberry Pi

ОУ отбирает примерно 1.5 В от питания 3.3 В. Когда светодиод горит, на выходе получается 2 В, когда не горит — 0 В. Raspberry Pi за логическую единицу принимает все, что больше 1 В, так что все работает как и планировалось. Подключил устройство к Raspberry Pi, а фотодиод прикрепил к телевизору с помощью двухсторонней черной ленты.

Рис. 8 — Фотодиод подключенный к телевизору

Внедрение фотодетектора в систему автоматизации с помощью HTTP Device

С помощью фотодетектора я могу узнать состояние телевизора, а с помощью ИК-приёмопередатчика могу им управлять. Для передачи статуса и управления телевизором я поднял Apache на Raspberry Pi и написал 2 маленьких cgi скрипта, один скрипт принимает команды по HTTP и перенаправляет их на ИК, другой скрипт возвращает состояние TV off или on:

В системе автоматизации Z-Way Home Automation я создал HTTP Device, который включает/выключает телевизор и реально показывает его состояние, т.е. если выключить телевизор с пульта или кнопкой на нем, то в Z-Way HA я увижу реальное состояние телевизора.

Рис. 9 — Создание HTTP Device в системе Z-Way HA

Рис. 10 — Виджет телевизора на Dashboard

К чему вообще нужно знать состояние телевизора? К тому что, для включения и выключения телевизора используется одна и та же ИК команда, а мне нужно с панели в коридоре отправлять только команду выключения, ведь если отправить телевизору команду, когда он выключен, то он включится.

Теперь, уходя из дома, я в коридоре нажимаю одну кнопку — «Выключить все», и команды расходятся по разным устройствам.

📎📎📎📎📎📎📎📎📎📎