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

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

Модератор: immortal

Ged
Сообщения: 105
Зарегистрирован: Чт окт 20, 2016 10:59 pm
Благодарил (а): 1 раз
Поблагодарили: 7 раз

Re: Модуль Broadlink

Сообщение Ged » Ср янв 25, 2017 8:35 pm

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
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Модуль Broadlink

Сообщение slgeo » Ср янв 25, 2017 9:20 pm

nick7zmail писал(а): Сейчас включены 2 способа запуска команд. Это объект.свойство и ссылка (выбираются в настройках)
1.jpg
Объект.свойство
1. В таблице команд нужно привязать команду к свойству любого объекта
2. Любым удобным методом (сценарий, объект.метод, голосовой шаблон, кнопка в интерфейсе и т.п.) поменять привязанное свойство на 1
3. Команда выполнится, и свойство снова скинется на 0
Хотел бы обсудить вот этот спорный момент...
Все же пара "объект.метод" видится более правильной, поскольку IR(RF)-командой выполняется какое-то конкретное действие.
При текущей реализации "объект.свойство" приходится плодить свойства такого рода: Play, Stop, Open, Close и т.д. Что на мой взгляд не совсем правильно с точки зрения ООП. Свойствами должны быть характеристики сущности, а методы - для выполнения действий или реакции на события.
Последний раз редактировалось slgeo Ср янв 25, 2017 11:51 pm, всего редактировалось 1 раз.
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
Ged
Сообщения: 105
Зарегистрирован: Чт окт 20, 2016 10:59 pm
Благодарил (а): 1 раз
Поблагодарили: 7 раз

Re: Модуль Broadlink

Сообщение Ged » Ср янв 25, 2017 11:08 pm

Объект.метод не подходит, т.к. не понятно, кто же будет объектом.
На мой взгляд нормальный вариант объект(броадлинк).выполнить("имя команды при обучении").
Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Модуль Broadlink

Сообщение slgeo » Ср янв 25, 2017 11:49 pm

Ged писал(а):Объект.метод не подходит, т.к. не понятно, кто же будет объектом.
Не понял этой фразы
Ged писал(а): На мой взгляд нормальный вариант объект(броадлинк).выполнить("имя команды при обучении").
Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Так это уже реализовано через GetUrl, как раз на случай, если нет желания создавать объект.
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Чт янв 26, 2017 6:07 am

igorewa писал(а): Открываю Данные и там пустота
СпойлерПоказать
Изображение
Да...забыл скрыть вкладку данные. Она только для 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 писал(а): Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Могу забрать в релиз, если реально кому-то нужна данная функция.
За это сообщение автора nick7zmail поблагодарил:
Denis_k (Чт янв 26, 2017 8:50 am)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ged
Сообщения: 105
Зарегистрирован: Чт окт 20, 2016 10:59 pm
Благодарил (а): 1 раз
Поблагодарили: 7 раз

Re: Модуль Broadlink

Сообщение Ged » Чт янв 26, 2017 9:36 am

nick7zmail писал(а):
Ged писал(а): Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Могу забрать в релиз, если реально кому-то нужна данная функция.
Мне нужна. И по безопасности она правильнее, чем getURL (в случае необходимости авторизации не срабатывает.)
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль Broadlink

Сообщение olehs » Чт янв 26, 2017 11:33 am

Ged писал(а):
nick7zmail писал(а):
Ged писал(а): Сейчас в вики есть пример просто выполнить("имя команды"). Не очень удобно, что нужно подключать библиотеку, но вроде, вполне логично.
Могу забрать в релиз, если реально кому-то нужна данная функция.
Мне нужна. И по безопасности она правильнее, чем getURL (в случае необходимости авторизации не срабатывает.)
Могу предложить решение, которое реализовал у себя для работы с бриджем:
Есть класс BroadlinkRMPro. У него есть методы switchOn, switchOff, switch. Все они принимают параметр name.
Как это работает: при вызове метода объекта, например cm('RMProKitchen.switchOn', array("name"=>"Fan")) посылается команда, а свойство Fan принимает значение 1. Если свойства раньше не было - оно создается. Если свойство уже было равно 1 - команда не посылается.
Метод switchOff меняет свойство на 0, а switch - на противоположное. Есть еще метод send, который собственно только отсылает команду.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Чт янв 26, 2017 11:39 am

Отлично...А кто должен писать методы принимающие имена команд?

Отправлено с моего Redmi 4 через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль Broadlink

Сообщение olehs » Чт янв 26, 2017 11:45 am

Модуль при инсталляции создавать класс с методами, нет?
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Чт янв 26, 2017 11:50 am

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

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

А свойство с объектом выбрал из выпадающего списка, привязал к выключателю например - и работает без единой строчки кода.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить