Страница 99 из 141

Re: Модуль "MegaD"

Добавлено: Вс июл 29, 2018 12:07 am
Chainik
odinvolk писал(а): Сб июл 28, 2018 11:57 pm Так иногда проще делать но получается не универсально, Андрей постоянно всякие фишки прикручивает GSM I2C например но это выходит за рамки этого модуля, а на новый модуль похоже ещё не созрели
За Андреем не поспеешь, а серьезных "писателей" кода среди нас раз-два и обчелся, к сожалению. Я, к примеру, рад тому, что хотя бы базовый функционал модулем MegaD отрабатывается. Так что "такова селяви".

Re: Модуль "MegaD"

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

Re: Модуль "MegaD"

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

Возьмем, к примеру, задачу по управлению освещением. Посмотреть можно здесь (https://ab-log.ru/forum/viewtopic.php?f=1&t=1328) в конце длинного первого поста после подзаголовка "ДОПОЛНЕНИЕ". В вашем случае все тоже самое, только надо немного модифицировать код под специфику команд управления двухканальным ключом. Для этого, как я понимаю, достаточно в свойстве, где указывается порт, указать не просто цифру, а цифру + букву (13B например).

Re: Модуль "MegaD"

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

Re: Модуль "MegaD"

Добавлено: Чт авг 02, 2018 1:04 pm
Chainik
Смотреть надо на вкладку "Данные" в модуле MegaD. Там должна быть привязка к методу "switch".

Re: Модуль "MegaD"

Добавлено: Чт авг 02, 2018 1:19 pm
Harmer
Вопрос "Куда смотреть" снимается. Мега возвращает состояние порта с ключом в виде 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 соответствующий кусок

Re: Модуль "MegaD"

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

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

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

http://192.168.0.14/sec/?pt=13B&cmd=get
[ИП-адрес, пароль и номер порта, естественно, ваши]
1. в случае, когда оба порта выключены?
2. в случае, когда оба порта включены?
3. когда порт xА включен, а порт хB - выключен?

Re: Модуль "MegaD"

Добавлено: Чт авг 02, 2018 2:55 pm
Harmer
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

Re: Модуль "MegaD"

Добавлено: Чт авг 02, 2018 3:07 pm
Chainik
Да, тогда, похоже, вы правы. Надо модифицировать код, чтобы учитывалось, присутствует ли в свойстве порта буква или нет.
Попробую что-нибудь придумать.

Re: Модуль "MegaD"

Добавлено: Чт авг 02, 2018 3:32 pm
Chainik
Я сейчас далеко от 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 символа.