Страница 1 из 9

Открытая система MajorDoMo

Добавлено: 03 окт 2011, 18:14
sergejey
Здравствуйте,

Вдохновившись опытом других, я решил попробовать свои силы на данном порище и заняться изобретением собственного велосипеда :) Не то чтобы я был очень недоволен имеющимися системами управления автоматикой, а, скорее, было интересно сделать что-то своё. У меня собралось некоторе количество идей, а потом и некоторое количество кода, который я обкатываю на своём загородном доме. А буквально недавно решил, что можно поделиться наработками со всем миром, чтобы ошибок поисправлять да и идей новых нахватать. Придумал название -- MajorDoMo (Major Domestic Module) и начал выкладывать информацию о системе.

Итак, в кратце о системе MajorDoMo:

На данный момент, это программная платформа управления и программирования логики Умного Дома. Вся разработка в открытом коде. Работает под управлением открытых протоколов и приложений: Apache/MySQL/PHP. Конкретно у меня "крутится", под Windows XP, однако легко может быть адаптирована под работу в Linux-среде. Под Windows есть обычный установочнй пакет и система разворачивается в считанные минуты и сразу готова к использованию даже без привязки к какому-то железу -- там встроено пару приложени (учёт продуктов, слежение за онлайн-хостами и т.п.). Привязка к железу (или софту) реализуется через создание событий для виртуальных объектов внутри системы -- для этого используется либо командная строка либо простой API по http-протоколу. Последним способом у меня сейчас организована связь с Arduino контроллером, который передаёт напрямую через http значения с подключенных к нему датчиков. Через командную строку, к примеру, реализован функционал обнаружения определённых людей в радиусе действия по bluetooth-меткам их телефонов.

Более подробно система описана на сайте smartliving.ru. Там же можно скачать установочный пакет (пока только под Windows). Сайт сыроват и много чего не описано, но это буду со временем восполнять.

Для вопросов/обсуждения предлагаю использовать эту ветку замечательного форума :)

Re: Открытая система MajorDoMo

Добавлено: 03 окт 2011, 21:19
magic
Очень хочется пощупать эту систему под линуксами. Скачаю пока под винду, посмотрю что в архиве!

Re: Открытая система MajorDoMo

Добавлено: 04 окт 2011, 11:28
Andrey_B
Сергей, опишите пожалуйста подробнее как у вас работает обнаружение людей по bluetooth-меткам телефонов.

Re: Открытая система MajorDoMo

Добавлено: 04 окт 2011, 14:33
Boris
magic писал(а):Очень хочется пощупать эту систему под линуксами. Скачаю пока под винду, посмотрю что в архиве!
Поддерживаю, попробовал перенести на Linux, получил
Not Found
The requested URL /getnextevent.html was not found on this server.

Re: Открытая система MajorDoMo

Добавлено: 04 окт 2011, 20:23
sergejey
magic писал(а):Очень хочется пощупать эту систему под линуксами. Скачаю пока под винду, посмотрю что в архиве!
Теоретически можно сделать дамп базы данных, взять содержимое htdocs и запустить как виртуальный хост. В ближайшее время попробую такую сборку сделать, запустить и описать моменты, где нужно что подправить под Linux-ом.
Not Found
The requested URL /getnextevent.html was not found on this server.
Эта ошибка может быть либо из-за того что htdocs не является отдельным веб-хостом, а установлен в папку (сорри, пока там все пути идут от "корня")
Либо, если не загружен .htaccess

Re: Открытая система MajorDoMo

Добавлено: 04 окт 2011, 20:40
sergejey
Andrey_B писал(а):Сергей, опишите пожалуйста подробнее как у вас работает обнаружение людей по bluetooth-меткам телефонов.
Принцип простой -- при наличии на сервере bluetooth-стэка можно запустить сканер, который периодически сканирует эфир на наличие bt-устройств, собирая их метки. Такой сканер встроен в сборку под Windows, но под Linux можно довольно просто собрать что-то аналогичное -- заменив скрипт сканирования эфира (они есть в инете). Метками являются mac-адреса, они по идее должны быть уникальными. Не поручусь, что на самом деле так, но пока с проблемой повтора мак-адреса не сталкивался. Так вот, задача сканера генерировать событие в системе при обнаружении нового bt-устройства, либо при исчезновении его из радиуса действия. База устройств содержит привязку к пользователям -- если какое-то из устройств пользователя обнаружено, то он где-то неподалёку.

Надёжность этого способа не велика -- из-за ограниченности радиуса и всяких помех устройства могут выпадать и возвращаться сами по себе, даже если пользователь где-то дома. Но добавив несколько условий, можно использовать в полезных сценариях. Например, система определяет, что я вернулся домой, если событие обнаружения моего телефона произошло не ранее 3-х часов с момента его "исчезновения". Сценариев можно придумать много, на самом деле.

Случаются нестыковки с железом телефона -- например iPhone не транслирует свой мак-адрес в эфир, если bluetooth-соединение не активно (хоть и включено). Транслирует только если подключить гарнитуру. Хотя с телефонами Nokia никаких проблем -- всегда видна в эфире :)

---

Кроме вышеописанного есть еще варианты обнаружения пользователей:
а) По пингам их через WiFi (так к примеру у меня iPhone обнаруживается и Android-телефон)
б) Через GPS (об этом чуть позже расскажу -- тут вообще интересно, можно следить за пользователем и обнаруживать его вход/выход в любую локацию и соответственно реагировать. типа услышать по каналу оповещения: "Сергей едет домой, через 5 минут будет проезжать магазин. Может что-то купить по дороге?")

Re: Открытая система MajorDoMo

Добавлено: 04 окт 2011, 22:18
Andrey_B
Сергей, по bluetooth понятно. Один только вопрос - какова реальная дальность обнаружения в условиях дома? И зависит ли дальность от конкретных моделей.
По поводу GPS. Можно фиксировать положение объекта. Это факт. Это можно использовать. А вот в доме от GPS никакого толка нет. Из 3-х моих устройств с GPS ни одно внутри дома не ловит спутники.

Re: Открытая система MajorDoMo

Добавлено: 05 окт 2011, 14:35
sergejey
Andrey_B писал(а):Сергей, по bluetooth понятно. Один только вопрос - какова реальная дальность обнаружения в условиях дома? И зависит ли дальность от конкретных моделей.
У меня дом из бетонных блоков -- вроде бы не сильно мешает прохождению сигнала, однако для bluetooth и это проблема. Сервер у меня находится в топочной, сам "свисток" я на USB удлинителе поднял к окну и получается, что событие моего заезда во двор ловится хорошо (метров 15-20 от окна), а вот в доме проблемы -- уже через две стены (около 5 метров если по прямой) обнаруживается крайне нестабильно. Т.е. в условиях дома технология не надёжная -- хотя может быть это к лучшему, можно более точно определять где находится пользователь (в какой части дома или участка, если несколько таких точек организовать).

Про модели ничего сказать не могу -- эксперименты не ставил. Ещё думаю может быть можно встроенную в "свисток" антенну как-то проапгрэйдить, надо "курить" интернет :)
По поводу GPS. Можно фиксировать положение объекта. Это факт. Это можно использовать. А вот в доме от GPS никакого толка нет. Из 3-х моих устройств с GPS ни одно внутри дома не ловит спутники.
Дома да -- согласен. Но то, что дом "следит" за пользователем, может быть очень полезно. Пользуясь случаем, расскажу как это у меня работает.

Итак, имеем в наличии телефон на Android-е с включенным GPS. Имеем домашний сервер, к которому можно подключиться "из вне". На Андроид ставим бесплатное приложение Big Brother GPS, которое настраиваем на фоновую отправку координат на скрипт [url=http://]http://[/url]<адрес домашнего сервера>/gps.php (скрипт входит в пакет MajorDoMo, а приложение передаёт кроме координат еще уникальный ID устройства, заряд батареи и еще несколько параметров). После этого положение пользователя с заданной периодичностью (настраивается в Big Brother GPS) отправляется на домашний сервер.

Через админку MajorDoMo (модуль GPS Tracker) настраиваем привязку устройств к пользователю, добавляем локации (координаты + радиус вхождения), устанавливаем вызов скриптов при вхождении/выходе из локации.

К этому модулю ещё в планах доделать нормальную визуализацию с помощью Google Maps (текущее положение, дневной маршрут и т.п.)

Re: Открытая система MajorDoMo

Добавлено: 05 окт 2011, 17:14
Boris
MajarDomo получилось поднять на Linux CentOs 6

Re: Открытая система MajorDoMo

Добавлено: 06 окт 2011, 23:33
magic
Boris писал(а):MajarDomo получилось поднять на Linux CentOs 6
Расскажите как!

Re: Открытая система MajorDoMo

Добавлено: 07 окт 2011, 11:28
Boris
magic писал(а):
Boris писал(а):MajarDomo получилось поднять на Linux CentOs 6
Расскажите как!
1. Делаем експорт базы db_terminal и переносим на Linux.
2. Переносим C:\_majordomo\htdocs в /var/www/html
3. В файле httpd.conf на Linux находим тег <Directory "/var/www/html"> ниже находим AllowOverride None и меняем на AllowOverride All
4. В файле php.ini на Linux находим short_open_tag = Off и меняем на short_open_tag = On
5. Перегружаем httpd и заходим на MajorDoMo

Re: Открытая система MajorDoMo

Добавлено: 07 окт 2011, 22:13
sueno
В андроиде есть приложение locale оно может по возникновению разных событий делать разные действия к примеру при входу в зону wifi или при нахождении в какой то определенной соте, ну или по gps делать get запрос к серверу или выставлять статус в gtalk или слать письмо.

Таким образом можно оповестить систему что "Сергей едет домой.."

Re: Открытая система MajorDoMo

Добавлено: 11 окт 2011, 16:23
sergejey
sueno писал(а):В андроиде есть приложение locale оно может по возникновению разных событий делать разные действия к примеру при входу в зону wifi или при нахождении в какой то определенной соте, ну или по gps делать get запрос к серверу или выставлять статус в gtalk или слать письмо.
Таким образом можно оповестить систему что "Сергей едет домой.."
Да, можно и так. У меня просто клиентское приложение отправляет координаты, а домашний сервер уже решает как на них реагировать.

Re: Открытая система MajorDoMo

Добавлено: 13 окт 2011, 20:55
magic
Boris писал(а):
magic писал(а):
Boris писал(а):MajarDomo получилось поднять на Linux CentOs 6
Расскажите как!
1. Делаем експорт базы db_terminal и переносим на Linux.
2. Переносим C:\_majordomo\htdocs в /var/www/html
3. В файле httpd.conf на Linux находим тег <Directory "/var/www/html"> ниже находим AllowOverride None и меняем на AllowOverride All
4. В файле php.ini на Linux находим short_open_tag = Off и меняем на short_open_tag = On
5. Перегружаем httpd и заходим на MajorDoMo
Я извиняюсь, может быть у вас есть готовая "сборка" или архив под Линукс. Не имею винды дома и на работе - только Линукс.

Re: Открытая система MajorDoMo

Добавлено: 14 окт 2011, 10:38
Boris
Готовой сборки нет, думаю вам стоит обратится к разработчику. Информации, под какой лицензией распространяется MajarDomo, я не нашел.

Re: Открытая система MajorDoMo

Добавлено: 22 окт 2011, 13:35
sergejey
magic писал(а):Я извиняюсь, может быть у вас есть готовая "сборка" или архив под Линукс. Не имею винды дома и на работе - только Линукс.
Добрый день,

Сегодня обновил сборку под Windows и собрал набор файлов для установки под Linux:

http://smartliving.ru/Main/Download (краткая инструкция по установке Linux-пакета находится внутри в файле readme.txt)

Так же немного обновил документацию на сайте:

http://smartliving.ru/Main/ModuleCommands -- описание одного из основных модулей "Меню управления"
http://smartliving.ru/Main/ModuleWebvars -- описание нового модуля "Веб-переменные"

Re: Открытая система MajorDoMo

Добавлено: 23 окт 2011, 18:59
VicktorVR
Извините, я что так и не понял, система с 1-wire работает? Через какой адаптер USB, RS232? Что-то все заумно как-то... Я вот с объектно-ориентированным программированием так и не подружился(хотя жена пишет), мне для моих задач вполне хватало на ПК ТurboС, на МК - микроассемблера.

Можно подробно пояснить, как работать с системой? Вот допустим хочу я опрашивать n датчиков(температурных и всяких других) и в зависимости от результатов по определенному алгоритму включать/выключать k исполнителей, все по 1-wire. Какие-то сценарии надо создавать или как? Или скрипты писать на каком-нибудь перле?

Re: Открытая система MajorDoMo

Добавлено: 26 окт 2011, 16:24
sergejey
VicktorVR писал(а):Извините, я что так и не понял, система с 1-wire работает? Через какой адаптер USB, RS232? Что-то все заумно как-то... Я вот с объектно-ориентированным программированием так и не подружился(хотя жена пишет), мне для моих задач вполне хватало на ПК ТurboС, на МК - микроассемблера.

Можно подробно пояснить, как работать с системой? Вот допустим хочу я опрашивать n датчиков(температурных и всяких других) и в зависимости от результатов по определенному алгоритму включать/выключать k исполнителей, все по 1-wire. Какие-то сценарии надо создавать или как? Или скрипты писать на каком-нибудь перле?
Встроенной поддержки "железа" в системе пока нет вовсе. Т.е. это интерфейс управления и программирования логики -- мозг, но без конечностей :)

Хотя немного вру -- у меня к нему подключен контроллер arduino с датчиками, но сопряжение там без каких-то драйверов, а засчет того, что контроллер может напрямую отправлять http-запросы через сеть ethernet и поэтому он сам инициализирует события и изменение свойств объектов системы.

Поддержка стороннего железа будет появляться по мере того как оно будет появляться у меня либо у кого-то, кто на свой страх и риск стал пользоваться проектом. В первую очередь, кстати, я бы на самом деле хотел бы встроить поддержку 1-wire -- для этого нужен буквально один скрипт сопряжения с OWFS, который будет реагировать на изменение состояния сети и отправлять событие об этом в систему.

Re: Открытая система MajorDoMo

Добавлено: 17 ноя 2011, 16:07
sergejey
По-немногу занимаюсь описанием, фиксингом багов и прочими вещами...

Завёл новый раздел Сценарии http://smartliving.ru/Main/Scenarios

Буду там описывать различные варианты применения Умного Дома с деталями настройки системы.

Re: Открытая система MajorDoMo

Добавлено: 23 ноя 2011, 15:04
rial2001
А можно поинтересоваться по поводу скайп-бота?
насколько я понимаю возможно общения с сервером посредством отправки опр.команд на скайп???
И еще: никак не получается изменить сетевой адрес MajorDoMo...