Умное зеркало Magic Mirror своими руками

Опубликовано: 05.09.2018

видео Умное зеркало Magic Mirror своими руками

Смарт зеркало Smartsy - умное зеркало (Smart Mirror) для дома, зеркало с Wi-Fi и Bluetoothe

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



Материалы, которые вам понадобятся

Raspberry Pi (я использовал версию A+ для моего зеркало, чтобы быть уверенным, что все будет работать);

Raspberry Pi

SD-карта с linux (я использовал операционную систему raspbian jessie ); LCD-дисплей с входом HDMI (я использовал старый монитор с адаптером HDMI-VGA); Wi-Fi адаптер.


Бюджетный умный дом. Умное зеркало

Установка и настройка

Перед установкой всех компонентов нужно запустить:

sudo apt-get install php5 midori unclutter

это все необходимые материалы, основанные на репозитории, которые нам потребуются.

Я пропущу момент записи операционной системы Raspbian на SD-карту, просто пойдите в Google и поищите там, это элементарно. После того, как вы запустите pi с системой jessie, загрузится графический интерфейс. Нажмите меню и зайдите в настройку конфигурации Raspbian в разделе настроек. Установите файловую систему и параметры локализации для корректного отображения времени. Настройки загрузки менять не обязательно, так как мы хотим, чтобы графический интерфейс загружался автоматически.


04 малый - Моё зеркало умнее твоего или как сделать умное зеркало

Перезагрузитесь, чтобы сохранить настройки и проверьте, что вы подключаетесь к вашей беспроводной Wi-Fi сети. Далее Raspbian будет автоматически подключаться каждый раз при включении, поэтому вам нужно будет сделать это только один раз.

Чтобы заставить пользовательский интерфейс работать, вам нужно установить несколько вещей. Откройте терминал и запустите обновление, чтобы получить последние обновления в вашей системе:

sudo apt-get update sudo apt-get upgrade

Мы собираемся установить веб-сервер и php. Если вы просто установите php5, тогда он также установит apache2 и все, что нужно для его запуска.

sudo apt-get install php5

Теперь нам нужно получить интерфейс волшебного зеркала, который является веб-сайтом на php. Создатель поддерживает репозиторий git, в котором собрано все необходимое. Перейдите в каталог apache и клонируйте git repo (на самом деле это не так страшно).

cd /var/www/html sudo git clone https://github.com/MichMich/MagicMirror

Git создал папку MagicMirror и скопировал все файлы из репозитория в нее. Я не изменял никаких прав, поэтому любые изменения, которые вы вносите, должны будут использовать sudo или Вам нужно будет изменить разрешения для папок и файлов.

С этого момента ваше волшебное зеркало уже работает! Но еще не на русском языке, и оно не появляется, когда вы включаете Raspbian. Также вы можете использовать браузер на любом компьютере в своей сети, чтобы посмотреть как сейчас выглядит Ваше «умное зеркало». Для этого нужно узнать ip адрес вашей Raspbian с помощью команды ifconfig и запустить в браузере: http: // <Raspbian IP> / MagicMirror /.

Настройки config.js

sudo nano /var/www/html/MagicMirror/config.js

Затем мы должны изменить остальные настройки config.js.

Здесь вам нужно будет немного поработать, вам нужно найти и изменить 3 вещи:

язык (например, русский — ru); ключ API для показа карты погоды; RSS-канал (если вы хотите, чтобы зеркало показывало новости); ваша личная календарная ссылка из gcal или другого приложения для веб-календаря.

Приложение календарь может читать любой календарь iCal, который используется в Интернете. Если вы используете календарь Google, вы можете получить ссылку на него, нажав на маленькую стрелку внизу справа от имени вашего календаря и выбрав «Настройки календаря». Скопируйте ссылку на свой календарь и с помощью nano отредактируйте js-файл. Если вы используете ссылку общего календаря, он просто покажет «Занят» для каждого события, но это не совсем то что нужно.

Погода api бесплатна. зайдите на  страницу регистрации API  и зарегистрируйтесь! После этого вы можете получить свой ключ API.

cd /var/www/html/MagicMirror/js

Я использую полный путь, что бы вы не потерялись.

Вот что вам нужно будет изменить, я просто изолирую строки. Это не большой файл, поэтому их будет не сложно найти.

var lang = 'nl';

к var lang = ‘ru’;

'APPID':'YOUR_FREE_OPENWEATHER_API_KEY'

Замените YOUR_FREE_OPENWEATHER_API_KEY на карту открытой погоды api key

'q':'Baarn,Netherlands',

в

'q':'<city>,<state>',

изменение

var feed = 'http://feeds.nos.nl/nosjournaal?format=rss';

в

var feed = '<rss feed of your choice>';

Например, я подключил новости Ars Technica

Если вы редактируете комплименты, просто смотрите синтаксис. Если вы добавите комплимент, убедитесь, что нет запятой только в последнем в разделе.

var afternoon = [ 'Привет, красавица!', <--ends with comma 'Хорошо выглядишь!', <--ends with comma 'Ты сегодня супер!' <--last item, no comma!! ];

Если Вам не хваатет комплементов от живых людей, или нужно убрать из жизни весь негатив, Вам 100% поможет это зеркало. Проверьте, чтобы код не содержал никаких «»», в противном случае — функция перестанет работать.

Используйте комбинацию CTRL+O для сохранения и CTRL+X, чтобы выйти из nano и протестировать в браузере. С любого компьютера в сети вы можете перейти по адресу http: // <IP of pi> /MagicMirror/index.php и увидеть своими глазами, как все работает, или на самом pi открыть браузер и перейти к http: // localhost / MagicMirror / index.php

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

Файл, который нам нужно отредактировать для этого, — это файл автозапуска диспетчера дисплея. Raspbian использует LXDE для своего графического интерфейса, но я собираюсь использовать midori для веб-браузера. Мидори довольно быстра, поэтому я использую ее вместо установки хрома или firefox, или какой-то другой глупости. Вы можете использовать любой браузер, который хотите, но вам нужно будет узнать, как самому сделать его в полноэкранном режиме. Что касается midori:

sudo apt-get install midori

Затем мы редактируем файл автозапуска для пользователя. В большинстве других инструкций вы редактируете файл в каталоге / etc, но это не сработает, потому что raspbian регистрируется пользователем. Когда он регистрирует пользователя в config в / etc, он переопределяется конфигурацией в домашнем каталоге (очень подло ???? ). Файл находится здесь: /home/pi/.config/lxsession/LXDE-pi/autostart

Итак, идем

nano /home/pi/.config/lxsession/LXDE-pi/autostart

Закомментируйте (поставьте в начале # ) строки, которые уже находятся в файле, и добавьте эти 4 строки.

@xset s off @xset -dpms @xset s noblank @midori -e Fullscreen -a http://localhost/MagicMirror/index.php

Они нужны, чтобы отключит скринсейвер и запустит волшебное зеркало при загрузке и пропустит загрузку графического интерфейса LXDE.

Пассивный инфракрасный датчик движения

Это простой и недорогой компонент, который отвечает за включение и выключение монитора.

Обнаружение движения

Настроим датчик движения для выключения монитора после того, как движение не было обнаружено в течение 60 секунд.

Сохраните этот файл как pir.py

#!/usr/bin/env python import sys import time import RPi.GPIO as io import subprocess io . setmode ( io . BCM ) SHUTOFF_DELAY = 60 # seconds PIR_PIN = 25 # 22 on the board LED_PIN = 16 def main (): io . setup ( PIR_PIN , io . IN ) io . setup ( LED_PIN , io . OUT ) turned_off = False last_motion_time = time . time () while True : if io . input ( PIR_PIN ): last_motion_time = time . time () io . output ( LED_PIN , io . LOW ) print "." , sys . stdout . flush () if turned_off : turned_off = False turn_on () else : if not turned_off and time . time () > ( last_motion_time + SHUTOFF_DELAY ): turned_off = True turn_off () if not turned_off and time . time () > ( last_motion_time + 1 ): io . output ( LED_PIN , io . HIGH ) time . sleep ( . 1 ) def turn_on (): subprocess . call ( "sh /home/pi/photoframe/monitor_on.sh" , shell = True ) def turn_off (): subprocess . call ( "sh /home/pi/photoframe/monitor_off.sh" , shell = True ) if __name__ == '__main__' : try : main () except KeyboardInterrupt : io . cleanup ()

Включение и выключение монитора

Существует 2 способа включения и выключения монитора. Используйте команду tvservice для выключения порта монитора.

[email protected] ~/photoframe $ chmod 0744 monitor_off.sh [email protected] ~/photoframe $ cat monitor_off.sh tvservice -o [email protected] ~/photoframe $ chmod 0744 monitor_on.sh [email protected] ~/photoframe $ cat monitor_on.sh tvservice -c "PAL 4:3" && fbset -depth 8 && fbset -depth 16

Этот метод фактически отключает порт, который отлично работает, за исключением случаев, когда вы подключены к монитору HDMI и отключается, когда порт выключен. Когда вы идете в комнату, порт снова включается, но монитор выключен, поэтому он не возвращается обратно. В этом случае просто переключите виртуальные терминалы, чтобы отключить экран, используя команду chvt .

[email protected] ~/photoframe $ chmod 0744 monitor_off.sh [email protected] ~/photoframe $ cat monitor_off.sh chvt 2 [email protected] ~/photoframe $ chmod 0744 monitor_on.sh [email protected] ~/photoframe $ cat monitor_on.sh chvt 7

Чтобы убрать курсор, установите unclutter

sudo apt-get install unclutter

Мне не нужно было это делать, но вы можете использовать монитор или телевизор с другим соотношением сторон, не 3: 4, и хотите, чтобы он был высоким. Эти инструкции предназначены для raspbian, поэтому они могут немного отличаться от других особенностей linux. Нам нужно отредактировать файл config.txt, который использует raspbian во время загрузки, а параметр отсутствует в файле, поэтому нам нужно его добавить.

sudo nano /boot/config.txt

В нижней части файла добавьте:

DISPLAY_ROTATE=X

X — это то, как вы хотите повернуть его, используйте этот список, чтобы получить номер:

0 = нет вращения; 1 = поворот на 90 градусов по часовой стрелке; 2 = вращение на 180 градусов по часовой стрелке; 3 = вращение на 270 градусов по часовой стрелке.

Теперь пойдите, постройте свое волшебное зеркало.

корпус для умного зеркала

установка электроники умного зеркала

rss