Радио-управление nooLight
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Доброе время суток всем участникам форума!
Помогите разобраться в чем проблема.
Свет НооЛайт. Пока есть два силовых блока. Один RGB-контроллер привязан на канал 1, и второй диммируемый привязан на канал 2. Если подавать команду
pi@raspberrypi:~ $ /usr/local/bin/noolitepc -api -off_ch 2
pi@raspberrypi:~ $ /usr/local/bin/noolitepc -api -off_ch 1
все работает, а также через МД
exec("noolitepc -api -on_ch 1"); при привязке этой строчки к кнопкам, а этой
exec('noolitepc -api -set_ch 1 '.$params['VALUE']); к слайдеру все прекрасно работает
Но, попробовал сделать разноцветный свет в коридоре, как упоминается в теме, и увы, не работает. Смотрел CONNECT(57)- msh555, и CONNECT(1)- SergeJey, скопировал все от туда, создал пока два объекта Свойства, методы, скопировал с выше указанных CONNECTов
Завел еще в УСТРОЙСТВАх в Noolite следующее: Данные такие: Может я не совсем прав, но, я не понимаю как отправляется команда? Какому силовому блоку? В строчке exec("noolitepc -api -on_ch 1"); все понятно, блоку(каналу) №1, а вот если этой строчки нет, то….. не совсем понятно. Или объясните логику, где я делаю не так, или где еще нужно что-то добавить, ( свойства, объекты, и т.д.) Заранее спасибо!
Помогите разобраться в чем проблема.
Свет НооЛайт. Пока есть два силовых блока. Один RGB-контроллер привязан на канал 1, и второй диммируемый привязан на канал 2. Если подавать команду
pi@raspberrypi:~ $ /usr/local/bin/noolitepc -api -off_ch 2
pi@raspberrypi:~ $ /usr/local/bin/noolitepc -api -off_ch 1
все работает, а также через МД
exec("noolitepc -api -on_ch 1"); при привязке этой строчки к кнопкам, а этой
exec('noolitepc -api -set_ch 1 '.$params['VALUE']); к слайдеру все прекрасно работает
Но, попробовал сделать разноцветный свет в коридоре, как упоминается в теме, и увы, не работает. Смотрел CONNECT(57)- msh555, и CONNECT(1)- SergeJey, скопировал все от туда, создал пока два объекта Свойства, методы, скопировал с выше указанных CONNECTов
Завел еще в УСТРОЙСТВАх в Noolite следующее: Данные такие: Может я не совсем прав, но, я не понимаю как отправляется команда? Какому силовому блоку? В строчке exec("noolitepc -api -on_ch 1"); все понятно, блоку(каналу) №1, а вот если этой строчки нет, то….. не совсем понятно. Или объясните логику, где я делаю не так, или где еще нужно что-то добавить, ( свойства, объекты, и т.д.) Заранее спасибо!
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
Приятно, когда кто-то смотрит твой коннектTiNNauR писал(а): я не понимаю как отправляется команда? Какому силовому блоку? В строчке exec("noolitepc -api -on_ch 1"); все понятно, блоку(каналу) №1, а вот если этой строчки нет, то….. не совсем понятно. Или объясните логику, где я делаю не так, или где еще нужно что-то добавить, ( свойства, объекты, и т.д.) Заранее спасибо!
Первое. Какие бы ни были объекты и методы, конец всегда один: exec("noolitepc -api -on_ch 1");, ну или подобная команда. Поэтому городить огород из свойств и методов - преждевременно.
Сначала нужно убедиться что мы умеем устанавливать нужный цвет вручную из ПХП.
Я (msh555) и SergeJey используем разные драйвера, так что могу говорить только про свой. У меня так:
Код: Выделить всё
$cmdline='sleep 0.5; /usr/bin/noolitepc -api '.'-set_color_ch '.$this->getProperty("channel").' '.$r_value.' '.$g_value.' '.$b_value;
safe_exec($cmdline);
- За это сообщение автора ErmolenkoM поблагодарил:
- TiNNauR (Ср ноя 30, 2016 6:57 am)
- Рейтинг: 1.16%
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Радио-управление nooLight
У меня в коннекте довольно старый код -- постепенно перехожу на модуль Noolite, который доступен из маркета. В это модуле реализована поддержка как Windows, так и Linux-драйверов, плюс в нём не надо вызывать методы Refresh и вообще выделять отдельный класс под ноолайт-блоки. Для цвета там используется отдельная команда, совместимая по формату с селектором цвета для меню.
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Ха, у людей, кто придумал и создал МД, кто написал сам дрова на приемник под линуха, ….. стОит чему то поучиться. По крайней мере, посмотреть что они уже сделали, и как?, а уж потом, если не понятно, то задать пару вопросов.)Приятно, когда кто-то смотрит твой коннект
Но, так как сейчас я в контракте, и не всегда есть инет(до этого постарался скачать сайты http://majordomo.smartliving.ru и http://connect.smartliving.ru, на свой ноут, но скачалось не полностью, некоторые темы только на половину, так что не все могу прочитать ) то задать вопросы тоже не всегда получается.
Спасибо за ответ, воспользуюсь ситуацией пока есть инет и сразу задам следующий вопрос. Сори.
Вы пишите:
Это то я понимаю, как я и писал, если эту строчку вбивать в код на кнопку, ну или в сценарий, а потом выполнить этот сценарий, то все работает.конец всегда один: exec("noolitepc -api -on_ch 1");
Но, к этому концу, видимо , моя система не приходит)))) и я вместе с ней)).
В итоге, на выходе подстановок всех переменных должна получиться именно такая строчка. И вот вопрос: Если рассмотреть мою строчку
pi@raspberrypi:~ $ /usr/local/bin/noolitepc -api -off_ch 1
и ту, что Вы прислали , как пример( она у меня тоже есть, это родительский метод всего класса NooLite, только она у меня такая:
$cmdline='sleep 0.5; /usr/bin/noolitepc -api '.$params['command'];
safe_exec($cmdline); )
Если я правильно понял, то: в строчку забиты переменные, они по очереди подставляются и в итоге получается, да, то, что Вы написали, но…по ходу, у меня получается, что все есть кроме указания канала( на рис. Какой именно канал). Вот где оно берется, от куда, как система подставляет это значение, или я его должен ей где-то указать?
Наверное, не умеем мы(((.Сначала нужно убедиться что мы умеем устанавливать нужный цвет вручную из ПХП.
От куда это взялось я то понял, поднимаясь вверх по методам к родительскому, а вот может нужно для RGB указать свой sendCommand?И что бы было понятно откуда это взялось: setColor зовет refresh, он зовет sendCommand(у класса NooLite)
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
Эта функция возвращает значение свойства объектаTiNNauR писал(а): все есть кроме указания канала( на рис. Какой именно канал). Вот где оно берется, от куда, как система подставляет это значение, или я его должен ей где-то указать?
Код: Выделить всё
$this->getProperty("channel")
http://majordomo.smartliving.ru/Main/Pr ... gFunctions
- За это сообщение автора ErmolenkoM поблагодарил:
- TiNNauR (Чт дек 01, 2016 6:41 am)
- Рейтинг: 1.16%
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Я извиняюсь, но, еще раз здравствуйте!)))
Значится так, попробовал сделать такое : в меню управления сделал слайдер,настройки такие: на код слайдера вбил вот это, для проверки:
safe_exec(' /usr/local/bin/noolitepc -api -set_ch 1 '.$params['VALUE']);
результат – работает, меняет яркость.
Поменял строчку на :
safe_exec(' /usr/local/bin/noolitepc -api -set_ch' .$this->getProperty("channel")' '.$params['VALUE']);
результат-не работает, игрался с кавычками и пробелами, никак.
при этом в свойстве объекта указал канал 1 Ну и ошибка
23:12:31 DEBUG [root]: Error menu item code: safe_exec(' /usr/local/bin/noolitepc -api -set_ch' .$this->getProperty("channel")' '.$params['VALUE']); (at /var/www/lib/general.class.php:553)
В какую сторону подскажите двигаться? Или я опять не правильно все понял? Если не работает вот это, то и остальное( цвет и т.д не будет работать). Заранее спасибо!
Значится так, попробовал сделать такое : в меню управления сделал слайдер,настройки такие: на код слайдера вбил вот это, для проверки:
safe_exec(' /usr/local/bin/noolitepc -api -set_ch 1 '.$params['VALUE']);
результат – работает, меняет яркость.
Поменял строчку на :
safe_exec(' /usr/local/bin/noolitepc -api -set_ch' .$this->getProperty("channel")' '.$params['VALUE']);
результат-не работает, игрался с кавычками и пробелами, никак.
при этом в свойстве объекта указал канал 1 Ну и ошибка
23:12:31 DEBUG [root]: Error menu item code: safe_exec(' /usr/local/bin/noolitepc -api -set_ch' .$this->getProperty("channel")' '.$params['VALUE']); (at /var/www/lib/general.class.php:553)
В какую сторону подскажите двигаться? Или я опять не правильно все понял? Если не работает вот это, то и остальное( цвет и т.д не будет работать). Заранее спасибо!
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
TiNNauR писал(а): в меню управления сделал слайдер,настройки такие:
на код слайдера вбил вот это, для проверки:
safe_exec(' /usr/local/bin/noolitepc -api -set_ch 1 '.$params['VALUE']);
результат – работает, меняет яркость.
Поменял строчку на :
safe_exec(' /usr/local/bin/noolitepc -api -set_ch' .$this->getProperty("channel")' '.$params['VALUE']);
Код: Выделить всё
$this->getProperty("channel")
Для вызова из меню нужно использовать
Код: Выделить всё
gg('Имя_объекта.Имя_свойства');
- За это сообщение автора ErmolenkoM поблагодарил:
- TiNNauR (Пт дек 02, 2016 5:28 am)
- Рейтинг: 1.16%
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Приветствую всех участников форума.
Опять обращаюсь за помощью. Наверное, уже надоел?))). Значит , так
$this->getProperty("channel"). не подставляет значение канала в .....как Вы уже писали - в конце должно быть это...
Если можно, пожалуйста, помогите разобраться, опишите как настроить: и свойства объекта( может там что-то я не добавил, а для Вас это очевидные вещи). Может еще где какие настройки. В общем куда смотреть и что и как должно быть, чтобы они работали ( ну и вообще НооЛайт) через методы.
Типа:
1, должно быть в таких настройках такое.
2. Должно в св-вах быть это.
3. В объекте должны быть такие методы и свойства.
4. И т.д.
И , потом, еще, как и где проверить что это или что-то еще не работает.
Debug выдал следующее:
22:00:06 DEBUG [root]: Executing: sleep 0.5; /usr/local/bin/noolitepc -api -set_color_ch 100 (at /var/www/lib/general.class.php:553)
22:00:02 DEBUG [root]: Executing (exclusive): echo "включаю цветовые часы в коридоре" | RHVoice-test -p Anna+CLB (at /var/www/lib/general.class.php:553)
Заранее, большое спасибо!
Опять обращаюсь за помощью. Наверное, уже надоел?))). Значит , так
Следовательно, для проверки: ставил команду say(); в каждом методе перед его кодом и потом в конце, чтоб убедиться в…Код:
$this->getProperty("channel")
Эта штука работает только в коде методов объекта.
…в этом. Все работает, вродь, как и должно. Всегда Алиса проговаривает фразу, и даже если строчка say(); в конце метода sendCommand. И, даже проговаривает каждый час( когда срабатывает скрипт проверки времени и изменения цвета). Но, цветовые часы как не работали, так и не работают. Посему, видимо я задаю не совсем корректно вопрос. Приведу пример( это как автомобиль – можно рассказывать часами о том, как тепловая энергия топлива преобразуется в механическую, дальше передается трансмиссией на колеса и дальше благодаря силе трения машина едет) это теория. Но, если не рассказать, что нужно открыть дверь, сесть за руль, вставить ключ зажигания, завести двигатель, проделать необходимые манипуляции с трансмиссией то, машина и дальше будет стоять на месте. Вот так и я стою на месте, теория есть, а что нужно сделать чтобы они заработали, не знаю, потому как пробую почти в слепую что-то делать. Там что-то менять, там что-то менять. И не знаю где правильно, потому что если бы знал что именно так, то уже б копался ПОЧЕМУ не работает. Почти уверен, что не работает именно эта строчкаИ что бы было понятно откуда это взялось: setColor зовет refresh, он зовет sendCommand(у класса NooLite)
$this->getProperty("channel"). не подставляет значение канала в .....как Вы уже писали - в конце должно быть это...
по видимому, в конце этого не получается((конец всегда один: exec("noolitepc -api -on_ch 1");, ну или подобная команда.
Если можно, пожалуйста, помогите разобраться, опишите как настроить: и свойства объекта( может там что-то я не добавил, а для Вас это очевидные вещи). Может еще где какие настройки. В общем куда смотреть и что и как должно быть, чтобы они работали ( ну и вообще НооЛайт) через методы.
Типа:
1, должно быть в таких настройках такое.
2. Должно в св-вах быть это.
3. В объекте должны быть такие методы и свойства.
4. И т.д.
И , потом, еще, как и где проверить что это или что-то еще не работает.
Debug выдал следующее:
22:00:06 DEBUG [root]: Executing: sleep 0.5; /usr/local/bin/noolitepc -api -set_color_ch 100 (at /var/www/lib/general.class.php:553)
22:00:02 DEBUG [root]: Executing (exclusive): echo "включаю цветовые часы в коридоре" | RHVoice-test -p Anna+CLB (at /var/www/lib/general.class.php:553)
Заранее, большое спасибо!
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
Учитесь отлаживать программу. Это полезный навык, наряду с программированием. В общих чертах: делим код на логические блоки, проверяем, что каждый блок работает как задумывалось. При необходимости, на время отладки упрощаем блоки, добавляем отладочную информацию. Таким образом ВСЕГДА можно конкретизировать ошибку и обычно этого достаточно для того что бы понять как ее исправить. Добавление отладочной информации позволяет решить две задачи: узнать что и в каком порядке выполняется(иногда вызов пра-родительских методов неочевиден) и второе - увидеть какие значения параметров и переменных используются и передаются. Проще всего отладочную инфу выводить так:TiNNauR писал(а): Опять обращаюсь за помощью.
...
Код: Выделить всё
say('ИмяМетода_или_другие_понятные_слова а='.gg('блаблаобъект.а').' $peremennaya='.$peremennaya);
Ну и в заключение.
попробуйте в терминале выполнить /usr/local/bin/noolitepc -api -set_color_ch 100 скорее всего не заработает. Должно быть что-то типаDebug выдал следующее:
22:00:06 DEBUG [root]: Executing: sleep 0.5; /usr/local/bin/noolitepc -api -set_color_ch 100 (at /var/www/lib/general.class.php:553)
Код: Выделить всё
/usr/local/bin/noolitepc -api -set_color_ch 1 100 100 100
разберитесь почему нет канала и где еще 2 цвета. Отладка вам в помощь.
ну и попробуйте воспользоваться советом Сергея - используйте модуль.
- За это сообщение автора ErmolenkoM поблагодарил:
- TiNNauR (Сб дек 03, 2016 2:08 am)
- Рейтинг: 1.16%
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Всем доброе время суток! Опять вопрос ко всем участникам форума.
01:00:05 DEBUG [root]: Executing: sleep 0.5; /usr/local/bin/noolitepc -api -set_color_ch 1 (at /var/www/lib/general.class.php:553)
Еще раз спасибо!
Канал появился, а вот переменных значений цвета – нету. Заметил такое. Если в методе sendCommand добавить в начало такие строчки
$r_value =$this->getProperty("R");
$g_value =$this->getProperty("G");
$b_value =$this->getProperty("B");
т.е. поставить их перед этой строчкой
$cmdline='sleep 0.5; /usr/local/bin/noolitepc -api '.'-set_color_ch '.$this->getProperty("channel").' '.$r_value.' '.$g_value.' '.$b_value;
safe_exec($cmdline);
то в итоге ( значения R,G,B из свойства объекта присваиваются переменным $r_value, $g_value, $b_value ) выполняется команда и все работает. А если нет, то нет. Предполагаю, что , не знаю как точно выразиться, но: после последнего метода , в данном случае метода -refresh ( там эти переменные формируются таким путем
$r_value=round((255*$r/$sum)*$brightness/100);)
, значения переменных не держаться в памяти, и оно их ПРОСТО не подставляет, потому что в памяти нет значений переменных( может я не прав, может не совсем понимаю логику программирования и не правильно объяснил), но если в конце метода sendCommand написать следующее say($r_value,3); без принудительной подстановки переменных , то DEBUG пишет следующее:
01:00:10 DEBUG [root]: Executing (exclusive): echo "" | RHVoice-test -p Anna+CLB (at /var/www/lib/general.class.php:553) пустые кавычки, нету ничего.
А если принудительно присвоить переменным значения, то
20:27:01 DEBUG [root]: Executing: sleep 0.5; /usr/local/bin/noolitepc -api -set_color_ch 1 000 050 100 (at /var/www/lib/general.class.php:553)
20:26:58 DEBUG [root]: Executing (exclusive): echo "000" | RHVoice-test -p Anna+CLB (at /var/www/lib/general.class.php:553) .цвет меняется, часы работают, все проговаривает.
Вот куда смотреть в этой уже ситуации, где копать? Заранее спасибо!).
И еще вопрос по поводу цвета, можно же обойтись и без такой затейливой процедуры формирования цвета
$r_value=round((255*$r/$sum)*$brightness/100);)
Просто изначально задать цвет в формате 000 000 000( имея ввиду значения от 0до 255). Цвет выбрать, на пример, в ворде или екселе, там есть цветовая шкала, она пишет значения цвета, типа так, выбрал цвет, посмотрел в значения RGB и вставил в метод check. А если через слайдер смотреть, то в настройках слайдера выбрать мин.зн.0 а макс.зн. 255
Вот как раз если захардкодить значения, то все получается. Одним словом, по-простому все работает, вот хотелось бы сделать что-то не простое, зачем тогда все эти возможности( я смотрел CONNECTы других людей и видел, что у них может Алиса) если их не использовать.Ну и еще совет - старайтесь идти от простого к сложному. Сделайте ПРОСТО. Не нужны вам наследование и прочее. Создайте ОДИН класс. В нем один объект. Значения захардкодьте в метод.
Прошу меня извинить, но я инженер-механик, и, некоторые вещи, которые очевидны для других людей, для меня - первый раз вижу и слышу( информатика была только в школе). Посему поступаю как умею, копирую к себе код и настройки других людей у которых работает, и потом методом тыка и изменения некоторых величин и переменных( до этого пытаюсь разобраться методом логики хоть что это за величины ) смотрю что меняется в итоге, и на что же они все таки влияют. Может этот путь не легкий и не совсем правильный, но по другому я не умею, к сожалению. Вот и приходится задавать , может , глупые вопросы. Сейчас ситуация такаяУчитесь отлаживать программу. Это полезный навык, наряду с программированием.
01:00:05 DEBUG [root]: Executing: sleep 0.5; /usr/local/bin/noolitepc -api -set_color_ch 1 (at /var/www/lib/general.class.php:553)
Еще раз спасибо!
Канал появился, а вот переменных значений цвета – нету. Заметил такое. Если в методе sendCommand добавить в начало такие строчки
$r_value =$this->getProperty("R");
$g_value =$this->getProperty("G");
$b_value =$this->getProperty("B");
т.е. поставить их перед этой строчкой
$cmdline='sleep 0.5; /usr/local/bin/noolitepc -api '.'-set_color_ch '.$this->getProperty("channel").' '.$r_value.' '.$g_value.' '.$b_value;
safe_exec($cmdline);
то в итоге ( значения R,G,B из свойства объекта присваиваются переменным $r_value, $g_value, $b_value ) выполняется команда и все работает. А если нет, то нет. Предполагаю, что , не знаю как точно выразиться, но: после последнего метода , в данном случае метода -refresh ( там эти переменные формируются таким путем
$r_value=round((255*$r/$sum)*$brightness/100);)
, значения переменных не держаться в памяти, и оно их ПРОСТО не подставляет, потому что в памяти нет значений переменных( может я не прав, может не совсем понимаю логику программирования и не правильно объяснил), но если в конце метода sendCommand написать следующее say($r_value,3); без принудительной подстановки переменных , то DEBUG пишет следующее:
01:00:10 DEBUG [root]: Executing (exclusive): echo "" | RHVoice-test -p Anna+CLB (at /var/www/lib/general.class.php:553) пустые кавычки, нету ничего.
А если принудительно присвоить переменным значения, то
20:27:01 DEBUG [root]: Executing: sleep 0.5; /usr/local/bin/noolitepc -api -set_color_ch 1 000 050 100 (at /var/www/lib/general.class.php:553)
20:26:58 DEBUG [root]: Executing (exclusive): echo "000" | RHVoice-test -p Anna+CLB (at /var/www/lib/general.class.php:553) .цвет меняется, часы работают, все проговаривает.
Вот куда смотреть в этой уже ситуации, где копать? Заранее спасибо!).
И еще вопрос по поводу цвета, можно же обойтись и без такой затейливой процедуры формирования цвета
$r_value=round((255*$r/$sum)*$brightness/100);)
Просто изначально задать цвет в формате 000 000 000( имея ввиду значения от 0до 255). Цвет выбрать, на пример, в ворде или екселе, там есть цветовая шкала, она пишет значения цвета, типа так, выбрал цвет, посмотрел в значения RGB и вставил в метод check. А если через слайдер смотреть, то в настройках слайдера выбрать мин.зн.0 а макс.зн. 255