[Модуль] Broadlink (dev_broadlink)

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

Модератор:immortal

olehs
Сообщения:1115
Зарегистрирован:Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза
Re: Модуль Broadlink

Сообщение olehs » Чт янв 26, 2017 12:01 pm

Не понимаю, методы ведь универсальны. Они и так выгребают команду из базы по имени. Зачем зашивать команды в методы? Вот как у меня.

Метод send

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

$mac = $this->getProperty('MAC');
$name = $params['name'];
$json = getUrl($this->getProperty('Proxy')."/sendCode?mac=$mac&name=$name", 0);
$res = json_decode($json);
return $res->code; 
Метод switch

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

$name = $params['name'];
$res = $this->callMethod("send", array("name"=>$name));
if($res == 0) {
  $val = $this->getProperty($name);
  $this->setProperty($name, $val == 1 ? 0 : 1);
}
return $res; 
Аватара пользователя
slgeo
Сообщения:551
Зарегистрирован:Чт фев 05, 2015 2:35 pm
Откуда:РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Модуль Broadlink

Сообщение slgeo » Чт янв 26, 2017 12:03 pm

nick7zmail писал(а): А свойство с объектом выбрал из выпадающего списка, привязал к выключателю например - и работает без единой строчки кода.
Вот тут и вопрос всплывает:
Например, свойство Status = 1 - включен, Status = 0 - выключен. Ты писал, что при отправке команды это свойство выставляется в 1, а потом в 0. Так как выключать то?
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
olehs
Сообщения:1115
Зарегистрирован:Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль Broadlink

Сообщение olehs » Чт янв 26, 2017 12:06 pm

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

А свойство с объектом выбрал из выпадающего списка, привязал к выключателю например - и работает без единой строчки кода.
По-моему Вы недооцениваете пользователей Мажордомо ;)
Объясню, почему я так сделал: вентилятор включается и выключается одной кнопкой пульта, а такая схема позволяет отслеживать состояние вентилятора на уровне объекта RM.
Думаю, для пользователей достаточно одного скриншота с настройкой кнопки с вызовом метода и он разберется
За это сообщение автора olehs поблагодарил:
Samir77 (Вт окт 16, 2018 3:29 pm)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения:7573
Зарегистрирован:Пн окт 28, 2013 8:14 am
Откуда:Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Чт янв 26, 2017 12:12 pm

slgeo писал(а): Например, свойство Status = 1 - включен, Status = 0 - выключен. Ты писал, что при отправке команды это свойство выставляется в 1, а потом в 0. Так как выключать то?
Не совсем так. Свойство создаем, например,
fun.turnON и fun.turnOFF...оба по-умолчанию =0. Надо включить - переключаем fun.turnON в 1, отправляется команда на включение, fun.turnON возвращается в 0, надо выключить fun.turnOFF в 1, и далее - аналогично. При этом вам никто не мешает сделать метод fun.turnONOFF с параметром , и в зависимости от параметра вызывать sg(fun.turnOFF, 1); или sg(fun.turnON, 1);...но это могут сделать более продвинутые пользователи..."простому люду" достаточно на кнопочке написать sg(fun.turnON, 1); для включения и на другой кнопочке sg(fun.turnOFF, 1); для выключения. С посылом в метод параметра - не спорю - чуть логичнее, но при этом гораздо больше кода...и как быть, если пользователь сам поломает код в методе? Плюс - если так делать - опять привязка к определенному объекту (без права выбора имени объекта)...сам так делал в модуле яндекс погоды, но не считаю, что это правильно. А тут любые объекты, любые свойства - выбирай не хочу))
За это сообщение автора nick7zmail поблагодарил:
Samir77 (Вт окт 16, 2018 3:30 pm)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
olehs
Сообщения:1115
Зарегистрирован:Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль Broadlink

Сообщение olehs » Чт янв 26, 2017 12:15 pm

nick7zmail писал(а):Плюс - если так делать - опять привязка к определенному объекту (без права выбора имени объекта)...сам так делал в модуле яндекс погоды, но не считаю, что это правильно. А тут любые объекты, любые свойства - выбирай не хочу))
В Погоде у Вас просто один объект с кодом, а здесь универсальный класс для типа устройства (RMPro, RM3), а объекты - это физические устройства Broadlink, создаваемые по discover и имена им дает пользователь
За это сообщение автора olehs поблагодарил:
slgeo (Чт янв 26, 2017 12:28 pm)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения:7573
Зарегистрирован:Пн окт 28, 2013 8:14 am
Откуда:Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Чт янв 26, 2017 12:27 pm

slgeo писал(а):
nick7zmail писал(а): А свойство с объектом выбрал из выпадающего списка, привязал к выключателю например - и работает без единой строчки кода.
Вот тут и вопрос всплывает:
Например, свойство Status = 1 - включен, Status = 0 - выключен. Ты писал, что при отправке команды это свойство выставляется в 1, а потом в 0. Так как выключать то?
В том же методе fun.turnONOFF, который я описал выше - ничего не мешает вам сделать третье свойство, не связанное с командой (fun.Status к примеру), которое как раз будет отслеживать "текущее" состояние. И кстати, если кто-то включит руками тот же вентилятор - сломается схема с хранением статуса) ибо нормальной обратной связи ни в РФ ни в ИР нету.
olehs писал(а): В Погоде у Вас просто один объект с кодом, а здесь универсальный класс для типа устройства (RMPro, RM3), а объекты - это физические устройства Broadlink, создаваемые по discover и имена им дает пользователь
Ну класс то определенный опять же...без права выбора имени)) А если его кто переименует - при апдейте новый создастся...
olehs писал(а): По-моему Вы недооцениваете пользователей Мажордомо ;)
Объясню, почему я так сделал: вентилятор включается и выключается одной кнопкой пульта, а такая схема позволяет отслеживать состояние вентилятора на уровне объекта RM.
Думаю, для пользователей достаточно одного скриншота с настройкой кнопки с вызовом метода и он разберется
Да не...я с уважением отношусь ко всем пользователям МД...но одно дело - люди, у которых МД уже лет 5 на нескольких серваках крутятся, а совсем другое - человек, который "скачал чтоб посмотреть", и тут его уже заставляют php коды на вызов метода писать)) Это во-первых отталкивает, во-вторых если таки не оттолкнуло - очень долго, с десятком скринов, объяснять приходится - как создать объект, зачем ему свойства/методы, и что он вообще делает))

И да, о чем вообще спорить, если я добавлю эту библиотеку viewtopic.php?p=43959#p43959, и её можно вписать в любой метод/скрипт и т.п. То же самое по факту, только не привязана ни к свойствам, ни к методам.
За это сообщение автора nick7zmail поблагодарил:
Samir77 (Вт окт 16, 2018 3:34 pm)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения:7573
Зарегистрирован:Пн окт 28, 2013 8:14 am
Откуда:Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Чт янв 26, 2017 1:28 pm

Возможно поторопился...Залил комит...Скорее всего поправит глюки с обновлением температуры...Те у кого не обновлялась ежечасно но обновлялась вручную - обновите модуль, понаблюдайте.

Отправлено с моего Redmi 4 через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
slgeo
Сообщения:551
Зарегистрирован:Чт фев 05, 2015 2:35 pm
Откуда:РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Модуль Broadlink

Сообщение slgeo » Чт янв 26, 2017 1:45 pm

Я понял, нам не хватает сущности запись (record) или массива (array) у объекта, чтобы поместить все команды одного устройства в него )
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
Ged
Сообщения:105
Зарегистрирован:Чт окт 20, 2016 10:59 pm
Благодарил (а): 1 раз
Поблагодарили: 7 раз

Re: Модуль Broadlink

Сообщение Ged » Чт янв 26, 2017 1:54 pm

olehs писал(а): универсальный класс для типа устройства (RMPro, RM3), а объекты - это физические устройства Broadlink, создаваемые по discover и имена им дает пользователь
С этой идеей согласен, и мне нравится мысль перетащить по возможности все из модулей в классы и объекты - это как-то нагляднее, что-ли. Но на сколько это адекватно еще не совсем понял.

Свойства - действительно очень удобны новичкам. Воткнул в кнопку изменение свойства в 1, и вот тебе в меню или сцене отдельные кнопки включения и выключения.

Действительно это выглядит как-то не совсем стандартно, но для кого-то будет очень удобно.
Команду хочу, и еще хотелось бы таки, все параметры получать в массив. Опять-таки, это для меня понятнее и прозрачнее, чем "оно раз в час обновляет свойства, какие сможет выдернуть" :-)
Аватара пользователя
nick7zmail
Сообщения:7573
Зарегистрирован:Пн окт 28, 2013 8:14 am
Откуда:Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Чт янв 26, 2017 2:09 pm

Ged писал(а): С этой идеей согласен, и мне нравится мысль перетащить по возможности все из модулей в классы и объекты - это как-то нагляднее, что-ли. Но на сколько это адекватно еще не совсем понял.
Дак под это по-идее изначально все заточено. Т.е. Создаешь класс (бродлинк к примеру), создаешь объекты(РМ, А1, СП2 и т.д.), идешь в модуль, добавляешь устройство РМ, к нему привязываешь объект РМ, устройство А1, объект А1...и т.д. Модуль играет роль хранилища настроек и апи-обращений к данным устройствам, и транслирует всё в свойства данных объектов...
Ged писал(а): Команду хочу, и еще хотелось бы таки, все параметры получать в массив. Опять-таки, это для меня понятнее и прозрачнее, чем "оно раз в час обновляет свойства, какие сможет выдернуть" :-)
Ну для начала не "какие сможет выдернуть", а все, которые обозначены в апи. Что вы будете делать с массивом данных? Мне вот просто интересно... Сделать то это не проблема...проблема применить)))пока не пойму зачем? Будет у вас с А1 массив $response={'temp':'24', 'hum':'56', 'noise':'1', 'qual':'2', 'lum':'3'}...ну и что с ним делать? Вы же эти значения по-любому по свойствам распихивать будете...А зачем это делать, если это за вас модуль уже делает?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить