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

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

Описание используемой Z-Wave системы автоматизации Устройство детектирование включенного телевизора на базе фотодиода BPW34 Внедрение фотодетектора в систему автоматизации Z-Way HA с помощью HTTP Device Описание используемой Z-Wave системы автоматизацииДом у меня частично автоматизирован Z-Wave устройствами, среди них несколько Z-Wave.Me Dimmer для плавного управления освещением, пара Fibaro Universal Sensor в качестве датчиков движения для включения света, выключатели на батарейках и еще несколько устройств. В коридоре около входной двери в стену вмонтирован iPhone, являющийся панелью управления Умным Домом. С этой панели можно посмотреть температуру в доме и на улице, влажность в комнате, пробки и выключить свет в комнатах.0c392234e9244c5e82162375cbbcfb5f.jpgРис. 1 — Панель управления умным домом из iPhone 4Для телевизора я собрал ИК-приёмопередатчик подключенный к Raspberry Pi. Благодаря этому устройству я могу управлять телевизором с помощью HTTP запросов: включать/выключать, переключать каналы, менять громкость и т.д. Но я никак не могу узнать включен или выключен телевизор.9fba759630224663b3136b4247446bc3.jpgРис. 2 — ИК-приёмопередатчик для управления TV

Задача которую мне предстояло решить, это как узнать, что телевизор включен и как эту информацию передать на контроллер умного дома RaZberry, чтобы работать с ней уже в рамках моей домашней системы автоматизации. Коротко расскажу о моем контроллере домашней автоматизации.Для коммуникации с Z-Wave устройствами я использую плату RaZberry установленную на Raspberry Pi.efb43690caac47a8a7ad03b90d5c9dcc.jpgРис. 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 реле, которое управляет электроприводом мансардного окна.64a3eb166ac54058acec8546101a3650.jpgРис. 4 — Правило автоматизации в системе Z-Way HA

С помощью HTTP устройства я могу добавить телевизор в мою систему автоматизации. Нужно только понять какой сигнал от TV передавать по HTTP.Есть несколько вариантов, как детектировать, что телевизор включен:

Современные умные телевизоры по Ethernet расскажут, что хочешь (У моего телека нет Ethernet) Многие телевизоры поддерживают CEC технологию по HDMI (Мой не поддерживает CEC) Некоторые телевизору в выключенном состоянии на USB выходе не имеют питания (У моего телека нет USB) Можно телевизор запитать через Fibaro Wall Plug — Z-Wave Розеточный Модуль с измерением энергопотребления. Самый удобный вариант для меня, так как я остаюсь в рамках системы Z-Wave. Легко устанавливать, легко детектировать состояние телека, есть энергопотребление — телек включен, нет энергопотребления — телек выключен (3000 р. за модуль) Детектировать состояние светодиода телевизора, который горит, когда телевизор выключен и не горит, когда телевизор включен (Мой выбор!) Устройство детектирование включенного телевизора на базе фотодиода BPW34 Детектировать состояние телевизора я решил с помощью светодиода на нем. Около телевизора у меня стоит Raspberry Pi для просмотра кино, планировал, светодиод напрямую подключить к GPIO и тем самым узнавать состояние телевизора, но для этого нужно было снимать телевизор со стены, разбирать его. Я решил пойти другим путем.Для детектирования, что светодиод горит я воспользовался фотодиодом BPW34, который работает, как фотодетектор. Для его подключения к Raspberry Pi, я сначала усилил сигнал с помощью Операционного Усилителя LM358 и затем сигнал с ОУ уже подал на GPIO. Схема получилась простая: ce749ab2ec074d86a0862ba49d11ddbb.jpgРис. 5 — Схема фотодетектора с цифровым выходом

Собрал устройство: 3708b4e4f275498bb00deffdd62564cc.jpgРис. 6 — Фотодетектор подключаемый к Raspberry Pi

На Raspberry Pi у меня уже установлен ИК-приёмопередатчик и Датчик влажности с экраном, на экранчик прикрепил фотодетектор: 45cccde2fd1e47caa84f011f3d23623c.jpgРис. 7 — Установленный Фотодетектор на Raspberry Pi

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

Внедрение фотодетектора в систему автоматизации с помощью HTTP Device С помощью фотодетектора я могу узнать состояние телевизора, а с помощью ИК-приёмопередатчик могу им управлять. Для передачи статуса и управления телевизором я поднял Apache на Raspberry Pi и написал 2 маленьких cgi скрипта, один скрипт принимает команды по HTTP и перенаправляет их на ИК, другой скрипт возвращает состояние TV off или on: xbian@xbian ~ $ cat /var/www/cgi-bin/tvstatus.cgi #!/bin/bash echo «Content-type: text/json» echo » STATUS=`cat /sys/class/gpio/gpio27/value` if [ »$STATUS» -eq »1» ]; then echo «off» else echo «on» fi В системе автоматизации Z-Way Home Automation я создал HTTP Device, который включает/выключает телевизор и реально показывает его состояние, т.е. если выключить телевизор с пульта или кнопкой на нем, то в Z-Way HA я увижу реальное состояние телевизора.63c154d7d805408b96c5579519996960.pngРис. 9 — Создание HTTP Device в системе Z-Way HA3858071f79de4b048336bb4e7c3c645b.jpgРис. 10 — Виджет телевизора на Dashboard

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

© Habrahabr.ru