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

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

Модератор: immortal

andrey1509
Сообщения: 87
Зарегистрирован: Ср ноя 09, 2016 10:21 am
Откуда: Липецкая обл.
Благодарил (а): 22 раза
Поблагодарили: 2 раза

Re: Модуль "MegaD"

Сообщение andrey1509 » Ср фев 01, 2017 2:32 pm

Chainik писал(а):Тогда я правильно понял, что у вас серевер (Мажордомо) не дает команду на открытие замка, а команда подается автономно самой Мегой, путем выполнения сценария по умолчанию ("Act")?
Да
Мне и не нужно управлять дверью с Мажордомо. Мне нужно просто озвучить событие.
Debian Linux 7,Linux 3.2.0-4-686-pae on i686
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Ср фев 01, 2017 3:11 pm

У меня нет Меги-2561. Но, думаю, можно попробовать так.

1. Для вашей кнопки создаем в классе KeySensors виртуальный объект. Назовем его, к примеру, «Button_27». При этом под "27" подразумевается порт «P27», куда подключена кнопка на Меге. У «Button_27» уже есть метод «statusChanged». В этом методе «statusChanged» делаем настройку, вписывая туда код PHP

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

say("Замок открыт"); 
2. В модуле MegaD у вашей Меги на вкладке «Данные» у порта «27 Input» в поле «Связанный объект» выставляем «Button_27». В поле «Метод» выставляем «statusChanged».

Теоретически должно работать. Модуль "MegaD" должен быть настроен (должен видеть Мегу).
Адрес сервера и скрипт в Меге на закладке конфигурирования должны быть указаны.
За это сообщение автора Chainik поблагодарил:
andrey1509 (Ср фев 01, 2017 3:37 pm)
Рейтинг: 1.16%
andrey1509
Сообщения: 87
Зарегистрирован: Ср ноя 09, 2016 10:21 am
Откуда: Липецкая обл.
Благодарил (а): 22 раза
Поблагодарили: 2 раза

Re: Модуль "MegaD"

Сообщение andrey1509 » Ср фев 01, 2017 3:23 pm

Chainik писал(а):У меня нет Меги-2561. Но, думаю, можно попробовать так.

Теоретически должно работать. Модуль "MegaD" должен быть настроен (должен видеть Мегу).
Адрес сервера и скрипт в Меге на закладке конфигурирования должны быть указаны.
Да , спасибо заработало вот, в истории пишет, только не говорит
Debian Linux 7,Linux 3.2.0-4-686-pae on i686
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Ср фев 01, 2017 3:33 pm

Если мне не изменят память, в функции "say" можно указать уровень важности сообщений от 1 до 5. Самые важные Алиса говорит голосом. Только не помню, какой уровень считается наивысшим. Попробуйте указать

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

say("Замок открыт",5); 
если не помогло, тогда

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

say("Замок открыт",1); 
За это сообщение автора Chainik поблагодарил:
andrey1509 (Ср фев 01, 2017 10:58 pm)
Рейтинг: 1.16%
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль "MegaD"

Сообщение sergejey » Ср фев 01, 2017 5:49 pm

Я добавил в настройку контроллера возможность выбрать его тип и периферию. Пока, честно говоря, оно не используется, кроме типа периферии 7I7O. Если подскажите, как ещё эту штуку задействовать, то сделаю :) У меня есть 2561 без периферии, попробую ещё его подключить и посмотреть, что можно сделать.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
andrey1509
Сообщения: 87
Зарегистрирован: Ср ноя 09, 2016 10:21 am
Откуда: Липецкая обл.
Благодарил (а): 22 раза
Поблагодарили: 2 раза

Re: Модуль "MegaD"

Сообщение andrey1509 » Ср фев 01, 2017 10:59 pm

Chainik писал(а):Если мне не изменят память, в функции "say" можно указать уровень важности сообщений от 1 до 5. Самые важные Алиса говорит голосом. Только не помню, какой уровень считается наивысшим. Попробуйте указать

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

say("Замок открыт",5);
если не помогло, тогда

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

say("Замок открыт",1);
Ураааа... Заработало.....
Спасибо огромное.
Debian Linux 7,Linux 3.2.0-4-686-pae on i686
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores
andrey1509
Сообщения: 87
Зарегистрирован: Ср ноя 09, 2016 10:21 am
Откуда: Липецкая обл.
Благодарил (а): 22 раза
Поблагодарили: 2 раза

Re: Модуль "MegaD"

Сообщение andrey1509 » Ср фев 01, 2017 11:00 pm

sergejey писал(а):Я добавил в настройку контроллера возможность выбрать его тип и периферию. Пока, честно говоря, оно не используется, кроме типа периферии 7I7O. Если подскажите, как ещё эту штуку задействовать, то сделаю :) У меня есть 2561 без периферии, попробую ещё его подключить и посмотреть, что можно сделать.
Я на него датчики подключал и реле (с опто развязкой)
Debian Linux 7,Linux 3.2.0-4-686-pae on i686
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores
tsember
Сообщения: 52
Зарегистрирован: Ср фев 04, 2015 12:28 am
Благодарил (а): 54 раза
Поблагодарили: 6 раз

Re: Модуль "MegaD"

Сообщение tsember » Вт фев 07, 2017 12:03 am

Стал счастливым обладателем чуда под названием MegaD 2561. Подключил, все классно: никаких соплей с ардуино, выглядит красиво и дорого. Но я не об этом.
Пока проводил различные опыты с конфигурацией, несколько раз выключал Мегу с розетки на непродолжительное время. После включения сразу бросалось в глаза, что нет света. Приходилось идти к кнопке и снова запускать освещение. Насос системы отопления был выключен (когда он включается, электрокотел автоматом запускается), благо скрипт термостата на МДМ каждую минуту отправляет актуальное состояние на Мегу, тем самым в новую минуту, если надо насос запускается.
Но так же нельзя! Каждую подключенную нагрузку проверять: нужно ли ей сейчас работать или нет.
Достаточно при получении команды st=1 отправлять на Мегу все последние значения портов. Это сделать не трудно, может быть даже и самостоятельно реализуемо, но Очень хотелось бы, что бы эта возможность была в модуле штатно.
Сергей. Огромная просьба к Вам, рассмотрите возможность добавления этой функции в модуль (в этой ветке не один десяток раз эта просьба звучала, но решил еще раз поднять). Заранее благодарю.
tsember
Сообщения: 52
Зарегистрирован: Ср фев 04, 2015 12:28 am
Благодарил (а): 54 раза
Поблагодарили: 6 раз

Re: Модуль "MegaD"

Сообщение tsember » Вт фев 07, 2017 9:45 am

sergejey писал(а):
AHgpeu писал(а):и категорически необходима галочка для входов "обрабатывать отпускание кнопки"
Так вы поставьте в свойствах входа тип R&D (если не ошибаюсь) и событие будет приходить дважды -- как на нажатие так и на отпускание. При этом в метод передаётся парметр value, который говорит как раз о том, какое действие было произведено.
Сергей. Вопрос до сих пор актуален. В связанный метод передается два параметра: сработавший порт и его значение. Катострофически не хватает переданного параметра m (отпустили кнопку или держим свыше 1,5 сек).
Хочу сделать простую логику работы "железной" кнопки:
m=0. Кликнул - свет включился на Х минут; Кликнул еще - свет выключился;
m=1. На отжатие не реагируем, т.к. у нас кнопка
m=0, m=2. При выключенном свете нажал и подержал - свет сразу включится как бы на Х минут и через полторы секунды второй параметр скажет, что таймер Х минут нужно очистить (свет будет продолжать гореть до активации режима "Никого нет дома" или пока его не выключат).

Если два параметра уже передаются, то передать третий - не должно быть проблемой. Или кто может подсказать что нужно править что бы передавать параметр m?
Заранее большое спасибо участниками конференции.



UPD:
На удивление сам разобрался: примерно в середине файла megad.class.php есть код:
СпойлерПоказать

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

if ($prop['LINKED_OBJECT'] && $prop['LINKED_METHOD']) { // && $old_value!=$prop['CURRENT_VALUE_STRING']
      $params=array();
      $params['TITLE']=$rec['TITLE'];
      $params['VALUE']=$prop['CURRENT_VALUE_STRING'];
      $params['value']=$params['VALUE'];
      $params['port']=$prop['NUM'];
      $methodRes=callMethod($prop['LINKED_OBJECT'].'.'.$prop['LINKED_METHOD'], $params);
 
после строчки

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

      $params['port']=$prop['NUM']; 
добавляем строчку:

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

$params['m']=$m; 
оказывается в модуле уже все есть, только этот параметр в метод не передавался.
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт фев 07, 2017 1:03 pm

tsember писал(а):
Сергей. Вопрос до сих пор актуален. В связанный метод передается два параметра: сработавший порт и его значение. Катострофически не хватает переданного параметра m (отпустили кнопку или держим свыше 1,5 сек).
Хочу сделать простую логику работы "железной" кнопки:
m=0. Кликнул - свет включился на Х минут; Кликнул еще - свет выключился;
m=1. На отжатие не реагируем, т.к. у нас кнопка
Реализовать различную реакцию на одинарное и двойное нажатие кнопки можно и чисто программно (без "вытаскивания" параметра).
sega6549 выкладывал видео, в котором показано как это можно сделать.
https://www.youtube.com/watch?v=ghi6KyTTDcE
Ответить