Радио-управление nooLight

TiNNauR
Сообщения: 28
Зарегистрирован: Чт июн 30, 2016 5:58 pm
Благодарил (а): 18 раз
Поблагодарили: 0

Re: Радио-управление nooLight

Сообщение TiNNauR » Пн дек 12, 2016 12:49 am

Доброе время суток!
Еще раз обращаюсь к участникам форума. Пожалуйста! Может все таки кто-то знает в чем может быть проблема и может мне ответить. Мое предыдущее сообщение. Заранее большое спасибо!
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Радио-управление nooLight

Сообщение ErmolenkoM » Пн дек 12, 2016 8:48 pm

TiNNauR писал(а): Вот куда смотреть в этой уже ситуации, где копать? Заранее спасибо!)
Это вызов с передачей параметров

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

   
 // морская волна
    $this->callMethod('setColor',array("VALUE"=>'001000100100'));
Вот код setColor

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

$value = $params['VALUE'];
if ($value){
  $brightness=substr($value,0,3);
  $R=substr($value,3,3);
  $G=substr($value,6,3);
  $B=substr($value,9,3);
}else{
  $brightness=$params['brightness'];
  $R=$params['R'];
  $G=$params['G'];
  $B=$params['B'];
}
$this->setProperty('brightness',$brightness);  
$this->setProperty('R',$R);  
$this->setProperty('G',$G);  
$this->setProperty('B',$B);  
$this->callMethod('refresh');
Ну и в refresh RGB зачитаваются

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

$brightness=$this->getProperty("brightness");
$r=$this->getProperty("R");
$g=$this->getProperty("G");
$b=$this->getProperty("B");
Вот как-то так.
Последний раз редактировалось ErmolenkoM Вт дек 13, 2016 9:22 pm, всего редактировалось 1 раз.
За это сообщение автора ErmolenkoM поблагодарил:
TiNNauR (Ср дек 14, 2016 2:09 am)
Рейтинг: 1.18%
aka msh555
Cubian на Cubietruck, Connect
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Радио-управление nooLight

Сообщение ErmolenkoM » Пн дек 12, 2016 8:49 pm

удалено
Последний раз редактировалось ErmolenkoM Вт дек 13, 2016 9:23 pm, всего редактировалось 1 раз.
aka msh555
Cubian на Cubietruck, Connect
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Радио-управление nooLight

Сообщение ErmolenkoM » Пн дек 12, 2016 9:22 pm

удалено
Последний раз редактировалось ErmolenkoM Вт дек 13, 2016 9:23 pm, всего редактировалось 1 раз.
aka msh555
Cubian на Cubietruck, Connect
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Радио-управление nooLight

Сообщение Vit » Вт дек 13, 2016 11:25 am

TiNNauR писал(а):Доброе время суток!
Еще раз обращаюсь к участникам форума. Пожалуйста! Может все таки кто-то знает в чем может быть проблема и может мне ответить. Мое предыдущее сообщение. Заранее большое спасибо!
Здравствуйте...прочитал ваши сообщения и совсем запутался...так много всего и в итоге не понятно что именно не работает...

Канал управления, ставится в ручную, что касается Noolite.... остальное толком не понял что не работает...
За это сообщение автора Vit поблагодарил:
TiNNauR (Ср дек 14, 2016 2:09 am)
Рейтинг: 1.18%
TiNNauR
Сообщения: 28
Зарегистрирован: Чт июн 30, 2016 5:58 pm
Благодарил (а): 18 раз
Поблагодарили: 0

Re: Радио-управление nooLight

Сообщение TiNNauR » Ср дек 14, 2016 3:19 am

Всем доброе время суток! Огромное спасибо, что откликнулись и ответили, особенно Михаилу за его выдержку :) .
остальное толком не понял что не работает...
Сейчас постараюсь объяснить.
Как привел пример кода Михаил ( я сверил с тем, что у меня, может быть что-то упустил?) то, у меня так же и это все работает ( я может и не совсем разбираюсь в коде, но в этом я разобрался, это я понял, там понятно, что от куда берется и куда подставляется и как один метод вызывает другой и т.д. по цепочке) а не работает …..как раз метод sendCommand, ну, сам метод то работает, но с одним НО : - вот эта строчка
$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_value.' '.$g_value.' '.$b_value; , которые формируются в предыдущем методе refresh, их просто нет: в памяти, или в этом цикле( ну, или я не совсем правильно изъяснился) . Так вот, если в методе sendCommand перед этой строчкой, т.е., в самом начале, их(эти переменные) еще раз присвоить , типа так
$r_value =$this->getProperty("R");
$g_value =$this->getProperty("G");
$b_value =$this->getProperty("B");

То, метод полностью подставляет все значения и на выходе получается что-то типа
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)
И канал есть и цвет. В итоге цветовые часы работают. А если не присваивать, а оставить код метода без изменений, то ничего не происходит. Типа так:
22:00:06 DEBUG [root]: Executing: sleep 0.5; /usr/local/bin/noolitepc -api -set_color_ch 1 (at /var/www/lib/general.class.php:553)
Только канал, установок цвета нету. Вот и вопрос, почему оно не держит в памяти переменные , которые присвоило в предыдущем методе refresh? Как я ни пытался изменять метод refresh, какие переменные не присваивал - $r_value =$this->getProperty("R"); или $r=$this->getProperty("R"); а потом, конечно, соответственно менял в sendCommand ( чтоб было одинаково) то это никак не отображалось на выходе, sendCommand не работал, и только если изменить его код, как я писал выше ( в самом начале кода еще раз присвоить переменные) только тогда все работало как нужно.
Еще раз огромное всем спасибо!
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Радио-управление nooLight

Сообщение ErmolenkoM » Ср дек 14, 2016 10:20 am

TiNNauR писал(а): переменных .$r_value.' '.$g_value.' '.$b_value; , которые формируются в предыдущем методе refresh, их просто нет: в памяти, или в этом цикле( ну, или я не совсем правильно изъяснился)
переменные в PHP начинаются с символа $ и не требуют объявления и типизации. Но и живут (область видимости их) только локально. То есть один метод не видит переменные другого, поэтому используется трюк с передачей значений через свойства объекта.
За это сообщение автора ErmolenkoM поблагодарил:
TiNNauR (Чт дек 15, 2016 1:48 am)
Рейтинг: 1.18%
aka msh555
Cubian на Cubietruck, Connect
TiNNauR
Сообщения: 28
Зарегистрирован: Чт июн 30, 2016 5:58 pm
Благодарил (а): 18 раз
Поблагодарили: 0

Re: Радио-управление nooLight

Сообщение TiNNauR » Чт дек 15, 2016 2:23 am

Доброе время суток! Огромное спасибо за разъяснения!
То есть один метод не видит переменные другого, поэтому используется трюк с передачей значений через свойства объекта
Я так понял, что если нужно в каком-то методе оперировать с переменными данными, то их нужно просто вызвать в этом методе из свойства объекта, куда они заранее были занесены. Только как sendCommand работает у других людей, если у них в коде не присваиваются значения переменных?
сдесь
$cmdline='sleep 0.5; /usr/local/bin/noolitepc -api '.'-set_color_ch '.$this->getProperty("channel").' '.$r_value.' '.$g_value.' '.$b_value;
safe_exec($cmdline);

или сдесь - это с этого ErmolenkoM Заголовок сообщения: Re: Радио-управление nooLight Сообщение Добавлено: Пн янв 13, 2014 2:15 pm поста
$cmdline='sleep 0.5; /usr/local/bin/noolitepc -api '.$params['command'];
safe_exec($cmdline);

потому что у меня без заранее присвоения переменных в этом методе, увы, не работает. Еще раз спасибо!
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Радио-управление nooLight

Сообщение ErmolenkoM » Чт дек 15, 2016 9:31 am

TiNNauR писал(а): как sendCommand работает у других людей, если у них в коде не присваиваются значения переменных?
здесь вызов метода sendCommand с передачей параматра command

refresh

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

 $this->callMethod("sendCommand",array('command'=>'-set_color_ch '.$this->getProperty("channel").' '.$r_value.' '.$g_value.' '.$b_value));
здесь $params['command'] содержит переданное значение при вызове.

sendCommand

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

$cmdline='sleep 0.5; /usr/bin/noolitepc -api '.$params['command'];
safe_exec($cmdline);
За это сообщение автора ErmolenkoM поблагодарил:
TiNNauR (Пт дек 16, 2016 2:15 am)
Рейтинг: 1.18%
aka msh555
Cubian на Cubietruck, Connect
TiNNauR
Сообщения: 28
Зарегистрирован: Чт июн 30, 2016 5:58 pm
Благодарил (а): 18 раз
Поблагодарили: 0

Re: Радио-управление nooLight

Сообщение TiNNauR » Вс дек 25, 2016 11:02 pm

Привет еще раз всем участникам. Появился инет, и я решил поблагодарить всех за помощь!! Спасибо большое, натолкнули на мысль))). Подумал, сделал, получилось. Сейчас работает. Дальше буду ковырять и смотреть. Еще раз огромное спасибо!!
Ответить