[Модуль] MegaD (megad)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Вс июл 29, 2018 12:07 am

odinvolk писал(а):
Сб июл 28, 2018 11:57 pm
Так иногда проще делать но получается не универсально, Андрей постоянно всякие фишки прикручивает GSM I2C например но это выходит за рамки этого модуля, а на новый модуль похоже ещё не созрели
За Андреем не поспеешь, а серьезных "писателей" кода среди нас раз-два и обчелся, к сожалению. Я, к примеру, рад тому, что хотя бы базовый функционал модулем MegaD отрабатывается. Так что "такова селяви".
odinvolk
Сообщения: 52
Зарегистрирован: Ср май 31, 2017 3:06 am
Откуда: odinwolk@gmail.com
Благодарил (а): 191 раз
Поблагодарили: 18 раз

Re: Модуль "MegaD"

Сообщение odinvolk » Вс июл 29, 2018 12:10 am

Harmer писал(а):
Вс июл 29, 2018 12:00 am
Я не настолько силен в программировании, чтобы обойтись без модуля. Если подскажете, что куда прописывать, буду весьма благодарен.
С помощью ключа во-первых увеличивается количество выходов на одном контроллере, а во-вторых, разводку по квартире от контроллера можно будет выполнять витой парой
Какая конкретная задача. Вариантов много как и решений (в этом и беда и счастье опенсорс)
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь или нажмите кнопку "Спасибо"!!!
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Вс июл 29, 2018 12:21 am

Harmer писал(а):
Вс июл 29, 2018 12:00 am
Я не настолько силен в программировании, чтобы обойтись без модуля. Если подскажете, что куда прописывать, буду весьма благодарен.
...
С моей (может и неправильной) точки зрения, модуль MegaD нужен, в первую очередь, чтобы отслеживать срабатывание входов типа кнопка (выключатели, герконы, датчики движения и т.п.). Для управления выходами я модуль MegaD вообще не использую.

Возьмем, к примеру, задачу по управлению освещением. Посмотреть можно здесь (https://ab-log.ru/forum/viewtopic.php?f=1&t=1328) в конце длинного первого поста после подзаголовка "ДОПОЛНЕНИЕ". В вашем случае все тоже самое, только надо немного модифицировать код под специфику команд управления двухканальным ключом. Для этого, как я понимаю, достаточно в свойстве, где указывается порт, указать не просто цифру, а цифру + букву (13B например).
За это сообщение автора Chainik поблагодарил:
Harmer (Пн июл 30, 2018 10:55 am)
Рейтинг: 1.16%
Harmer
Сообщения: 43
Зарегистрирован: Ср фев 14, 2018 10:34 am
Благодарил (а): 3 раза
Поблагодарили: 7 раз

Re: Модуль "MegaD"

Сообщение Harmer » Чт авг 02, 2018 12:14 pm

Chainik писал(а):
Вс июл 29, 2018 12:21 am
Возьмем, к примеру, задачу по управлению освещением. Посмотреть можно здесь (https://ab-log.ru/forum/viewtopic.php?f=1&t=1328) в конце длинного первого поста после подзаголовка "ДОПОЛНЕНИЕ". В вашем случае все тоже самое, только надо немного модифицировать код под специфику команд управления двухканальным ключом. Для этого, как я понимаю, достаточно в свойстве, где указывается порт, указать не просто цифру, а цифру + букву (13B например).
Сделал все по букварю. Нажимаю кнопки в сцене - работает. Нажимаю железные кнопки - реле переключается, а кнопки в сцене статус не меняют. Куда смотреть?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Чт авг 02, 2018 1:04 pm

Смотреть надо на вкладку "Данные" в модуле MegaD. Там должна быть привязка к методу "switch".
Harmer
Сообщения: 43
Зарегистрирован: Ср фев 14, 2018 10:34 am
Благодарил (а): 3 раза
Поблагодарили: 7 раз

Re: Модуль "MegaD"

Сообщение Harmer » Чт авг 02, 2018 1:19 pm

Вопрос "Куда смотреть" снимается. Мега возвращает состояние порта с ключом в виде ON/ON независимо от того, указана ли в запросе буква. Теперь вопрос "что делать?"
Помогите изобрести кусочек кода, который вместо стандартного

Код: Выделить всё

$state = file_get_contents("http://".$this->getProperty('ipAddress')."/".$this->getProperty('Password')."/?pt=".$this->getProperty('Port')."&cmd=get");
if ($state == "ON") {
  $this->setProperty('Status', 1);
} else {
  $this->setProperty('Status', 0); }
анализировал бы переменную "Port" и при наличии буквы извлекал бы из переменной $state соответствующий кусок
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Чт авг 02, 2018 2:31 pm

Нет, тут надо разбираться с выводом при запросе состояния порта. Я так понимаю, что речь по-прежнему идет о двухканальном ключе.

Что выдается в ответ, если в адресной строке браузера набрать команду:

Код: Выделить всё

http://192.168.0.14/sec/?pt=13B&cmd=get
[ИП-адрес, пароль и номер порта, естественно, ваши]
1. в случае, когда оба порта выключены?
2. в случае, когда оба порта включены?
3. когда порт xА включен, а порт хB - выключен?
Harmer
Сообщения: 43
Зарегистрирован: Ср фев 14, 2018 10:34 am
Благодарил (а): 3 раза
Поблагодарили: 7 раз

Re: Модуль "MegaD"

Сообщение Harmer » Чт авг 02, 2018 2:55 pm

Chainik писал(а):
Чт авг 02, 2018 2:31 pm
Нет, тут надо разбираться с выводом при запросе состояния порта. Я так понимаю, что речь по-прежнему идет о двухканальном ключе.

Что выдается в ответ, если в адресной строке браузера набрать команду:

Код: Выделить всё

http://192.168.0.14/sec/?pt=13B&cmd=get
[ИП-адрес, пароль и номер порта, естественно, ваши]
1. в случае, когда оба порта выключены?
2. в случае, когда оба порта включены?
3. когда порт xА включен, а порт хB - выключен?
Соответственно OFF/OFF, ON/ON, ON/OFF
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Чт авг 02, 2018 3:07 pm

Да, тогда, похоже, вы правы. Надо модифицировать код, чтобы учитывалось, присутствует ли в свойстве порта буква или нет.
Попробую что-нибудь придумать.
За это сообщение автора Chainik поблагодарил:
Harmer (Чт авг 02, 2018 3:09 pm)
Рейтинг: 1.16%
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Чт авг 02, 2018 3:32 pm

Я сейчас далеко от MDM, да и двухканального ключа у меня нет, чтобы проверить... Но можно попробовать так (содержимое метода switch):

Код: Выделить всё

file_get_contents("http://".$this->getProperty('ipAddress')."/".$this->getProperty('Password')."/?cmd=".$this->getProperty('Port').":2");
$state = file_get_contents("http://".$this->getProperty('ipAddress')."/".$this->getProperty('Password')."/?pt=".$this->getProperty('Port')."&cmd=get");

$Port = $this->getProperty('Port');
$Letter = substr($Port, -1);
if ($Letter == "A") {
$state = substr($state,0,2);
}
if ($Letter == "B") {
$state = substr($state, -2);
}

if ($state == "ON") {
  $this->setProperty('Status', 1);
} else {
  $this->setProperty('Status', 0); }
Тут мы дополнительно запрашиваем значение свойства порта и если на конце присутствует "A", берем первые два символа из ответа Меги, а если "B" - последние 2 символа.
Последний раз редактировалось Chainik Чт авг 02, 2018 7:57 pm, всего редактировалось 1 раз.
Ответить