[Железо] "Умное" зеркало на Raspberry Pi3 и Majordomo.

Модераторы: Bagir, Ivan, Vit, immortal, PAV, newz20

ilyasor
Сообщения: 17
Зарегистрирован: Чт ноя 30, 2017 7:19 am
Благодарил (а): 3 раза
Поблагодарили: 18 раз

[Железо] "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение ilyasor » Вс мар 18, 2018 9:08 am

Добрый день всем!

Сделал интересный проект с использованием Majordomo, хотел бы поделиться со всеми. Вроде бы кто-то уже занимался подобным тут, но темы не нашел. Наверное многие видели проекты "умных зеркал" вроде этих:
Изображение
Изображение

Во всех случаях ребята пишут свои решения для управления этим зеркалом, но у нас же уже есть Majordomo, который позволяет все это сделать очень просто. Так случилось, что у меня в руках случайно оказался лишний телевизор, осталось только купить для него зеркало и создать соответствующую сцену.

Начну с зеркала. Как вы понимаете, зеркало нужно специальное, пропускающее через себя свет, но отражающее с другой стороны как обычное зеркало. Называется такая штука зеркалом Гезелла. Погуглил, обратился в zerkala.ru (Нагорная 17 в Москве), у них должны были такие быть https://zerkala.ru/izdeliya-iz-zerkal/gezella.html. Сразу скажу, что туда обращаться не советую, у них был вариант только с одним светопропусканием, но заказал я все равно там, сделали нужный мне размер (400x700), стоило 3 тыс. руб.

Со светопропусканием проблема следующая: если оно низкое, то зеркало хорошо работает как обычное, но плохо пропускает изображение с телевизора. Если оно высокое, то изображение с телевизора видно хорошо, но само зеркало отражает плохо. Планирую попробовать различные пленки с алиэкспресса, там есть разные светопропускания, у меня в светлое время изображение практически не читается.

Далее, моя малинка работает со стандартной сборкой Majordomo от Сергея, пришлось произвести некоторые манипуляции. Приведу их здесь все, чтобы такие же новички как я могли это все проделать самостоятельно.

Во-первых, в стандартной сборке отсутствует графический интерфейс, нам нужно его вернуть.

Код: Выделить всё

sudo apt update
sudo apt upgrade
sudo apt-get install lxde
В ходе установки со всем соглашаемся.

Изменяем опции запуска, устанавливаем Chromium и перезагружаемся:

Код: Выделить всё

sudo raspi-config
boot options --desktop --desktop autologin
sudo apt install chromium-browser
sudo reboot
Должна загрузиться графическая оболочка.

Почему-то у меня не получилось сразу установить нужную страницу в Chromium для автозагрузки, поэтому вносим ее вручную в настройках Chromium. У меня это ссылка на новую сцену, созданную специально для зеркала: http://192.168.1.145/popup/scenes/4.html.

Также возникла следующая проблема: страница открывается раньше, чем Majordomo полностью запускается, поэтому нужно либо сделать отложенный запуск Chromium, либо регулярно обновлять страницу. Я пошел по второму пути, тем более так будет удобнее производить манипуляции со сценой, особенно если нет отдельной клавиатуры для Raspberry (у меня ее нет, установил экранную клавиатуру через sudo apt-get install matchbox-keyboard). Для автообновления Chromium установил расширение Easy auto reload, его можно найти в маркете приложений. В расширении сразу выставьте необходимый период перезагрузки (удобно будет от 30 секунд до 2 минут). Это значение сохраняется, потом работает нормально.

Следующая проблема - курсор мыши, который выскакивает на сцене. В файл /etc/lightdm/lightdm.conf добавляем строчку

Код: Выделить всё

xserver-command = X -nocursor
. Мне также потребовался поворот экрана, в файле /boot/config.txt меняем значение display_rotate=1. Можно открывать через

Код: Выделить всё

sudo nano /boot/config.txt
Наконец, устанавливаем Chromium как автозагружаемое приложение, причем запускать его необходимо в kiosk mode (на полный экран), в режиме инкогнито (не выскакивают сообщения об ошибках), с отключенными инфобарами. Для этого создаем папку autostart в директории home/pi/.config, добавляем в нее файл autoChromium.desktop, открываем его (также можно через

Код: Выделить всё

sudo nano ~/.config/autostart/autoChromium.desktop
). Добавляем в него следующий код:

Код: Выделить всё

[Desktop Entry]
Type=Application
Exec=/usr/bin/chromium-browser --noerrdialogs --disable-session-crashed-bubble --disable-infobars --incognito --kiosk http://192.168.1.145/popup/scenes/4.html
Hidden=false
X-GNOME-Autostart-enabled=true
Name[en_US]=AutoChromium
Name=AutoChromium
Comment=Start Chromium when GNOME starts
Как я уже сказал, по идее он должен сразу запускать нужную страницу, но у меня этого не случилось. Перезагружаемся, должна открыться нужная сцена на полный экран, без всяких инфобаров и ошибок (но нужно подождать, пока страница автоматически перезагрузится).

Моя сцена выглядит следующим образом:
Дата, время, погода и пробки сверху
Изображение

Курсы валют и температура малинки снизу
Изображение

На всякий случай расскажу, как вставить эти данные на сцену. Все данные добавляются на сцену в виде элементов типа html. Время и дата берутся с помощью модуля Формат даты, код для вставки:

Код: Выделить всё

<div style="color:white; font-size:50px; margin: 28px; "> %ThisComputer.timeNow%</div>
<div style="color:white; font-size:22px;"> %ThisComputer.DayOfWeekTXT%, %ThisComputer.DayOfMonthNum% %ThisComputer.MonthTXTalt%</div>
 
Пробки - из модуля Пробки от Яндекс, код:

Код: Выделить всё

<div style="color:white; font-size:25px;"> Пробки: %yt_info.level% балла <br>
 %yt_info.val% </div> 
Погода из модуля OpenWeatherMap:

Код: Выделить всё

<div style="color:white; font-size:25px; padding:10px;">Сейчас: %ow_fact.temperature% &deg;C, %ow_fact.weather_type%, ветер %ow_day0.wind_speed% м/с</div><br/>
<div style="color:white; font-size:16px; padding:10px;">%ow_day0.date%  %ow_day0.temperature% &deg;C, %ow_day0.weather_type%, ветер %ow_day0.wind_speed% м/с <br/>
 %ow_day1.date%  %ow_day1.temperature% &deg;C, %ow_day1.weather_type%, ветер %ow_day1.wind_speed% м/с <br/>
 %ow_day2.date%  %ow_day2.temperature% &deg;C, %ow_day2.weather_type%, ветер %ow_day2.wind_speed% м/с <br/>
 %ow_day3.date%  %ow_day3.temperature% &deg;C, %ow_day3.weather_type%, ветер %ow_day3.wind_speed% м/с <br/>
%ow_day4.date%  %ow_day4.temperature% &deg;C, %ow_day4.weather_type%, ветер %ow_day4.wind_speed% м/с<br/>
%ow_day5.date%  %ow_day5.temperature% &deg;C, %ow_day5.weather_type%, ветер %ow_day5.wind_speed% м/с </div> 
Курсы валют из одноименного модуля:

Код: Выделить всё

<div style="color:white; font-size:25px; padding:10px;">1$ = %exchange_rate.dollarrur% ₽ <br>
 1€ = %exchange_rate.eurorur% ₽ </div> 
Температура процессора из дополнения Systeminfo:

Код: Выделить всё

<div style="color:white; font-size:25px; padding:10px;"> %Sysdata.8%°C </div> 
.

Ну и теперь то, как выглядит окончательная версия проекта (пока что никуда не повесил, лежит на полу, в отражении люстра):

Изображение

Только знакомлюсь с Majordomo, информатика на школьном уровне, собирал все по крупицам, поэтому и очень доволен тем, что у меня получилось. Жду пожеланий и исправлений. К примеру, хотелось бы в прогнозе погоды убрать дату, оставить только время, но не знаю, как это сделать. На все вопросы отвечу.
За это сообщение автора ilyasor поблагодарили (всего 16):
Denis_k (Вс мар 18, 2018 11:12 am) • skysilver (Вс мар 18, 2018 12:55 pm) • odinvolk (Вс мар 18, 2018 5:44 pm) • webms (Вс мар 18, 2018 9:11 pm) • TrDA (Пн мар 19, 2018 6:57 am) • iden (Пн мар 19, 2018 1:17 pm) • slgeo (Пн мар 19, 2018 10:08 pm) • Gelezako (Пн мар 19, 2018 10:44 pm) • Igor.P (Сб мар 24, 2018 11:25 am) • tarasfrompir1 (Вт апр 03, 2018 8:14 pm) и ещё 6
Рейтинг: 21.92%
ostap10
Сообщения: 1
Зарегистрирован: Вс фев 25, 2018 1:49 pm
Благодарил (а): 0
Поблагодарили: 0

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение ostap10 » Вс мар 18, 2018 9:42 am

Интересно получается
Alex77
Сообщения: 213
Зарегистрирован: Вс мар 05, 2017 2:18 pm
Благодарил (а): 21 раз
Поблагодарили: 5 раз

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение Alex77 » Вс мар 18, 2018 10:43 am

Здорово, давно видел как Майкрософт выкатила свой проект с зеркалом, интересно все таки какой экран для этого оптимальнее всего использовать.
Denis_k
Сообщения: 436
Зарегистрирован: Сб мар 19, 2016 7:24 pm
Благодарил (а): 210 раз
Поблагодарили: 19 раз

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение Denis_k » Вс мар 18, 2018 11:15 am

Почему то сразу вспомнил вот эту тему, с несколько другим подходом к вопросу.
Минус в вашей реализации будет в необходимости расположить сервер (ведь на малинке именно он?) непосредственно в месте установки зеркала.
MD на raspberry pi2
ilyasor
Сообщения: 17
Зарегистрирован: Чт ноя 30, 2017 7:19 am
Благодарил (а): 3 раза
Поблагодарили: 18 раз

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение ilyasor » Вс мар 18, 2018 1:02 pm

Denis_k писал(а):Почему то сразу вспомнил вот эту тему, с несколько другим подходом к вопросу.
Минус в вашей реализации будет в необходимости расположить сервер (ведь на малинке именно он?) непосредственно в месте установки зеркала.
Да нет, у меня сервер в одной комнате, зеркало будет в другой, необходимо только hdmi кинуть, у меня есть 10 метровый кабель для этого. Ну и теоретически можно какие-то альтернативы придумать по беспроводной передаче картинки, но мне не требуется.
Аватара пользователя
webms
Сообщения: 333
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 115 раз
Поблагодарили: 69 раз

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение webms » Вс мар 18, 2018 10:47 pm

Отличная идея!
Ждем новых фоток!)

У меня в ванне будет зеркало 2.5 метра на 3 метра. Естественно такого размера телевизор не буду брать, как вы думаете, можно воткнуть монитор например на 20", будит ли другого цвета эта область?
fandaymon
Сообщения: 564
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 24 раза
Поблагодарили: 243 раза

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение fandaymon » Пн мар 19, 2018 12:26 am

webms писал(а):Отличная идея!
Ждем новых фоток!)

У меня в ванне будет зеркало 2.5 метра на 3 метра. Естественно такого размера телевизор не буду брать, как вы думаете, можно воткнуть монитор например на 20", будит ли другого цвета эта область?
Так собственно почти все кто делает эти зеркала берут для них старый монитор. Если он IPS, то практически не видно, что экран меньше зеркала
Но такое большое полупрозрачное зеркало в копеечку влетит. Там только пытаться на стекло наклеить отражающую пленку для окон и надеяться что отражение не будет сильно искажаться
Аватара пользователя
Gelezako
Сообщения: 918
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 200 раз
Поблагодарили: 86 раз
Контактная информация:

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение Gelezako » Вт мар 20, 2018 11:06 am

кто какие плёнки пробовал?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
webms
Сообщения: 333
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 115 раз
Поблагодарили: 69 раз

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение webms » Вт мар 20, 2018 11:14 am

я все таки склоняюсь больше что нужно зеркало, пленка фигня
Аватара пользователя
Gelezako
Сообщения: 918
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 200 раз
Поблагодарили: 86 раз
Контактная информация:

Re: "Умное" зеркало на Raspberry Pi3 и Majordomo.

Сообщение Gelezako » Вт мар 20, 2018 12:44 pm

webms писал(а):я все таки склоняюсь больше что нужно зеркало, пленка фигня
а какое зеркало, с какими характеристиками пропускной способности?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Ответить