SmartLiving.ru

Обсуждение проекта
 
Текущее время: Ср июн 28, 2017 6:52 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Пт май 06, 2016 2:52 pm 
Не в сети

Зарегистрирован: Сб окт 12, 2013 11:03 pm
Сообщения: 1358
Благодарил (а): 44 раз.
Поблагодарили: 254 раз.
В этой ветке будут собираться рекомендации по созданию модулей.

Помощник создания модулей для MajorDoMo Обсуждение

Просьба задавать вопросы, а также написать чего не хватает в описании.
В последствии будет сделана инструкция в WIKI

_________________
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт май 06, 2016 3:21 pm 
Не в сети

Зарегистрирован: Сб окт 12, 2013 11:03 pm
Сообщения: 1358
Благодарил (а): 44 раз.
Поблагодарили: 254 раз.
В систему подписки а события добавлен механизм приоритетов и дополнительных параметров.
Теперь при установке в функции подписки необходимо указать приоритет модуля
Код:

 function install
($data='') {
  subscribeToEvent($this->name, 'SAY', '', 10);
  parent::install();
 }

У данного модуля приоритет 10 (По умолчанию приоритет 0). Он запускается раньше чем другие модули. То есть чем выше приоритет тем раньше он в очереди

Также в processSubscription добавлен массив &$details в который каждый модуль может оставить информацию для других модулей.

Введённые переменные:
  • ignoreVoice (NULL/false, true) она означает что для следующий модулей не нужно произносить фразы
Пока этот механизм реализован только в модулях от sergejey

Для чего это нужно. Например я ставлю 2 модуля: "Yandex TTS" и "Festival TTS". Если модуль "Yandex TTS" смог произнести фразу, то он устанавливает переменную ignoreVoice=true и "Festival TTS" уже не произносит её.

Это нужно для того чтобы система смогла проговорить даже если нет интернета.
Также модно реализовать другие взаимодействия между модулями

Для тех кто сделал модули онлайн TTS поправите свои модули под эту возможность

_________________
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт авг 05, 2016 1:31 am 
Не в сети

Зарегистрирован: Вт июл 12, 2016 6:16 pm
Сообщения: 144
Благодарил (а): 1 раз.
Поблагодарили: 5 раз.
Можно еще приоритет в минус, например для случая когда фраза вообще не должна произноситься?
сейчас любая фраза идет в голос и скачивает mp3 несмотря на уровень и уровень громкости
это должно чуть уменьшить нагрузку на систему и интернеты(те же 2/3/4г)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт авг 18, 2016 11:40 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 2340
Откуда: Екатеринбург
Благодарил (а): 80 раз.
Поблагодарили: 443 раз.
Вопросик по модулям...на этот раз по юзер-интерфесу...

Как создать в интерфейсе элемент меню?

Звучит туповато, но сформулировал как мог. Теперь разъяснения)) Скопировать HTML-код с описания библиотеки JQueryMobile вообще не проблема, назначить на него какой нить java-код тоже...
А как создать именно элемент меню? Там помимо самого (к примеру выключателя) есть обвес из java-скриптов, которые ожидают завершения выполнения, потом прописывают "ОК", плюс у каждого элемента свои #ID#.

Ну и, наверное, пример)) Есть в таблице несколько записей, есть поле, к примеру "STAT", значения соответственно 1/0. Нужно чтобы при конструкции формата
Код:
[#module name="имя модуля" mode="menu"#]    
...ну или как там модули вызываются...выводилось, скажем, несколько выключателей отображающих свойство STAT из таблицы у каждой записи. Аналогично со сценами...чтобы выводилась пачка элементов типа выключатель. Соответственно чтобы при перещелкивании они заносили соотв. значения в таблицу, и меняли свой статус.

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт авг 19, 2016 11:07 am 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 3897
Откуда: Минск, Беларусь
Благодарил (а): 62 раз.
Поблагодарили: 999 раз.
Два варианта.

1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно

2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.

Лично мне больше нравится первый вариант для кастомного модуля.

_________________

Сергей Джейгало, разработчик MajorDoMo
Обо мне | Сотрудничество | Профиль Connect


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт авг 19, 2016 11:11 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 2340
Откуда: Екатеринбург
Благодарил (а): 80 раз.
Поблагодарили: 443 раз.
sergejey писал(а):
1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно

Тогда еще вопрос - есть какие-нить мануалы по системным обработчикам, чтобы их прикрутить? Просто если есть системные скрипты - типа ожидания переключения выключателя - зачем я буду дублировать его? Или системными тут не воспользоваться?
sergejey писал(а):
2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.

Про это тоже можно по-подробнее? Как вариант - где инфу почитать?

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт авг 19, 2016 11:35 am 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 3897
Откуда: Минск, Беларусь
Благодарил (а): 62 раз.
Поблагодарили: 999 раз.
nick7zmail писал(а):
sergejey писал(а):
1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно

Тогда еще вопрос - есть какие-нить мануалы по системным обработчикам, чтобы их прикрутить? Просто если есть системные скрипты - типа ожидания переключения выключателя - зачем я буду дублировать его? Или системными тут не воспользоваться?


В таком варианте придётся дублировать. Даже не так -- делать упрощённую копию, т.к. текущие обработчик меню достаточно сложные из-за того, что там и AJAX и веб-сокеты. Проще всего использовать AJAX со своим модулем и всё.

nick7zmail писал(а):
sergejey писал(а):
2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.

Про это тоже можно по-подробнее? Как вариант - где инфу почитать?


Всё в лучших традициях -- нигде )) Сорри, но я при работе над проектами делаю некоторые фичи, которые нужны в данный момент и пригодятся на будущее, но их популярно описывать у меня уже времени не остаётся.
В общем, ниже пример кода, который удаляет элемент меню и создаёт его заново:

Код:
$system_name='mymodule_item_1';
$code='';
SQLExec("DELETE FROM commands WHERE SYSTEM='".$system_name."';
$item=array();
$item['SYSTEM']=$system_name;
$item['TITLE']='My Switch';
$item['TYPE']='switch';
$item['PARENT_ID']=0;
$code="include_once(DIR_MODULES.'mymodule/mymodule.class.php');"
$code.="$myModule=new mymodule();";
$code.="$myModule->processItemChange('".$system_name."',\$params['VALUE']);";
$item['CODE']=$code;
SQLInsert('commands',
$item);


И соответственно в модуле должен быть метод processItemChange, который принимает два параметра -- системное имя и новое значение.

_________________

Сергей Джейгало, разработчик MajorDoMo
Обо мне | Сотрудничество | Профиль Connect


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт авг 23, 2016 6:18 pm 
Не в сети

Зарегистрирован: Сб авг 13, 2016 9:13 pm
Сообщения: 5
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Парни, помогите чайнику. А что это за синтаксис в .html - [#.............#] ???
Например тот же [#module name="имя модуля" mode="menu"#] или [#begin RESULT#]
[#end RESULT#]? Что курить на эту тему?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт авг 23, 2016 7:20 pm 
Не в сети

Зарегистрирован: Пт дек 20, 2013 4:46 pm
Сообщения: 172
Благодарил (а): 55 раз.
Поблагодарили: 29 раз.
Покури где-то тут http://majordomo.smartliving.ru/forum/viewtopic.php?f=5&t=744&hilit=%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%B9 сразу действительно покурить нужно. Потом разбираешься :)
На форуме где-то есть два архивчика в зипах "написание модуля" и "шаблоны"

PS Вот хоть убей не могу найти где качал. Надеюсь мне за наглость не сочтется дублирование в этой ветке :)


Вложения:
написание модуля.zip [14.79 КБ]
Скачиваний: 105
шаблоны.zip [14.15 КБ]
Скачиваний: 99

_________________
Ubuntu на HP 7800 Connect


Последний раз редактировалось Alien Вт авг 23, 2016 7:35 pm, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт авг 23, 2016 7:35 pm 
Не в сети

Зарегистрирован: Сб авг 13, 2016 9:13 pm
Сообщения: 5
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Спасибо. То что надо!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB