megad.ru

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

megad.ru

Сообщение Andrey_B » 08 июл 2014, 19:19

Открываю новую тему, посвященную "сервису" megad.ru
Пока реализация этого сервиса находится в зачаточном состоянии, потому что мне неизвестно заранее, насколько эта функция будет интересна.

Основная идея заключается в том, чтобы облегчить не очень продвинутым пользователям вхождение в область домашней автоматизации на базе "Мегадевайсов".
Но также функция может быть полезна и в других случаях.

Итак.
MegaD-328 может работать как сам по себе (для этого у каждого входа есть сценарий по умолчанию), так и с сервером. На сервере пишется скрипт, который определяет алгоритм и логику работы. Написание скрипта - штука простая, когда знаешь за какую сторону брать клавиатуру, а если нет?
Но MegaD-328 может работать с удаленным сервером. В качестве такого удаленного сервера может выступать megad.ru

Хочу только заметить, что все описанное ниже справедливо для прошивки версии 3.19 и выше. В случае, если прошивка более старая, необходимо обновить до последней версии с обязательной очисткой EEPROM.
megadru1.jpg
megadru1.jpg (24.72 КБ) 33310 просмотров
Регистрация простая. Необходимо только указать емейл и пароль.
megadru2.jpg
megadru2.jpg (20.13 КБ) 33310 просмотров
Нажимаем кнопку "Добавить устройство" и вводим его наименование, а также получаем автоматический идентификатор (или Megad-ID).
megadru3.jpg
megadru3.jpg (27.39 КБ) 33310 просмотров
Заходим в настройки уже устройства.
1. Указываем в качестве сервера IP-адрес сайта megad.ru: 188.226.200.78
2. Указываем в качестве скрипта: md.php
3. Gateway прописываем естественно свой
4. Сохраняем
megadru4.jpg
megadru4.jpg (9.62 КБ) 33310 просмотров
Переходим в закладку Megad-ID
1. Прописываем сгенерированный на сайте Megad-ID
2. Ставим крыжик srv-loop
3. Сохраняем

Теперь в качестве сервера у нас указан megad.ru
Скрипт md.php будет обрабатывать все сообщения от устройств.
Чтобы понять какое из устройств сработало - для этого и нужен уникальный идентификатор, который ассоциируется с аккаунтом зарегистрированного пользователя.
megadru5.jpg
megadru5.jpg (73.86 КБ) 33310 просмотров
Теперь можно зайти в настройки устройства и задать наименование каждого порта, а для входов прописать сценарий. Пока сценарий - это копия того, что пишется в Action, но здесь в перспективе возможностей значительно больше.
megadru6.jpg
megadru6.jpg (19.79 КБ) 33310 просмотров
Все устройства отображаются вот так. Но если кликнуть на наименование устройства...
megadru7.jpg
megadru7.jpg (51.73 КБ) 33310 просмотров
Мы увидим состояние всех портов, а выходам можем управлять.

Сценарий, описанный пользователем для входов отрабатывается почти мгновенно. Почти нет разницы с тем, как если бы сервер стоял в локальной сети.
А вот управление выходами не моментальное. Дело в том, что сервер находится в Интернете, а значит не может напрямую связаться с устройством. Именно для этого предполагается опция srv-loop в настройках устройства. При включенной опции устройство раз в минуту обращается к серверу, сообщает ему состояние всех портов и получает от него команды. То есть максимальная задержка после включения порта на сайте megad.ru составляет не более минуты.

Еще раз. Зачем это надо.
- Чтобы облегчить новичкам вхождение в область домашней автоматизации.
- Код megad.ru в перспективе можно выложить, чтобы развернуть его уже в локальной сети и на его основе разрабатывать что-то свое (естественно при управлении выходами через Web задержки не будет)
- Чтобы в некоторых случаях при отсутствии дома Web-сервера с реальным IP-адресом, иметь возможность управлять чем-то на даче или дома. Ну, например, поливом. В этом случае моментальной реакции на включение/выключение выходов не требуется.
- Чтобы в некоторых случаях иметь доступ через Интернет, а не только по локальной сети, к информации о состоянии всех портов устройства (особенно входов), датчиков.

А что, если есть свой сервер, а хочется дублировать состояние входов на megad.ru, куда можно зайти в любой момент.
Для этого есть поле NetAction!
Достаточно для нужного поля прописать в NetAction: 188.226.200.78/md.php?pt=0
И все, теперь информация о сработанном входе будет также отправляться на megad.ru. Причем Megad-ID в URL указывать не нужно (только для прошивки 3.20beta1 и выше). Устройство само добавит этот параметр при вызове URL.

Все это рассуждения вслух. Специально не стал прорабатывать всю идеологию, поскольку не знаю, будет ли интерес со стороны пользователей и в какую вообще сторону лучше развивать этот сервис.
PS: Об ошибках просьба сообщать. Предполагается тестирование на пользователях, как самый надежный вариант. ;)

TigerCh
Сообщения: 27
Зарегистрирован: 07 апр 2014, 20:44

Re: megad.ru

Сообщение TigerCh » 10 июл 2014, 13:23

Круто, спасибо. Как только закончу с переездом и появится возможность таки заняться подключением полученной недавно Меги, обязательно воспользуюсь сервисом.

Отправлено с моего GT-N8000 через Tapatalk

cd1room
Сообщения: 44
Зарегистрирован: 21 авг 2014, 23:51

Re: megad.ru

Сообщение cd1room » 21 авг 2014, 23:54

Главный вопрос когда ?

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 26 авг 2014, 12:17

cd1room писал(а):Главный вопрос когда ?
В каком смысле "когда"? Оно вроде бы давно работает.

ROM
Сообщения: 63
Зарегистрирован: 15 май 2013, 12:44

Re: megad.ru

Сообщение ROM » 30 сен 2014, 12:03

плохо, что нет возможности настраивать сам порт.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 30 сен 2014, 12:17

Поясните пожалуйста, что вы имеете ввиду?

ROM
Сообщения: 63
Зарегистрирован: 15 май 2013, 12:44

Re: megad.ru

Сообщение ROM » 02 окт 2014, 17:21

Есть 14 портов, на сайте 0-6 -Входы, 6-13 - Выходы,
А у меня, например, все входы, или выходы...

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 02 окт 2014, 17:39

Теоретически настройку портов можно реализовать.

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: megad.ru

Сообщение GruNT » 04 окт 2014, 20:41

Можно попробовать создать некоторый аналог CMS для локальной сети...
Идея по идентификатору..
Если делать CMS то можно сделать следующим образом касательно добавления новых MegaD в систему.
MegaD по умолчанию задан предположим IP 196,168,0,14 - по умолчанию. Остальное пока неважно.
Включаем MegaD в сеть. Нажимаем в CMS сканировать..
CMS находит этот IP, добавляет связку ключ-значение (ID - новый IP) в БД и меняет ip на новый что в базе записан.
Соответственно какой-нибудь порядковый (ну 196,168,1,1 к примеру). В итоге получаем запись об устройстве и напрямую можем связаться с ним для дальнейшей настройки по сути не зная его реального IP.
Можно вообще избавить пользователя от необходимости использовать Web интерфейс контроллера.)))
Вопрос только в том а стоит ли это того?

zero
Сообщения: 57
Зарегистрирован: 28 фев 2013, 14:56

Re: megad.ru

Сообщение zero » 11 ноя 2014, 15:51

Идея с ID несколько не безопасна. Большое поле для брута идентификаторов. Нужна пара значений.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 11 ноя 2014, 16:42

Ну, во-первых, 5-и символьный ID, который включает в себя в том числе буквы в разном регистре, все-таки не так-то просто подобрать.
Во-вторых, если уж на то пошло, большее опасение может вызвать работа по открытому http, а не, скажем, по https. Хотя последний и megad-328, сами понимаете, не очень то совместимы.
В-третьих, на стороне megad.ru можно реализовать простую но эффективную систему защиту от подбора. Несколько неправильных ID и в "отлупочную" на пару часов.
В-четвертых, в настройки профиля можно добавить IP-адрес или IP-сеть, которым разрешено работать с конкретным идентификатором.

andvas
Сообщения: 177
Зарегистрирован: 07 ноя 2011, 23:04
Откуда: Россия, Самара
Контактная информация:

Re: megad.ru

Сообщение andvas » 27 ноя 2014, 21:43

Andrey_B подскажите, а температура (если подключен/ы датчики DHT) передается на megad.ru или только состояние входов передается?

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 15 мар 2015, 09:35

Добавлена возможность посмотреть график, отображающий историю значений по выбранному порту.
Для это нужно только кликнуть на номер порта.
megadru-graph.jpg
megadru-graph.jpg (54.03 КБ) 29084 просмотра
Думаю, пока данные будут храниться за сутки.
Используется обычный линейный график.
Однако по входам и выходам, возможно, лучше отображать не в виде графика, а в виде таблицы, где будет указано время изменения значения.

Nospheratus
Сообщения: 32
Зарегистрирован: 07 янв 2015, 16:38

Re: megad.ru

Сообщение Nospheratus » 31 мар 2015, 20:31

Добрый вечер!
Попробовал побаловаться облаком.
Нашел пару глюков:
1) Заходим в облако, включаем скажем пару портов - и тут 50 на 50 (или они включатся и все гуд, или страница раньше обновится, чем Mega пошлет запрос и на странице получаем то - что было до включения этих портов)
2) Только один пользователь в активном состоянии в облаке (может так и лучше)

:cry:

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 01 апр 2015, 12:48

Nospheratus
Что касается авторизации - да, это такая особенность. Одновременно два пользователя под одним логином не могут управлять устройством.
По остальному давайте разберемся.
У нас есть две колонки: "состояние" и "изменить".
"Состояние" - это текущее состояние порта на момент последнего сеанса связи с устройством.
"Изменить" - это, скажем так, планируемое состояние порта. То состояние, которое будет передано устройству, когда оно выйдет на связь. Но только в том случае, если состояние порта менялось пользователем.
Все это никак не связано с обновлением страницы, так как запись в БД делается в момент изменения.
После обновления страницы мы лишь видим состояние порта в БД. То есть если мы включили порт, а после обновления страницы он еще в состоянии "выключен" - это всего лишь означает, что устройство еще не успело связаться с сервером.
Это работает так, потому что сервер megad.ru (в отличие от сервера, который установлен в локальной сети) не имеет возможности отправить команду устройству. Только само устройство может выйти на связь, сообщить состояние всех своих портов, забрать и выполнить команды, которые ему дает сервер.

Однако если вы все равно видите где-то проблему или ошибку, опишите как воспроизвести ее.

Nospheratus
Сообщения: 32
Зарегистрирован: 07 янв 2015, 16:38

Re: megad.ru

Сообщение Nospheratus » 02 апр 2015, 01:42

Потестил megad.ru снова. Мои шаги (Все порты на устройстве выключены):

1. Захожу в наше облако и включаю порты P7 и P8.
2. Жду пока устройство сработает (устройство сработало, но состояние портов обновилось через сек 30).
3. Через пару минут выключаю эти порты и включаю порты P9 и P10.
4. Жду пока устройство сработает (и опять через некоторое время облако отобразило состояние портов до этого, т.е. типа Р7 и Р8 включены, но устройство сработало как и положено: выключило порты Р7 и Р8, а Р9 и Р10 включило)
...через минуту страница обновилось и стало все норм - т.е. горели только порты Р9 и Р10.

Я как понимаю сначала идет опрос состояния портов, а потом только считывается изменения в БД... Думаю логичнее будет сразу применить, то что в БД, а потом указать изменения 'Состояния портов' (Я так понимаю при обращении устройства к облаку сделано все наоборот). Лично я запутался...
И еще:
В период когда устройство сработало, а порты еще не стали в свое Состояние происходит следующее:
включаем скажем по быстрому порт Р13, вскоре происходит обновления экрана облако и этот порт якобы опять выключен. Но, в БД все-таки внеслось изменения что мы его включили. И через минуту устройство включит порт Р13…
короче как-то так :roll:
Лично я запутался... :D

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 02 апр 2015, 10:16

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

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 02 апр 2015, 12:58

Собственно, оно так и работало. Состояние в БД изменялось в момент сеанса связи с устройством.
Но я сделал некоторые косметические изменения. Можете проверить - изменилось ли что-нибудь в лучшую сторону?

Сразу изменять состояние при включении/выключении не совсем логично. Ведь устройство может не иметь доступа в Интернет. Нам будет казаться, что мы что-то включаем и выключаем, а по факту ничего не будет происходить.

Nospheratus
Сообщения: 32
Зарегистрирован: 07 янв 2015, 16:38

Re: megad.ru

Сообщение Nospheratus » 03 апр 2015, 00:49

Andrey_B, протестил. Теперь согласен, со звездочкой стало понятнее. Уже не запутаешься...
Хотелось бы чуть быстрее чтобы опрос шел. Скажем 30сек. Я думаю он не много за месяц мегабайт сожрет...

PS И все-таки не понимаю.. если устройство вышло в инет - то связь есть! Почему бы и сразу не изменять состояние портов (в момент считывания БД)... Хотя бы попробовать организовать и посмотреть, что получится... :)

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: megad.ru

Сообщение Andrey_B » 03 апр 2015, 12:50

Были сделаны существенные изменения.

1. Обновление данных на странице синхронизировано с получением данных от устройства. Теперь страница обновится практически сразу же, как только произойдет сеанс связи.
2. Самое главное. Теперь megad.ru поддерживает режим прямого управления выходами. Как это работает.
megad-ru-direct.jpg
megad-ru-direct.jpg (46.8 КБ) 28577 просмотров
В настройках появилась новая опция: "Прямое управление выходами".
В случае, если эта опция установлена, megad.ru будет обращаться к устройству по IP-адресу, с которого оно последний раз обращалось к серверу, и порту 8042.
Чтобы это работало, необходимо на домашнем роутере/мартшрутизаторе настроить "проброс" трафика с порта 8042 на порт 80 конкретного устройства в локальной сети.

Если все настроено правильно, то при переключении выхода, megad.ru сразу же отправит команду устройству. (Пока задействован пароль по умолчанию "sec")

Какие тут могут быть сложности. Такая схема в данной конфигурации работает только для одного устройства.
Если функция будет востребована, то необходимо:
а) В настройках указать также пароль для устройства.
б) Сделать настройку порта, по которому сервер будет обращаться по IP-адресу. Это позволит работать с несколькими устройствами, сидящими за одним IP-адресом.

Nospheratus, если устройство вышло в инет минуту назад, это еще не значит, что оно выйдет вновь, поэтому я предпочитаю отображать в колонке "Состояние" проверенные данные, а не предполагаемые.

Ответить