Страница 8 из 376

Re: Модуль Broadlink

Добавлено: Ср янв 25, 2017 8:35 pm
Ged
nick7zmail писал(а):Добавил поддержку A1 air и RM3 mini...
Позволю себе дополнить информацию.

Сделано обновление следующих свойств выбранного объекта:

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

air
air_quality
air_quality_word
humidity
light
light_word
lightstatus
luminosity
noise
noise_word
power
status
temperature
P.S. Внес в Wiki

Re: Модуль Broadlink

Добавлено: Ср янв 25, 2017 9:20 pm
slgeo
nick7zmail писал(а): Сейчас включены 2 способа запуска команд. Это объект.свойство и ссылка (выбираются в настройках)
1.jpg
Объект.свойство
1. В таблице команд нужно привязать команду к свойству любого объекта
2. Любым удобным методом (сценарий, объект.метод, голосовой шаблон, кнопка в интерфейсе и т.п.) поменять привязанное свойство на 1
3. Команда выполнится, и свойство снова скинется на 0
Хотел бы обсудить вот этот спорный момент...
Все же пара "объект.метод" видится более правильной, поскольку IR(RF)-командой выполняется какое-то конкретное действие.
При текущей реализации "объект.свойство" приходится плодить свойства такого рода: Play, Stop, Open, Close и т.д. Что на мой взгляд не совсем правильно с точки зрения ООП. Свойствами должны быть характеристики сущности, а методы - для выполнения действий или реакции на события.

Re: Модуль Broadlink

Добавлено: Ср янв 25, 2017 11:08 pm
Ged
Объект.метод не подходит, т.к. не понятно, кто же будет объектом.
На мой взгляд нормальный вариант объект(броадлинк).выполнить("имя команды при обучении").
Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.

Re: Модуль Broadlink

Добавлено: Ср янв 25, 2017 11:49 pm
slgeo
Ged писал(а):Объект.метод не подходит, т.к. не понятно, кто же будет объектом.
Не понял этой фразы
Ged писал(а): На мой взгляд нормальный вариант объект(броадлинк).выполнить("имя команды при обучении").
Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Так это уже реализовано через GetUrl, как раз на случай, если нет желания создавать объект.

Re: Модуль Broadlink

Добавлено: Чт янв 26, 2017 6:07 am
nick7zmail
igorewa писал(а): Открываю Данные и там пустота
SPOILERSPOILER_SHOW
Изображение
Да...забыл скрыть вкладку данные. Она только для RM, для записи команд.
Ged писал(а): Гм... А что именно делал? У меня вроде четко работает.
Делаю как в том посте после слов "На вскидку сделал так."
Сделал все, что в посте описано....оно может и работает, но помимо указанного IP, как и раньше, выплевывает в лог все девайсы, не только на указанном IP...не знаю с чем это связано, надо функцию discover капать в библиотеке.
Ged писал(а): А можно сделать, чтобы
$dev_broadlink->check_params("nameBrLink");
не записывал данные в какие-то свойства, а просто возвращал массив переменных?
И куда этот массив с данными девать?)) Простому обывателю не до кодинга на php...выбрал объект - циферка записалась в свойство...с этим то не все справляются)))
kas5858 писал(а): Вот что нашёл.
Fatal error: Class 'Broadlink' not found in /var/www/modules/dev_broadlink/dev_broadlink.class.php on line 350
Очень странно, видимо он не может подключить библиотеку из почасового цикла...при этом если запустить вручную эту же функцию - у вас все отрабатывает...реально странно....
Попробуйте строку

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

include_once 'broadlink.class.php'; 
Позаменять на

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

include_once('broadlink.class.php');
require_once 'broadlink.class.php';
require_once('broadlink.class.php');
require_once(DIR_MODULES.$this->name.'/broadlink.class.php');
include_once(DIR_MODULES.$this->name.'/broadlink.class.php');
 
Лучше наверное начать с конца...там прописан полный путь...может из-за этого...
slgeo писал(а): Хотел бы обсудить вот этот спорный момент...
Все же пара "объект.метод" видится более правильной, поскольку IR(RF)-командой выполняется какое-то конкретное действие.
При текущей реализации "объект.свойство" приходится плодить свойства такого рода: Play, Stop, Open, Close и т.д. Что на мой взгляд не совсем правильно с точки зрения ООП. Свойствами должны быть характеристики сущности, а методы - для выполнения действий или реакции на события.
С удовольствием обсудим))
С точки зрения ООП как раз все сходится. Мы воздействуем на модуль по средствам изменения свойств объектов. Активатором действия является смена свойства. А с методом - вы как себе это представляете???
Во-первых: в методе надо как минимум код городить, что уже усложняет работу простого пользователя.
Во-вторых: в случае объект.свойство вы можете поменять это свойство из любого методом вписав sg();
В-третьих: опять приведу пример с модулем noolite и ламой. Чтобы включить лампу нужно поменять свойство, к примеру, статус на 1, лампа включится, на 0 - выключится. Никакие методы при этом не надо запускать...тут то же, только команда односторонняя, и статус 0 сама возвращает после выполнения.
В-четвертых: Это единственный способ выполнения команд задействуя объекты системы, и почти с полным отсутствием кода со стороны пользователя, который я нашел. Если я не прав - просвятите - какой метод вы планируете запускать, и что в нем должно быть...там как минимум должны быть какие-то строки кода, которые пользователь должен вписать самолично, что для многих темный лес.
Ged писал(а): Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Могу забрать в релиз, если реально кому-то нужна данная функция.

Re: Модуль Broadlink

Добавлено: Чт янв 26, 2017 9:36 am
Ged
nick7zmail писал(а):
Ged писал(а): Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Могу забрать в релиз, если реально кому-то нужна данная функция.
Мне нужна. И по безопасности она правильнее, чем getURL (в случае необходимости авторизации не срабатывает.)

Re: Модуль Broadlink

Добавлено: Чт янв 26, 2017 11:33 am
olehs
Ged писал(а):
nick7zmail писал(а):
Ged писал(а): Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Могу забрать в релиз, если реально кому-то нужна данная функция.
Мне нужна. И по безопасности она правильнее, чем getURL (в случае необходимости авторизации не срабатывает.)
Могу предложить решение, которое реализовал у себя для работы с бриджем:
Есть класс BroadlinkRMPro. У него есть методы switchOn, switchOff, switch. Все они принимают параметр name.
Как это работает: при вызове метода объекта, например cm('RMProKitchen.switchOn', array("name"=>"Fan")) посылается команда, а свойство Fan принимает значение 1. Если свойства раньше не было - оно создается. Если свойство уже было равно 1 - команда не посылается.
Метод switchOff меняет свойство на 0, а switch - на противоположное. Есть еще метод send, который собственно только отсылает команду.

Re: Модуль Broadlink

Добавлено: Чт янв 26, 2017 11:39 am
nick7zmail
Отлично...А кто должен писать методы принимающие имена команд?

Отправлено с моего Redmi 4 через Tapatalk

Re: Модуль Broadlink

Добавлено: Чт янв 26, 2017 11:45 am
olehs
Модуль при инсталляции создавать класс с методами, нет?

Re: Модуль Broadlink

Добавлено: Чт янв 26, 2017 11:50 am
nick7zmail
olehs писал(а):Модуль при инсталляции создавать класс с методами, нет?
При инсталяции можно создать...но так как в метод передается ещё и параметр "имя_команды", метод должен содержать обработчик этих имен, и при добавлении новых команд его пополнять надо. И если после записи команды будет пополнятся - боюсь, что получится как с OpenWeather погодой, когда метод будет "засран" (простите за выражение) левым повторяющимся кодом...

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

А свойство с объектом выбрал из выпадающего списка, привязал к выключателю например - и работает без единой строчки кода.