Слайдер для Noolite

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Scoot
Сообщения: 9
Зарегистрирован: Вт окт 22, 2013 8:52 pm
Благодарил (а): 0
Поблагодарили: 0

Слайдер для Noolite

Сообщение Scoot » Вс окт 27, 2013 3:09 pm

Помогите разобраться плз.

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

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

В чём ошибка ? Из консоли работает, а тут ноль эфекта
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

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

Сообщение dmw » Вс окт 27, 2013 4:27 pm

Прав на запуск не хватает. Дайте их через консоль:
chmod a+s /usr/local/bin/noolite
Scoot
Сообщения: 9
Зарегистрирован: Вт окт 22, 2013 8:52 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Scoot » Вс окт 27, 2013 5:11 pm

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');
 }
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

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

Сообщение LutsenkoDenis » Вс окт 27, 2013 6:14 pm

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 посмотри каждую строку. Если всё совпадёт с рабочим вариантом, то гуд. :)
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Scoot
Сообщения: 9
Зарегистрирован: Вт окт 22, 2013 8:52 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Scoot » Вс окт 27, 2013 6:43 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 посмотри каждую строку. Если всё совпадёт с рабочим вариантом, то гуд. :)
Отличаются только тем, что в первом примере устанавливается мощность, а во втором вкл/выкл.
Насчёт if ($params['VALUE']) взял с сайта http://smartliving.ru/Main/Noolight (и под виндой это работало)
Попробовал ваш вариант. Не работает. На http://127.0.0.1/objects/?script=OnOffLustra пишет Request: &script=OnOffLustra Running script: OnOffLustraCommand unknown
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

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

Сообщение LutsenkoDenis » Вс окт 27, 2013 7:23 pm

я не говорил что $params['VALUE'] не будет работать, просто с помощью isset правильней проверять переменные на их существование.

> Running script: OnOffLustraCommand unknown, как бы говорит о том что скрипт не понял что вы от него хотите. или не нашел что делать с параметром OnOffLustra
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Scoot
Сообщения: 9
Зарегистрирован: Вт окт 22, 2013 8:52 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Scoot » Вс окт 27, 2013 8:00 pm

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']) (поскольку без него всё работает)
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

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

Сообщение LutsenkoDenis » Вс окт 27, 2013 9:24 pm

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'] и какая команда в итоге получается.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

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

Сообщение ErmolenkoM » Вс окт 27, 2013 9:52 pm

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

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

/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 - обращайтесь.
aka msh555
Cubian на Cubietruck, Connect
Scoot
Сообщения: 9
Зарегистрирован: Вт окт 22, 2013 8:52 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Scoot » Вс окт 27, 2013 9:56 pm

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