LXF165-166:Автоматизация: OpenRemote
|
|
|
Автоматизация: Управляйте домашними устройствами удаленно со смартфона
Содержание |
OpenRemote: Контроль дома
Коэну Вервлоэсему не нравится, когда в его доме распоряжается «черный ящик», и для своего последнего проекта автоматизации дома он прибегнул к OpenRemote.
Большинство решений по автоматизации дома проприетарны. Вам придется заплатить за кучу устройств и программ, тесно переплетенных друг с другом и поддерживающих только заданный набор периферийных устройств. Разумеется, нам в Linux Format этот подход не нравится; но в OpenRemote мы нашли средство автоматизации, соответствуюшее нашим потребностям. Контроллер автоматизации с открытым исходным кодом написан на Java, поддерживает несколько протоколов автоматизации, и его можно установить в Linux, Windows или OS X. Кроме того, можно разработать собственные интерфейсы управления, доступные через web-интерфейс и приложение для Android или iPhone. Поэтому с подходящим оборудованием автоматизации потребуется совсем немного времени для того, чтобы вы смогли включать и отключать устройства, пробуждать и выключать компьютеры и выполнять другие действия несколькими щелчками на своем смартфоне.
Установка
Чтобы воспользоваться OpenRemote, установите на компьютер программу контроллера. Она написана на Java, так что сперва придется установить Java JRE. Мы установили контроллер на Raspberry Pi с Raspbian Wheezy (см. врезку «OpenRemote на Raspberry Pi»), но поддерживаются любые другие дистрибутивы Linux и даже некоторые устройства NAS на базе Linux, такие как Synology NAS, Netgear ReadyNAS или QNAP NAS. Инструкции по установке на эти устройства можно найти в документации на www.openremote.org. Контроллер OpenRemote, разумеется, должен работать постоянно, поэтому для него стоит выбрать экономичное и желательно компактное устройство, например, NAS или Raspberry Pi, которое можно спрятать в подвале.
Загрузите ZIP-файл с OpenRemote 2.0 и распакуйте его. Затем сделайте скрипт openremote.sh исполняемым и запустите его:
$ unzip OpenRemote-Controller-2.0.0.zip
$ cd OpenRemote-Controller-2.0.0/bin
$ chmod +x openremote.sh
$ ./openremote.sh run
На экране появится множество строк вывода; их придется проанализировать, если появятся ошибки. Если все прошло хорошо, контроллер OpenRemote теперь будет слушать команды.
Добавляем интерфейс
Теперь определим поведение и интерфейс для контроллера OpenRemote. Для этого нужно создать учетную запись в OpenRemote Designer (designer.openremote.org), дизайнере интерфейсов. Начнем с простого примера: создадим кнопку для пробуждения настольного компьютера с помощью Wake-on-LAN [технология, позволяющая удаленно включить компьютер посредством отправки по сети специального пакета, – прим. пер.]. После ввода логина и пароля вы увидите Building Modeler [Конструктор], в котором сможете настроить действия контроллера.
Щелкните на Device > New > New Device [Устройство > Создать > Новое устройство] чтобы добавить новое устройство контроллера, укажите его имя (например, Raspberry Pi, если контроллер работает на нем) и нажмите Next [Далее]. Затем нажмите Add command [Добавить команду], чтобы добавить новую команду, которая будет выполняться контроллером. Задайте ей имя (например, Wake PC – «разбудить компьютер») и выберите протокол; в нашем примере это Wake-On-Lan. Как вы уже видите в выпадающем меню, OpenRemote поддерживает приличное количество протоколов. В нижней части окна введите MAC-адрес настольного компьютера (который можно найти в выводе команды ifconfig после HWaddr) и широковещательный IP-адрес сети (который можно найти там же после Bcast), например, 192.168.0.255. Затем нажмите на Submit [Отправить] и на Finish [Конец]. В левой колонке должно появиться устройство с одной командой.
Итак, команда для пробуждения компьютера определена, но мы пока не определили, как ею управлять. Для этого щелкните по иконке UI Designer [Дизайнер интерфейса] слева вверху (это вторая иконка слева) и создайте новую панель, выбрав New > New Panel [Создать > Новая панель]. Задайте ее имя и тип (например, Android) и нажмите Submit [Отправить]. В окне появится виртуальный экран Android. Перетащите виджет Button [Кнопка] с правой части экрана и зайдите в свойства кнопки справа; нажмите Select [Выбрать] справа от Command [Команда]. Выберите команду Wake PC, которую мы определили ранее, и нажмите OK. Также нужно изменить имя кнопки по умолчанию (“Button”) на нечто более информативное. Теперь к кнопке привязана команда, поэтому можно нажать Save [Сохранить] в верхней части интерфейса.
Разбудите свой компьютер
Раз контроллер готов, у нас должна появиться возможность воспользоваться интерфейсом. Просто откройте в браузере адрес http://IPADDRESS:8080/controller/, заменив IPADDRESS на IP-адрес компьютера. Введите имя пользователя и пароль для OpenRemote Designer и нажмите на кнопку Sync with Online Designer [Синхронизироваться c онлайн-дизайнером]. После появления сообщения “Sync Complete [Синхронизация завершена]” откройте адрес http://IPADDRESS:8080/webconsole и нажмите на кнопку Search [Поиск], после чего консоль должна автоматически найти контроллер.
Нажмите на стрелку справа от адреса контроллера, введите имя своей панели в поле Default Panel Name [Имя панели по умолчанию] и нажмите Save [Сохранить]. Если теперь щелкнуть по адресу контроллера в списке, должна открыться панель с кнопкой, которую мы добавили на виртуальный экран смартфона. Нажатие на нее заставит ваш компьютер проснуться.
Если это не работает, возможно, проблема в wake-on-LAN, а не в OpenRemote. Прежде всего проверьте, правильно ли ввели MAC-адрес и широковещательный IP-адрес. Также, возможно, придется включить Wake-on-LAN в BIOS, или даже обновить BIOS. Для проверки функции воспользуйтесь командой wakeonlan, запустив ее с вашим MAC-адресом, чтобы проверить это вне OpenRemote.
Приложение для Android
При помощи web-консоли можно управлять контроллером OpenRemote с любого устройства, на котором есть браузер; но кроме этого, есть и отдельные приложения для Android и iOS. Для Android установите приложение OpenRemote в Google Play. При запуске приложения оно автоматически обнаружит контроллер, если телефон с Android подключен к той же сети, что и контроллер, при условии, что не была отключена возможность автоматического обнаружения [Auto Discovery]. Внизу выберите панель, которая вам нужна. В этой статье мы определили всего одну панель, но их может быть и несколько для разных интерфейсов одного и того же контроллера – например, один для телефона с Android и один для iPad. Наконец, нажмите Done [Готово], после чего в приложении откроется панель, созданная в OpenRemote Designer. При следующем запуске приложения она откроется сразу. Теперь вы сможете разбудить свой компьютер со смартфона через программу OpenRemote.
Будить-то компьютер с телефона мы научились, но как его выключать? Это тоже можно сделать в OpenRemote: нужно задать команду, которая выполняет скрипт оболочки.
Создадим на контроллере скрипт shutdown_computer.sh, который выключает компьютер. В качестве аргумента ему нужно передать IP-адрес компьютера:
#!/bin/bash
ssh -t openremote@$1 sudo shutdown -h now
Параметр -t необходим потому, что sudo требуется терминал. Затем сделаем скрипт исполняемым:
$ sudo chmod +x /home/pi/shutdown_computer.sh
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Теперь на компьютере, который нужно выключать удаленно, выполните команду sudo visudo и добавьте следующие строки:
Cmnd_Alias POWER = /sbin/reboot,/sbin/shutdown
openremote ALL=(ALL) NOPASSWD: POWER
Это гарантирует разрешение пользователю openremote перезагружать и выключать компьютер без ввода пароля. Конечно, этого пользователя еще нужно создать, таким образом:
$ sudo adduser openremote
Теперь, так как мы хотим входить в систему от имени пользователя openremote без ввода пароля (так как наш скрипт нужно запускать вручную), придется сгенерировать пару ключей без ключевой фразы на контроллере и скопировать публичный ключ SSH пользователя с контроллера на наш компьютер. Для этого скомандуйте
$ ssh-keygen
$ ssh-copy-id -i ~/.ssh/id_rsa.pub openremote@PC
Для начала попробуем запустить скрипт с нужным IP-адресом:
$ ./shutdown_computer.sh IPADDRESS
Если это работает, создайте в Open Remote Designer новую команду, выполняющую этот скрипт. Задайте ее имя, например, “Shutdown PC”, выберите в качестве протокола Shell execution protocol и введите полный путь до скрипта, а также IP-адрес как аргумент. На данный момент этот протокол поддерживает только один аргумент скрипта. Нажмите Submit.
Пока мы удаленно управляли только компьютером, но, надеюсь, у вас дома есть не одни компьютеры... при желании управлять другими устройствами можно воспользоваться протоколом автоматизации дома, например, X10, Z-Wave или KNX; все они прямо или косвенно поддерживаются OpenRemote.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Мы покажем, как опосредованно управлять переключателями в X10 из OpenRemote. Таким образом можно автоматически включать и отключать кофеварку или свет в доме. Единственное, что для этого нужно – контроллер X10 и модули X10. Контроллер X10 отправляет сигналы по линиям питания, а модуль X10 получает эти сигналы и переключает устройство, подсоединенное к модулю. Подключив контроллер X10 к нашему компьютеру с контроллером OpenRemote, мы можем управлять нашими устройствами X10 централизованно из того же интерфейса OpenRemote, где находятся другие команды.
Компиляция и использование Mochad
У нас есть контроллер X10 Marmitek XM15Pro, который поддерживается Mochad (Multiple Online Controllers for Home Automation Daemon – демон нескольких онлайн-контроллеров для автоматизации дома). Его нет в репозиториях Debian, поэтому вам придется загрузить и скомпилировать его самим. К счастью, сделать это нетрудно:
$ sudo apt-get install libusb-1.0-0-dev
$ tar xvzf mochad-*.tar.gz
$ cd mochad-*
$ ./configure
$ make
$ sudo make install
Пользоваться Mochad довольно легко. При подключении контроллера X10 к компьютеру через USB Mochad автоматически запускается как демон. В файле /var/log/messages должны появиться следующие записи:
Oct 21 15:11:45 raspberrypi mochad[4962]: starting
Oct 21 15:11:45 raspberrypi mochad[4963]: Found CM15A
Oct 21 15:11:45 raspberrypi mochad[4963]: In endpoint 0x81, Out endpoint 0x02
После запуска Mochad можно управлять демоном командой netcat через порт 1099:
$ nc localhost 1099
Теперь можно вводить команды X10, например, st для просмотра состояния и pl b2 on для включения модуля с кодом X10 B2 on. У каждого модуля X10 должен быть уникальный код дома [House Code] от A до P и код модуля [Unit Code] от 1 до 16. Mochad также распознает некоторые общие команды, например, all_lights_off [выключить свет везде].
Если это заработало, привяжите команды Mochad к OpenRemote. Откройте дизайнер OpenRemote и добавьте новую команду, например, Coffee maker on [Включить кофеварку]. Задайте TCP/IP (не X10!) в качестве протокола, localhost в качестве IP-адреса и 1099 в качестве порта. Введите нужную команду Mochad, например, pl b2 on, в поле Command. Нажмите Submit. Теперь добавьте виджет Button в дизайнере интерфейса и привяжите созданную команду к виджету. Нажмите Save и скопируйте конфигурацию нового контроллера в контроллер OpenRemote. Если все получится, вы сможете включить кофеварку со смартфона с Android.
Информацию о поддержке OpenRemote других устройств X10 можно найти в документации. Некоторые устройства поддерживаются по умолчанию; в этом случае в качестве протокола для команд нужно выбирать X10. Однако протокол TCP/IP является более гибким, поскольку его можно использовать также и с любыми устройствами или программами, которыми можно управлять в netcat.
Последний метод, который мы продемонстрируем – получение данных с сайта командой HTTP и создание отображающего их датчика на панели OpenRemote. Для примера воспользуемся сервисом Weather2 (www.myweather2.com). Создайте бесплатную учетную запись на этом сайте и обратите внимание на уникальный код доступа в разделе Developer Zone [Разработчикам]. Теперь, если вы хотите узнать погоду в Великобритании в местности с почтовым индексом BA1 (это штаб-квартира LXF), откройте следующий адрес: www.myweather2.com/developer/forecast.ashx?uac=UNIQUEACCESSCODE&output=xml&query=BA1. Он вернет XML-файл с прогнозом погоды на два дня.
Если вы хотите воспользоваться этим прогнозом погоды в OpenRemote, создайте новую команду, задайте ее имя (например, “Current temperature [Текущая температура]”) и выберите HTTP в качестве протокола. В поле URL введите URL прогноза.
Так как web-сервер возвращает XML-файл, здесь можно ввести выражение XPath для добычи нужной информации. Например, выражение для извлечения текущей температуры будет таким: //curren_weather/temp. Затем выберите интервал опроса, например, «30m» для опроса раз в полчаса, и нажмите Submit.
Создаем датчик
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Мы обзавелись командой для извлечения текущей температуры, но ее нужно показать в интерфейсе пользователя. Для этого создайте новый датчик, связываемый с командой. Нажмите New sensor [Новый датчик], задайте ему имя Current temperature и выберите команду, которую нужно с ним связать. В качестве типа команды выберите Custom [Пользовательская]. Нажмите Submit, и после этого датчик появится в левой колонке.
Теперь перейдите в дизайнер интерфейсов и добавьте метку со статичным текстом (например, Температура в г. Бат (°C)) и еще одну метку, которую вы свяжете с датчиком Current temperature. Для этого щелкните на Sensor [Датчик] и выберите подходящий датчик. Наконец, сохраните конфигурацию нового контроллера и синхронизируйте ее с контроллером OpenRemote. Теперь на смартфоне появится текущая температура.
OpenRemote легко интегрируется со многими другими устройствами и программами – загляните в документацию, чтобы узнать об этом подробнее. Например, с помощью панели OpenRemote можно управлять медиа-проигрывателем XBMC на некоторых телевизорах Samsung; OpenRemote можно использовать с системами сигнализации избирательного цифрового вызова, инфракрасными приемниками... список можно продолжить.
OpenRemote все еще находится в разработке и не является готовым и быстрым решением, однако есть прекрасное сообщество экспериментаторов, которые добавляют поддержку новых устройств, и когда вы будете читать эту статью, у вас под рукой появится еще больше новых возможностей превратить свое жилище в «умный дом». |