[Разработчикам] Информация и рекомендации
Модератор: immortal
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
[Разработчикам] Информация и рекомендации
Материалы и информация
Видео
Файлы
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Разработка модулей (Рекомендации)
В систему подписки а события добавлен механизм приоритетов и дополнительных параметров.
Теперь при установке в функции подписки необходимо указать приоритет модуля
У данного модуля приоритет 10 (По умолчанию приоритет 0). Он запускается раньше чем другие модули. То есть чем выше приоритет тем раньше он в очереди
Также в processSubscription добавлен массив &$details в который каждый модуль может оставить информацию для других модулей.
Введённые переменные:
Это нужно для того чтобы система смогла проговорить даже если нет интернета.
Также модно реализовать другие взаимодействия между модулями
Для отписки от событий в функцию uninstall() (или при других условиях) модуля нужно добавить unsubscribeFromEvent(...).
Теперь при установке в функции подписки необходимо указать приоритет модуля
Код: Выделить всё
function install($data='') {
subscribeToEvent($this->name, 'SAY', '', 10);
parent::install();
}
Также в processSubscription добавлен массив &$details в который каждый модуль может оставить информацию для других модулей.
Введённые переменные:
- ignoreVoice (NULL/false, true) она означает что для следующий модулей не нужно произносить фразы
Это нужно для того чтобы система смогла проговорить даже если нет интернета.
Также модно реализовать другие взаимодействия между модулями
Для отписки от событий в функцию uninstall() (или при других условиях) модуля нужно добавить unsubscribeFromEvent(...).
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
-
- Сообщения: 207
- Зарегистрирован: Вт июл 12, 2016 6:16 pm
- Благодарил (а): 2 раза
- Поблагодарили: 14 раз
Re: Разработка модулей (Рекомендации)
Можно еще приоритет в минус, например для случая когда фраза вообще не должна произноситься?
сейчас любая фраза идет в голос и скачивает mp3 несмотря на уровень и уровень громкости
это должно чуть уменьшить нагрузку на систему и интернеты(те же 2/3/4г)
сейчас любая фраза идет в голос и скачивает mp3 несмотря на уровень и уровень громкости
это должно чуть уменьшить нагрузку на систему и интернеты(те же 2/3/4г)
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Разработка модулей (Рекомендации)
Вопросик по модулям...на этот раз по юзер-интерфесу...
Как создать в интерфейсе элемент меню?
Звучит туповато, но сформулировал как мог. Теперь разъяснения)) Скопировать HTML-код с описания библиотеки JQueryMobile вообще не проблема, назначить на него какой нить java-код тоже...
А как создать именно элемент меню? Там помимо самого (к примеру выключателя) есть обвес из java-скриптов, которые ожидают завершения выполнения, потом прописывают "ОК", плюс у каждого элемента свои #ID#.
Ну и, наверное, пример)) Есть в таблице несколько записей, есть поле, к примеру "STAT", значения соответственно 1/0. Нужно чтобы при конструкции формата...ну или как там модули вызываются...выводилось, скажем, несколько выключателей отображающих свойство STAT из таблицы у каждой записи. Аналогично со сценами...чтобы выводилась пачка элементов типа выключатель. Соответственно чтобы при перещелкивании они заносили соотв. значения в таблицу, и меняли свой статус.
Как создать в интерфейсе элемент меню?
Звучит туповато, но сформулировал как мог. Теперь разъяснения)) Скопировать HTML-код с описания библиотеки JQueryMobile вообще не проблема, назначить на него какой нить java-код тоже...
А как создать именно элемент меню? Там помимо самого (к примеру выключателя) есть обвес из java-скриптов, которые ожидают завершения выполнения, потом прописывают "ОК", плюс у каждого элемента свои #ID#.
Ну и, наверное, пример)) Есть в таблице несколько записей, есть поле, к примеру "STAT", значения соответственно 1/0. Нужно чтобы при конструкции формата
Код: Выделить всё
[#module name="имя модуля" mode="menu"#]
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
Два варианта.
1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно
2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.
Лично мне больше нравится первый вариант для кастомного модуля.
1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно
2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.
Лично мне больше нравится первый вариант для кастомного модуля.
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Разработка модулей (Рекомендации)
Тогда еще вопрос - есть какие-нить мануалы по системным обработчикам, чтобы их прикрутить? Просто если есть системные скрипты - типа ожидания переключения выключателя - зачем я буду дублировать его? Или системными тут не воспользоваться?sergejey писал(а): 1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно
Про это тоже можно по-подробнее? Как вариант - где инфу почитать?sergejey писал(а): 2. Автоматически создавать "родные" элементы меню, привязывать их опять же к каким-то объектам либо задавать код, который будет выполняться, когда пользователь их меняе. Т.е. добавлять записи в таблицу commands, указывая нужный TYPE. Кстати, сейчас в некоторых сущностях системы появилось поле SYSTEM -- его отредактировать в панели нельзя и оно специально служит для автоматического создания, обновления и удаления элементов. Модуль может создать свой элемент, заполнив поле SYSTEM и потом его обновлять, удалять и т.п.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
В таком варианте придётся дублировать. Даже не так -- делать упрощённую копию, т.к. текущие обработчик меню достаточно сложные из-за того, что там и AJAX и веб-сокеты. Проще всего использовать AJAX со своим модулем и всё.nick7zmail писал(а):Тогда еще вопрос - есть какие-нить мануалы по системным обработчикам, чтобы их прикрутить? Просто если есть системные скрипты - типа ожидания переключения выключателя - зачем я буду дублировать его? Или системными тут не воспользоваться?sergejey писал(а): 1. [#module name="имя модуля" mode="menu"#] -- такой вариант вполне ОК, только нужно самому реализовывать обработку переключателя, т.е. выводить все нужные html-элементы и написать свой скрипт, который в случае изменения будет отправлять данные в свой модуль. Фактически, это вставка HTML-кода, который делает всё, что нужно
Всё в лучших традициях -- нигде )) Сорри, но я при работе над проектами делаю некоторые фичи, которые нужны в данный момент и пригодятся на будущее, но их популярно описывать у меня уже времени не остаётся.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);
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 5
- Зарегистрирован: Сб авг 13, 2016 9:13 pm
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Разработка модулей (Рекомендации)
Парни, помогите чайнику. А что это за синтаксис в .html - [#.............#] ???
Например тот же [#module name="имя модуля" mode="menu"#] или [#begin RESULT#]
[#end RESULT#]? Что курить на эту тему?
Например тот же [#module name="имя модуля" mode="menu"#] или [#begin RESULT#]
[#end RESULT#]? Что курить на эту тему?
-
- Сообщения: 191
- Зарегистрирован: Пт дек 20, 2013 4:46 pm
- Благодарил (а): 72 раза
- Поблагодарили: 38 раз
Re: Разработка модулей (Рекомендации)
Покури где-то тут http://majordomo.smartliving.ru/forum/v ... 0%B5%D0%B9 сразу действительно покурить нужно. Потом разбираешься
На форуме где-то есть два архивчика в зипах "написание модуля" и "шаблоны"
PS Вот хоть убей не могу найти где качал. Надеюсь мне за наглость не сочтется дублирование в этой ветке
На форуме где-то есть два архивчика в зипах "написание модуля" и "шаблоны"
PS Вот хоть убей не могу найти где качал. Надеюсь мне за наглость не сочтется дублирование в этой ветке
- Вложения
-
- написание модуля.zip
- (14.79 КБ) 563 скачивания
-
- шаблоны.zip
- (14.15 КБ) 507 скачиваний
Последний раз редактировалось Alien Вт авг 23, 2016 7:35 pm, всего редактировалось 1 раз.
- Рейтинг: 2.33%
Ubuntu на Banana pi M2U Connect