За Андреем не поспеешь, а серьезных "писателей" кода среди нас раз-два и обчелся, к сожалению. Я, к примеру, рад тому, что хотя бы базовый функционал модулем MegaD отрабатывается. Так что "такова селяви".
[Модуль] MegaD (megad)
Модератор: immortal
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Модуль "MegaD"
-
- Сообщения: 52
- Зарегистрирован: Ср май 31, 2017 3:06 am
- Откуда: odinwolk@gmail.com
- Благодарил (а): 192 раза
- Поблагодарили: 18 раз
Re: Модуль "MegaD"
Какая конкретная задача. Вариантов много как и решений (в этом и беда и счастье опенсорс)Harmer писал(а): ↑Вс июл 29, 2018 12:00 amЯ не настолько силен в программировании, чтобы обойтись без модуля. Если подскажете, что куда прописывать, буду весьма благодарен.
С помощью ключа во-первых увеличивается количество выходов на одном контроллере, а во-вторых, разводку по квартире от контроллера можно будет выполнять витой парой
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Модуль "MegaD"
С моей (может и неправильной) точки зрения, модуль MegaD нужен, в первую очередь, чтобы отслеживать срабатывание входов типа кнопка (выключатели, герконы, датчики движения и т.п.). Для управления выходами я модуль MegaD вообще не использую.
Возьмем, к примеру, задачу по управлению освещением. Посмотреть можно здесь (https://ab-log.ru/forum/viewtopic.php?f=1&t=1328) в конце длинного первого поста после подзаголовка "ДОПОЛНЕНИЕ". В вашем случае все тоже самое, только надо немного модифицировать код под специфику команд управления двухканальным ключом. Для этого, как я понимаю, достаточно в свойстве, где указывается порт, указать не просто цифру, а цифру + букву (13B например).
- Рейтинг: 1.16%
-
- Сообщения: 43
- Зарегистрирован: Ср фев 14, 2018 10:34 am
- Благодарил (а): 3 раза
- Поблагодарили: 7 раз
Re: Модуль "MegaD"
Сделал все по букварю. Нажимаю кнопки в сцене - работает. Нажимаю железные кнопки - реле переключается, а кнопки в сцене статус не меняют. Куда смотреть?Chainik писал(а): ↑Вс июл 29, 2018 12:21 amВозьмем, к примеру, задачу по управлению освещением. Посмотреть можно здесь (https://ab-log.ru/forum/viewtopic.php?f=1&t=1328) в конце длинного первого поста после подзаголовка "ДОПОЛНЕНИЕ". В вашем случае все тоже самое, только надо немного модифицировать код под специфику команд управления двухканальным ключом. Для этого, как я понимаю, достаточно в свойстве, где указывается порт, указать не просто цифру, а цифру + букву (13B например).
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Модуль "MegaD"
Смотреть надо на вкладку "Данные" в модуле MegaD. Там должна быть привязка к методу "switch".
-
- Сообщения: 43
- Зарегистрирован: Ср фев 14, 2018 10:34 am
- Благодарил (а): 3 раза
- Поблагодарили: 7 раз
Re: Модуль "MegaD"
Вопрос "Куда смотреть" снимается. Мега возвращает состояние порта с ключом в виде ON/ON независимо от того, указана ли в запросе буква. Теперь вопрос "что делать?"
Помогите изобрести кусочек кода, который вместо стандартного
анализировал бы переменную "Port" и при наличии буквы извлекал бы из переменной $state соответствующий кусок
Помогите изобрести кусочек кода, который вместо стандартного
Код: Выделить всё
$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); }
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Модуль "MegaD"
Нет, тут надо разбираться с выводом при запросе состояния порта. Я так понимаю, что речь по-прежнему идет о двухканальном ключе.
Что выдается в ответ, если в адресной строке браузера набрать команду:
[ИП-адрес, пароль и номер порта, естественно, ваши]
1. в случае, когда оба порта выключены?
2. в случае, когда оба порта включены?
3. когда порт xА включен, а порт хB - выключен?
Что выдается в ответ, если в адресной строке браузера набрать команду:
Код: Выделить всё
http://192.168.0.14/sec/?pt=13B&cmd=get
1. в случае, когда оба порта выключены?
2. в случае, когда оба порта включены?
3. когда порт xА включен, а порт хB - выключен?
-
- Сообщения: 43
- Зарегистрирован: Ср фев 14, 2018 10:34 am
- Благодарил (а): 3 раза
- Поблагодарили: 7 раз
Re: Модуль "MegaD"
Соответственно OFF/OFF, ON/ON, ON/OFFChainik писал(а): ↑Чт авг 02, 2018 2:31 pmНет, тут надо разбираться с выводом при запросе состояния порта. Я так понимаю, что речь по-прежнему идет о двухканальном ключе.
Что выдается в ответ, если в адресной строке браузера набрать команду:[ИП-адрес, пароль и номер порта, естественно, ваши]Код: Выделить всё
http://192.168.0.14/sec/?pt=13B&cmd=get
1. в случае, когда оба порта выключены?
2. в случае, когда оба порта включены?
3. когда порт xА включен, а порт хB - выключен?
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Модуль "MegaD"
Да, тогда, похоже, вы правы. Надо модифицировать код, чтобы учитывалось, присутствует ли в свойстве порта буква или нет.
Попробую что-нибудь придумать.
Попробую что-нибудь придумать.
- Рейтинг: 1.16%
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Модуль "MegaD"
Я сейчас далеко от MDM, да и двухканального ключа у меня нет, чтобы проверить... Но можно попробовать так (содержимое метода switch):
Тут мы дополнительно запрашиваем значение свойства порта и если на конце присутствует "A", берем первые два символа из ответа Меги, а если "B" - последние 2 символа.
Код: Выделить всё
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); }
Последний раз редактировалось Chainik Чт авг 02, 2018 7:57 pm, всего редактировалось 1 раз.