Детектування включеного телевізора за допомогою фотодіода

У мене є телевізор, який іноді вмикаю для перегляду телепередач. І часто буває, почав дивитися передачу, як раптом знадобилося вийти з дому, одягнувся, стоїш в черевиках в коридорі, а телевізор не вимкнений! Доводиться знімати черевики (негоже в черевиках по кімнаті ходити), заходиш в кімнату, знаходиш на дивані пульт, вимикаєш телевізор, йдеш по своїх справах. Така ситуація буває часто, тому я вирішив покласти цьому край і все-таки зробити кнопку вимикання телевізора в коридорі.



Зміст:
  • Опис використовуваної Z-Wave системи автоматизації
  • Пристрій детектування включеного телевізора на базі фотодіода BPW34
  • Впровадження фотодетектора в систему автоматизації Z-Way HA за допомогою HTTP Device


Опис використовуваної Z-Wave системи автоматизації
Будинок у мене частково автоматизований Z-Wave пристроями, серед них кілька Z-Wave.Me Dimmer для плавного керування освітленням, пара Fibaro Універсальний 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

За допомогою HTTP пристрою я можу додати телевізор у мою систему автоматизації. Потрібно тільки зрозуміти який сигнал від TV передавати по HTTP.
Є кілька варіантів, як детектувати, що телевізор включений:
  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:
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 я побачу реальний стан телевізора.

Рис. 9 — Створення HTTP Device у системі Z-Way HA


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

До чого взагалі потрібно знати стан телевізора? До того що, для включення і виключення телевізора використовується одна і та ж ІЧ команда, а мені потрібно з панелі в коридорі відправляти тільки команду виключення, адже якщо відправити телевізору команду, коли він вимкнений, то він включиться.
Тепер, йдучи з дому, я в коридорі натискаю кнопку — «Вимкнути все», і команди розходяться по різних пристроїв.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.