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

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

Модератор: immortal

den_teh
Сообщения: 10
Зарегистрирован: Вс окт 25, 2020 9:35 pm
Благодарил (а): 5 раз
Поблагодарили: 0

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

Сообщение den_teh » Пн ноя 16, 2020 1:28 am

Chainik писал(а):
Вт ноя 10, 2020 2:28 pm
Думается, что это возможно. Параметр Val меняется командой вида

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

http://192.168.0.14/sec/?pt=32&misc=24
Если правильно помню, в меню и на сцене есть тип элемента "текстовое поле" или вроде того. То, что вводится в этот элемент, записывается в свойство. У свойства надо указать "запустить метод при изменении". В коде метода пишите что-то типа:

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

$value=getGlobal("Объект.Свойство");
$command="http://192.168.0.14/sec/?pt=32&misc=".$value;
file_get_contents($command);
Таким образом у контроллера на порту будет меняться параметр Val без перезагрузки.
А можете поподробнее расписать как это осуществить? Создал текстовое поле. Создал объект с именем getGlobal. Создал у объекта свойство getGlobal.value. Создал метод 121212 с кодом, что вы написали. Не могу найти где это указать - "У свойства надо указать "запустить метод при изменении"". Метод можно только выставить в настройках текстового поля. Пробовал ваш код со своими данными прописывать как в коде самого текстового поля, так и ссылаясь на метод. В свойства getGlobal.value записывается значение которое ввожу в текстовое поля, а в нистройки мегаД нет. Пробовал выполнить метод вручную, выдает такое- "http: // _ / objects /? object = getGlobal & op = m & m = 121212
Неперехваченная ошибка: вызов неопределенного значения функции () в /var/www/html/modules/objects/objects.class.php(643): eval () Код d: 1 Трассировка стека: # 0 /var/www/html/modules/objects/objects.class.php(643): eval () # 1 /var/www/html/objects/index.php(133) : objects-> callMethod ('121212', Array) # 2 {main} выброшено" и "# 0 /var/www/html/lib/errors.class.php(118): custom_error -> __ construct ('Неперехваченная ошибка: ...')
# 1 [внутренняя функция]: phpShutDownFunction ()
# 2 {main}"
https://ibb.co/NZ6gFjs
https://ibb.co/TkdmQz8
https://ibb.co/wSk0zfq
den_teh
Сообщения: 10
Зарегистрирован: Вс окт 25, 2020 9:35 pm
Благодарил (а): 5 раз
Поблагодарили: 0

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

Сообщение den_teh » Пн ноя 16, 2020 12:10 pm

Все получилось! Урааа!!!))))) С этим кодом все заработало. Код пишется прямо в настройках текстового поля. Никаких объектов и свойств дополнительно не нужно.

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

$value=$params['VALUE'];
$command="http://192.168.43.14/sec/?pt=35&misc=".$value;
file_get_contents($command);
Но есть одна загвоздка. В Меню управления есть объект Текстовое поле, а в сценах такого объекта нет( Как на сцене создать текстовое поле?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Пн ноя 16, 2020 5:29 pm

Любой элемент меню можно продублировать на сцене, сославшись на него из элемнта сцены Menu Control.
yden
Сообщения: 141
Зарегистрирован: Пн авг 22, 2016 10:03 am
Благодарил (а): 28 раз
Поблагодарили: 5 раз

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

Сообщение yden » Чт дек 31, 2020 11:17 am

Здравствуйте.
Подскажите пожалуйста. Мега, блок расширения 8170-R. К разъему Р0 (in) подключена кнопка. В модуле меги мдм этому входу связан объект и свойство. Значение свойства - 0. Нажимаю кнопку. В вебморде меги я вижу срабатывание входа - ON. Свойство объекта в мдм тоже стало = 1. В модуле меги в мдм тоже есть 1. Отпускаю кнопку. В вебморде меги вижу OFF. Но статус мдм, и значение входа в модуле меги мдм не поменяло свое значение.
В свойствах мегид:
сервер: 10.12.10.10:80
SRV Type: http
Script: megad.php
скрипт в корне на сервере в наличии.

Есть какой-то секрет? Мне нужно, чтобы при отпускании кнопки в мдм тоже менялось свойство объекта. Что я делаю неверно.

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

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

Сообщение Chainik » Чт дек 31, 2020 11:35 am

Мало сказать, что к порту P0 (in) подключена кнопка. Важно, чтобы режим работы порта в контроллере был сконфигурирован как "P@R", чтобы скрипт запускался как при замыкании, так и при размыкании кнопки.
Потом, неплохо было бы понять, что именно переключает статус. Тут 2 варианта: либо это делает сам программный модуль MegaD, либо переключение происходит в ходе выполнения привязанного метода. В последнем случае порту надо сопоставить только метод (а свойство не сопоставлять, т.е. оставить пустым), иначе свойство может меняться 2 раза.

И на вкладке "Данные" привязку метода надо делать по строке, по которой происходит увеличение счетчика при срабатывании кнопки. У меня такие строки имеют тип "Counter". Строчки типа "In" могут мешать, поэтому их (возможно) придется удалить, чтобы все работало.

И в случае изменения конфигурации контроллера эту конфигурацию в программном модуле MegaD тоже надо перечитать. По кнопке "Read config" обновленная конфигурация должна читаться. Если не читается, значит что-то настроено неправильно и надо разбираться. Ну этот так, к слову.
За это сообщение автора Chainik поблагодарил:
yden (Чт дек 31, 2020 12:06 pm)
Рейтинг: 1.16%
yden
Сообщения: 141
Зарегистрирован: Пн авг 22, 2016 10:03 am
Благодарил (а): 28 раз
Поблагодарили: 5 раз

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

Сообщение yden » Чт дек 31, 2020 11:58 am

Chainik писал(а):
Чт дек 31, 2020 11:35 am
Мало сказать, что к порту P0 (in) подключена кнопка. Важно, чтобы режим работы порта в контроллере был сконфигурирован как "P@R", чтобы скрипт запускался как при замыкании, так и при размыкании кнопки.
Потом, неплохо было бы понять, что именно переключает статус. Тут 2 варианта: либо это делает сам программный модуль MegaD, либо переключение происходит в ходе выполнения привязанного метода. В последнем случае порту надо сопоставить только метод (а свойство не сопоставлять, т.е. оставить пустым), иначе свойство может меняться 2 раза.

И на вкладке "Данные" привязку метода надо делать по строке, по которой происходит увеличение счетчика при срабатывании кнопки. У меня такие строки имеют тип "Counter". Строчки типа "In" могут мешать, поэтому их (возможно) придется удалить, чтобы все работало.

И в случае изменения конфигурации контроллера эту конфигурацию в программном модуле MegaD тоже надо перечитать. По кнопке "Read config" обновленная конфигурация должна читаться. Если не читается, значит что-то настроено неправильно и надо разбираться. Ну этот так, к слову.
Сенк. Не догадался про P@R. Завелось.

Вопрос: напрямую, без модуля меги в мдм, можно с мегаД изменять свойства объектов?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Чт дек 31, 2020 12:23 pm

yden писал(а):
Чт дек 31, 2020 11:58 am
Вопрос: напрямую, без модуля меги в мдм, можно с мегаД изменять свойства объектов?
Вопрос, конечно, интересный.
Думаю, возможно, но надо пробовать. Механика ведь какая: срабатывает вход, запускается скрипт на сервере. А уж что в этом скрипте происходит -- дело автора. Можно в конфигурации Меги в качестве теста прописать другое имя запускаемого скрипта. И в этом скрипте парсить присланное от Меги сообщение. Нам важно, от какой Меги прилетело сообщение (ip-адрес), по какому порту и с какими параметрами.

Если попробовать написать вот так:

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

if(isset($_GET['pt'])) {
If ($_GET['pt'] == 0) {
//А ТУТ СВОЙ КОД
}
}
то код должен выполняться при срабатывании порта P0 любой меги (независимо от IP-адреса).
kopyto80
Сообщения: 2
Зарегистрирован: Ср ноя 20, 2019 11:07 am
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение kopyto80 » Пт янв 15, 2021 11:18 am

Хотел попросить если возможно добавить поддержку ультразвукового датчика расстояния, или попросить совета как визуализировать с него данные, на сайте ab-log.ru есть описание как получить его значения, но я не могу сообразить как вывести его значения в простые устройства МД
Ссылка на описание его работы https://ab-log.ru/forum/viewtopic.php?f ... 395#p37376
Заранее спасибо
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Пт янв 15, 2021 12:30 pm

Ссылка у вас битая. Вот работающая: https://ab-log.ru/forum/viewtopic.php?f ... 395#p37376
Как там с ПУ не подскажу, ибо не пользуюсь, но без ПУ и без модуля "MegaD" процесс будет выглядеть следующим образом.
Код для запроса значения и сохранения в свойство:

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

$Value = file_get_contents('http://192.168.0.14/sec/?pt=37&dev=sr04&echo=29');
sg('Имя_вашего_объекта.Имя_свойства',$Value);
Код размещаете в сценарии или в методе.
А дальше вызываете код по необходимости или периодически, например, 1 раз в минуту или 1 раз в пять минут.

Организуем периодический запуск сценария/метода с кодом опроса. Проще всего это сделать, записав в «onNewMinute» (Панель управления --> ОБЪЕКТЫ --> Объекты --> [класс] Timer --> ClockChime --> onNewMinute) такой код (ниже строки «$m=date('i',time());»):

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

//В случае сценария
if ($m%15 == 0) {runScriptSafe("Имя_вашего_сценария");}
//В случае метода
if ($m%15 == 0) {callMethodSafe("Имя_объекта.Имя_метода");}
Опрос будет происходить в данном случае раз в 15 минут.

Самый простой способ визуализации - создать на сцене информер и сослаться на объект.свойство, куда сохраняется значение с датчика. Еще хорошая конструкция - %объект.свойство% , которую можно использовать в меню, в элементах на сцене. Такая конструкция тоже позволяет "вытащить" и показать значение свойства.

Наши творцы (в хорошем смысле слова) уже давно расписали в статьях большую часть штатаного функционала системы. Вот про визуализацию данных: https://kb.mjdm.ru/commands_help/
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Чт янв 21, 2021 1:00 pm

Привет.
Есть вопрос по самой базовой настройке и ее работоспособности.
Мега 328, мажордомо, простые устройства, модуль мегад последний, ubuntu.

Выключатель c фиксацией на порт 0
Изображение

Модуль мегу увидел, считал конфигурацию
Изображение

Настройки в модуле
Изображение
Изображение

Реле создано в простых устройствах
Изображение

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

лог:
Изображение

Реально настроить или такая связка модулей пока не работоспособна?
Ответить