Страница 1 из 3

Слайдер для Noolite

Добавлено: Вс окт 27, 2013 3:09 pm
Scoot
Помогите разобраться плз.

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

safe_exec('"/usr/local/bin/noolite -api -set_ch 1 -"'.$params['VALUE']);

В чём ошибка ? Из консоли работает, а тут ноль эфекта

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 4:27 pm
dmw
Прав на запуск не хватает. Дайте их через консоль:
chmod a+s /usr/local/bin/noolite

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 5:11 pm
Scoot
dmw писал(а):Прав на запуск не хватает. Дайте их через консоль:
chmod a+s /usr/local/bin/noolite
С правами всё нормально.
ради теста сделал кнопу с

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

echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -set_ch 1 50');
и это срабатывает


а вот это уже не работает

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

if ($params['VALUE']) {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -on_ch1');
} else {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -off_ch1');
 }

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 6:14 pm
LutsenkoDenis
Scoot писал(а):а вот это уже не работает

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

if ($params['VALUE']) {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -on_ch1');
} else {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -off_ch1');
 } 
Ну... вопервых не

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

if ($params['VALUE']) { 
a

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

if (isset($params['VALUE'])) { 
Во вторых у тебя в приведённых примерах отличаются комманды. визуально.

Попробуй вот так:

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

$param        = isset($params['VALUE']) ? ' -on_ch1' : ' -off_ch1';
$commandToRun = '/usr/bin/sudo /usr/local/bin/noolite -api' . $param;
echo exec($commandToRun); 
И с пом. DebMes посмотри каждую строку. Если всё совпадёт с рабочим вариантом, то гуд. :)

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 6:43 pm
Scoot
LutsenkoDenis писал(а):
Scoot писал(а):а вот это уже не работает

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

if ($params['VALUE']) {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -on_ch1');
} else {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -off_ch1');
 } 
Ну... вопервых не

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

if ($params['VALUE']) { 
a

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

if (isset($params['VALUE'])) { 
Во вторых у тебя в приведённых примерах отличаются комманды. визуально.

Попробуй вот так:

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

$param        = isset($params['VALUE']) ? ' -on_ch1' : ' -off_ch1';
$commandToRun = '/usr/bin/sudo /usr/local/bin/noolite -api' . $param;
echo exec($commandToRun); 
И с пом. DebMes посмотри каждую строку. Если всё совпадёт с рабочим вариантом, то гуд. :)
Отличаются только тем, что в первом примере устанавливается мощность, а во втором вкл/выкл.
Насчёт if ($params['VALUE']) взял с сайта http://smartliving.ru/Main/Noolight (и под виндой это работало)
Попробовал ваш вариант. Не работает. На http://127.0.0.1/objects/?script=OnOffLustra пишет Request: &script=OnOffLustra Running script: OnOffLustraCommand unknown

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 7:23 pm
LutsenkoDenis
я не говорил что $params['VALUE'] не будет работать, просто с помощью isset правильней проверять переменные на их существование.

> Running script: OnOffLustraCommand unknown, как бы говорит о том что скрипт не понял что вы от него хотите. или не нашел что делать с параметром OnOffLustra

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 8:00 pm
Scoot
LutsenkoDenis писал(а):я не говорил что $params['VALUE'] не будет работать, просто с помощью isset правильней проверять переменные на их существование.

> Running script: OnOffLustraCommand unknown, как бы говорит о том что скрипт не понял что вы от него хотите. или не нашел что делать с параметром OnOffLustra
Там и есть

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

if ($params['VALUE']) {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -on_ch1');
} else {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -off_ch1');
} 
Я честно говоря уже не понимаю куда копать :(
Поял только, что в $params['VALUE']) (поскольку без него всё работает)

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 9:24 pm
LutsenkoDenis
Scoot писал(а): Там и есть

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

if ($params['VALUE']) {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -on_ch1');
} else {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -off_ch1');
} 
Я честно говоря уже не понимаю куда копать :(
Поял только, что в $params['VALUE']) (поскольку без него всё работает)
Я конечно всё понимаю, но за весь разговор вы привели аж 4 разных примера кода который у вас то работает то нет.
А именно:

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

echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -set_ch 1 50'); 

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

if ($params['VALUE']) {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -on_ch1');
} else {
  echo exec('/usr/bin/sudo /usr/local/bin/noolite -api -off_ch1');
 } 

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

На http://127.0.0.1/objects/?script=OnOffLustra пишет Request: &script=OnOffLustra Running script: OnOffLustraCommand unknown     

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

safe_exec('"/usr/local/bin/noolite -api -set_ch 1 -"'.$params['VALUE']); 
Как они взаимосвязаны между собой понятно только вам и богу. Т.к. например с моей точки зрения это четыре практически разных кода которые между собой вообще никак не связаны.

В первом куске кода у вас все работает. Круто, но теперь нужно сравнить то что работает и то что не работает.

Во втором куске кода, там где $params['VALUE'], меняется только ключ. Т.е либо команда выполняется с ключом -on_ch1 или -off_ch1.
Как я уже говорил ранее, правильно в условии писать isset($params['VALUE']), т.к. php будет материться(варнингами) если переменная $params не объявлена ранее. На работоспособность это в нашем случае не влияет.
Исходя из этого:
1. сравниваем комманду из первого кусака кода и второго.
2. Смотрим есть ли у команды noolite, такой ключ как -on_ch1 или -off_ch1

Что делает пример из третьего куска кода для меня загадка.

В четвертом куске кода я бы посмотрел на то, какое значение получает $params['VALUE'] и какая команда в итоге получается.

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 9:52 pm
ErmolenkoM
Доброй ночи!
Ошибка в МИНУСЕ перед значением яркости. В виндовом варианте он нужен, в линуксовом - нет.
У вас работает:

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

/usr/bin/sudo /usr/local/bin/noolite -api -set_ch 1 50
И не работает:

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

safe_exec('"/usr/local/bin/noolite -api -set_ch 1 -"'.$params['VALUE']);
Будет работать:

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

safe_exec('"/usr/local/bin/noolite -api -set_ch 1 "'.$params['VALUE']);
Если нужны драйвера для RGB , или приемника RX - обращайтесь.

Re: Слайдер для Noolite

Добавлено: Вс окт 27, 2013 9:56 pm
Scoot
Простите, что навёл панику. Разобрался.
Косяк весь был в CTRL+C и CTRL+V.
Скопировал из http://smartliving.ru/Main/Noolight , а там нет пробелов . На сайте "-on_ch1" а должно быть "-on_ch 1"