SmartLiving.ru

Обсуждение проекта
 
Текущее время: Чт дек 14, 2017 7:28 am

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




Начать новую тему Ответить на тему  [ Сообщений: 390 ]  На страницу 1, 2, 3, 4, 5 ... 39  След.
Автор Сообщение
 Заголовок сообщения: Простые устройства / Simple Devices
СообщениеДобавлено: Вт янв 10, 2017 6:31 pm 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 4171
Откуда: Минск, Беларусь
Благодарил (а): 66 раз.
Поблагодарили: 1136 раз.
В альфа-ветке обновлений ядра добавился новым модуль: Простые устройства

"Простые устройства" были задуманы для того, чтобы снять с пользователя заботы по базовой интеграции типового оборудования в систему.

Изображение

Пока поддерживаются такие типы устройств:
* Управляемое реле/Выключатель
* Диммер
* Датчик движения
* Кнопка
* Датчик температуры
* Датчик влажности

Для устройств автоматически создаются классы, свойства, методы, объекты (не надо заморачиваться вообще что это такое). Так же, через интерфейс работы с простыми устройствами можно их добавить в меню и на сцены. Кроме того, простые устройства и их функции появляются в интерфейсе программирования blockly и могут быть использованы в любых сценариях.
Ничего отдельно программировать не нужно, но при желании можно -- добавлять новые свойства классов, править код методов и т.п. При обновлении системы будет обновляться только базовая структура, базовый код и представление.

В дальнейшем планируется расширение набора устройств, их функций, внешнего представления, а так же интеграция других модулей, связанных с оборудованием.

[Показать] Скрытый текст: Информация для разработчиков модулей
Для добавления функционала привязки своих данных (датчиков, реле и т.п.) к простым устройствам можно воспользоваться двумя способами:

1. Через интерфейс пользователя. Аналог использования связанных объектов/свойств.

Возьмём к примеру как я это делал для модуля noolite. После добавления устройства в систему есть закладка Данные -- в этой закладке таблица данных, у каждой записи которой есть поля LINKED_OBJECT, LINKED_PROPERTY и LINKED_METHOD. В шаблон вывода данных на этой закладке (файл noodevices_edit_data.html) добавляем следующую конструкцию для каждой записи:

[#if SDEVICE_TYPE!=""#]
[#module name="devices" action="link" type="<#PROPERTIES.SDEVICE_TYPE#>" source_table="noocommands" source_table_id="<#PROPERTIES.ID#>" linked_object="<#PROPERTIES.LINKED_OBJECT#>"#]
[#else#]
&nbsp;
[#endif#]

внешне оно будет выглядеть вот так:
http://c2n.me/3G99vCK.png
или так, если устройство привязано:
http://c2n.me/3G99Ccb.png

значение SDEVICE_TYPE должно быть заполнено самим модулем, т.к. типы возможных простых устройств и типы данных не будут совпадать.
для заполнения SDEVICE_TYPE я добавил такой код в файл noodevices_edit.inc.php:
http://c2n.me/3G98eOX.png

т.е. в зависимости от того, какой тип данных я выставляю возможный тип простого устройства.
простые устройства могут быть следующих типов:
relay, dimmer, button, sensor_temp, sensor_humidity
если для данных нельзя подобрать устройство, то ставим SDEVICE_TYPE пустым, чтобы закрыть возможность привязки устройства к этим данным. если мы считаем, что пользователь сам сможет выбрать, какой тип устройства лучше всего подходит, то можем ставить любое значение, например any -- тогда окно привязки к устройству откроется, но тип устройства не будет выбран заранее

2. Второй способ привязки к простым устройствам это программный. Этот способ можно использовать, если в процессе сканирования вы можете сами определить тип устройства и не хотите напрягать пользователя лишним действием, т.е. создаём простое устройство автоматически. Пример кода:

include_once(DIR_MODULES.'devices/devices.class.php');
$dev=new devices();

$device_type='relay'; // тип устройства (см выше допустимые типы)
$options=array(); // опции добавления

$options['TABLE']='noocommands'; // таблица, куда потом запишется LINKED_OBJECT и LINKED_PROPERTY
$options['TABLE_ID']=22; // ID записи в вышеназванной таблице (запись уже должна быть создана такая)
$options['LOCATION_ID']=1; // ID расположения (не обязательно)
$options['LINKED_OBJECT']='NooSwitch1'; // название связанного объекта, который создастся автоматически, если такого нет (не обязательно)
$options['TITLE']='MyDevice'; // название устройства (не обязательно)

$options['ADD_MENU']=1; // добавлять интерфейс работы с устройством в меню (не обязательно)
$options['ADD_SCENE']=1; // добавлять интерфейс работы с устройством на сцену (не обязательно)

$result=$dev->addDevice($device_type, $options); // добавляем устройство -- возвращает 1 в случае успешного добавления

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

_________________

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Вт янв 10, 2017 6:46 pm 
Не в сети

Зарегистрирован: Вт апр 29, 2014 9:16 pm
Сообщения: 107
Благодарил (а): 7 раз.
Поблагодарили: 13 раз.
Сергей спасибо большое за твое детище и дай Бог тебе здоровья и удачи во всем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Ср фев 01, 2017 2:52 pm 
В сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 3833
Откуда: Екатеринбург
Благодарил (а): 94 раз.
Поблагодарили: 782 раз.
Интересная штука...правда пока не совсем понял как применяется)))
Пример: датчик качества воздуха А1. Пользователь, к примеру добавил его к себе в модуль бродлинк....
Устройство передаёт 5 параметров (температуру, влажность, освещенность, уровень шума, и, собственно качество воздуха). Мне под него 5 простых девайсов создавать?)) Это странно...

И оно связывает с моим модулем linked_object и linked_property? Или а если мне не нужно связывать с модулем linked_object и linked_property (потому что мне не требуется отслеживать изменение этих свойств)...тоже связывает??

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Ср фев 01, 2017 5:53 pm 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 4171
Откуда: Минск, Беларусь
Благодарил (а): 66 раз.
Поблагодарили: 1136 раз.
nick7zmail писал(а):
Интересная штука...правда пока не совсем понял как применяется)))
Пример: датчик качества воздуха А1. Пользователь, к примеру добавил его к себе в модуль бродлинк....
Устройство передаёт 5 параметров (температуру, влажность, освещенность, уровень шума, и, собственно качество воздуха). Мне под него 5 простых девайсов создавать?)) Это странно...


Комбинированные датчики не поддерживаются. Да, если собираются несколько параметров, то надо несколько простых устройств.

nick7zmail писал(а):
И оно связывает с моим модулем linked_object и linked_property? Или а если мне не нужно связывать с модулем linked_object и linked_property (потому что мне не требуется отслеживать изменение этих свойств)...тоже связывает??


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

_________________

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Вс фев 05, 2017 8:41 am 
Не в сети

Зарегистрирован: Чт ноя 27, 2014 10:43 am
Сообщения: 53
Благодарил (а): 7 раз.
Поблагодарили: 12 раз.
Создал устройство, датчик движения. В действиях прописал "say("Движение", 2);" Но при смене статуса, ничего не происходит. Что делать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Вс фев 05, 2017 1:08 pm 
Не в сети

Зарегистрирован: Вс янв 01, 2017 8:32 pm
Сообщения: 312
Откуда: Москва
Благодарил (а): 7 раз.
Поблагодарили: 40 раз.
kostya066 писал(а):
Создал устройство, датчик движения. В действиях прописал "say("Движение", 2);" Но при смене статуса, ничего не происходит. Что делать?

Все правильно. Если у других устройств нужно в свойство что-то писать, то тут нужно вызывать метод motionDetected. Я тоже долго не мог понять почему ничего не работает. Самый простой костыль, это добавить в метод statusUpdated класса SMotions что-то типа:

Код:



 if 
($params['NEW_VALUE'] == '1'){
   $this -> callMethod('motionDetected');
}



Отправлено с моего SM-G850F через Tapatalk


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Чт фев 09, 2017 4:01 pm 
Не в сети

Зарегистрирован: Чт ноя 27, 2014 10:43 am
Сообщения: 53
Благодарил (а): 7 раз.
Поблагодарили: 12 раз.
DimSun75 писал(а):
kostya066 писал(а):
Создал устройство, датчик движения. В действиях прописал "say("Движение", 2);" Но при смене статуса, ничего не происходит. Что делать?

Все правильно. Если у других устройств нужно в свойство что-то писать, то тут нужно вызывать метод motionDetected. Я тоже долго не мог понять почему ничего не работает. Самый простой костыль, это добавить в метод statusUpdated класса SMotions что-то типа:

Код:



 if 
($params['NEW_VALUE'] == '1'){
   $this -> callMethod('motionDetected');
}

 


Отправлено с моего SM-G850F через Tapatalk

Спасибо, как замудренно...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Чт фев 09, 2017 4:11 pm 
Не в сети

Зарегистрирован: Вс янв 01, 2017 8:32 pm
Сообщения: 312
Откуда: Москва
Благодарил (а): 7 раз.
Поблагодарили: 40 раз.
kostya066 писал(а):
Спасибо, как замудренно...


Это все новое, поэтому пока так. А так мне идея определенно нравится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Чт фев 09, 2017 4:22 pm 
Не в сети

Зарегистрирован: Вт янв 17, 2012 12:31 pm
Сообщения: 835
Благодарил (а): 92 раз.
Поблагодарили: 65 раз.
Парни, с разделом "Простые устройства" все уже предусмотрено....там вообще код не нужен, Сергей все внутри системы прописал, дабы облегчить задачу простым пользователям......У вас просто видимо автоматически не прописался выполнение метода при смене статуса...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые устройства / Simple Devices
СообщениеДобавлено: Чт фев 09, 2017 5:02 pm 
Не в сети

Зарегистрирован: Вс янв 01, 2017 8:32 pm
Сообщения: 312
Откуда: Москва
Благодарил (а): 7 раз.
Поблагодарили: 40 раз.
Vit писал(а):
Парни, с разделом "Простые устройства" все уже предусмотрено....там вообще код не нужен, Сергей все внутри системы прописал, дабы облегчить задачу простым пользователям......У вас просто видимо автоматически не прописался выполнение метода при смене статуса...


Неа. Для датчика движения statusUpdate:

Код:
 $tm=time();
 $this->setProperty('updated', $tm);
 $this->setProperty('updatedText', date('H:i', $tm));

 $this->setProperty('alive', 1);

 $alive_timeout=2*24*60*60; // 2 days alive timeout

 $ot=$this->object_title;

 setTimeout($ot.'_alive_timer', 'setGlobal("'.$ot.'.alive", 0);', $alive_timeout);


а вот motionDetected:

Код:
 $this->setProperty('status', 1);

 $motion_timeout=20; // seconds timeout
 $ot=$this->object_title;
 setTimeout($ot.'_motion_timer', 'setGlobal("'.$ot.'.status", 0);', $motion_timeout);

 $this->callMethod('logicAction');

 $linked_room=$this->getProperty('linkedRoom');

 if (getGlobal('NobodyHomeMode.active')) {
  callMethod('NobodyHomeMode.deactivate');
 }
 ClearTimeOut("nobodyHome"); 
 SetTimeOut
("nobodyHome","callMethod('NobodyHomeMode.activate');", 1*60*60);

 if ($linked_room) {
  callMethod($linked_room.'.onActivity', array('sensor'=>$ot));
 }


Видно, что для это типа предполагалось не связывать свойство status, а вызывать метод motionDetected. Это для большинства железа честно говоря неудобно.


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

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


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

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


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

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