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
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Мы обзавелись командой для извлечения текущей температуры, но ее нужно показать в интерфейсе пользователя. Для этого создайте новый датчик, связываемый с командой. Нажмите New sensor [Новый датчик], задайте ему имя Current temperature и выберите команду, которую нужно с ним связать. В качестве типа команды выберите Custom [Пользовательская]. Нажмите Submit, и после этого датчик появится в левой колонке.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Теперь перейдите в дизайнер интерфейсов и добавьте метку со статичным текстом (например, Температура в г. Бат (°C)) и еще одну метку, которую вы свяжете с датчиком Current temperature. Для этого щелкните на Sensor [Датчик] и выберите подходящий датчик. Наконец, сохраните конфигурацию нового контроллера и синхронизируйте ее с контроллером OpenRemote. Теперь на смартфоне появится текущая температура.
OpenRemote легко интегрируется со многими другими устройствами и программами – загляните в документацию, чтобы узнать об этом подробнее. Например, с помощью панели OpenRemote можно управлять медиа-проигрывателем XBMC на некоторых телевизорах Samsung; OpenRemote можно использовать с системами сигнализации избирательного цифрового вызова, инфракрасными приемниками... список можно продолжить.
OpenRemote все еще находится в разработке и не является готовым и быстрым решением, однако есть прекрасное сообщество экспериментаторов, которые добавляют поддержку новых устройств, и когда вы будете читать эту статью, у вас под рукой появится еще больше новых возможностей превратить свое жилище в «умный дом». |