Радио-управление nooLight
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Доброе время суток!
Еще раз обращаюсь к участникам форума. Пожалуйста! Может все таки кто-то знает в чем может быть проблема и может мне ответить. Мое предыдущее сообщение. Заранее большое спасибо!
Еще раз обращаюсь к участникам форума. Пожалуйста! Может все таки кто-то знает в чем может быть проблема и может мне ответить. Мое предыдущее сообщение. Заранее большое спасибо!
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
Это вызов с передачей параметровTiNNauR писал(а): Вот куда смотреть в этой уже ситуации, где копать? Заранее спасибо!)
Код: Выделить всё
// морская волна
$this->callMethod('setColor',array("VALUE"=>'001000100100'));
Код: Выделить всё
$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');
Код: Выделить всё
$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.16%
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
удалено
Последний раз редактировалось ErmolenkoM Вт дек 13, 2016 9:23 pm, всего редактировалось 1 раз.
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
удалено
Последний раз редактировалось ErmolenkoM Вт дек 13, 2016 9:23 pm, всего редактировалось 1 раз.
-
- Сообщения: 867
- Зарегистрирован: Вт янв 17, 2012 12:31 pm
- Благодарил (а): 121 раз
- Поблагодарили: 78 раз
Re: Радио-управление nooLight
Здравствуйте...прочитал ваши сообщения и совсем запутался...так много всего и в итоге не понятно что именно не работает...TiNNauR писал(а):Доброе время суток!
Еще раз обращаюсь к участникам форума. Пожалуйста! Может все таки кто-то знает в чем может быть проблема и может мне ответить. Мое предыдущее сообщение. Заранее большое спасибо!
Канал управления, ставится в ручную, что касается Noolite.... остальное толком не понял что не работает...
- Рейтинг: 1.16%
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Всем доброе время суток! Огромное спасибо, что откликнулись и ответили, особенно Михаилу за его выдержку
.
Как привел пример кода Михаил ( я сверил с тем, что у меня, может быть что-то упустил?) то, у меня так же и это все работает ( я может и не совсем разбираюсь в коде, но в этом я разобрался, это я понял, там понятно, что от куда берется и куда подставляется и как один метод вызывает другой и т.д. по цепочке) а не работает …..как раз метод 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 не работал, и только если изменить его код, как я писал выше ( в самом начале кода еще раз присвоить переменные) только тогда все работало как нужно.
Еще раз огромное всем спасибо!
![Smile :)](./images/smilies/icon_e_smile.gif)
Сейчас постараюсь объяснить.остальное толком не понял что не работает...
Как привел пример кода Михаил ( я сверил с тем, что у меня, может быть что-то упустил?) то, у меня так же и это все работает ( я может и не совсем разбираюсь в коде, но в этом я разобрался, это я понял, там понятно, что от куда берется и куда подставляется и как один метод вызывает другой и т.д. по цепочке) а не работает …..как раз метод 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 не работал, и только если изменить его код, как я писал выше ( в самом начале кода еще раз присвоить переменные) только тогда все работало как нужно.
Еще раз огромное всем спасибо!
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
переменные в PHP начинаются с символа $ и не требуют объявления и типизации. Но и живут (область видимости их) только локально. То есть один метод не видит переменные другого, поэтому используется трюк с передачей значений через свойства объекта.TiNNauR писал(а): переменных .$r_value.' '.$g_value.' '.$b_value; , которые формируются в предыдущем методе refresh, их просто нет: в памяти, или в этом цикле( ну, или я не совсем правильно изъяснился)
- За это сообщение автора ErmolenkoM поблагодарил:
- TiNNauR (Чт дек 15, 2016 1:48 am)
- Рейтинг: 1.16%
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Доброе время суток! Огромное спасибо за разъяснения!
сдесь
$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);
потому что у меня без заранее присвоения переменных в этом методе, увы, не работает. Еще раз спасибо!
Я так понял, что если нужно в каком-то методе оперировать с переменными данными, то их нужно просто вызвать в этом методе из свойства объекта, куда они заранее были занесены. Только как 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);
потому что у меня без заранее присвоения переменных в этом методе, увы, не работает. Еще раз спасибо!
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Радио-управление nooLight
здесь вызов метода sendCommand с передачей параматра commandTiNNauR писал(а): как sendCommand работает у других людей, если у них в коде не присваиваются значения переменных?
refresh
Код: Выделить всё
$this->callMethod("sendCommand",array('command'=>'-set_color_ch '.$this->getProperty("channel").' '.$r_value.' '.$g_value.' '.$b_value));
sendCommand
Код: Выделить всё
$cmdline='sleep 0.5; /usr/bin/noolitepc -api '.$params['command'];
safe_exec($cmdline);
- За это сообщение автора ErmolenkoM поблагодарил:
- TiNNauR (Пт дек 16, 2016 2:15 am)
- Рейтинг: 1.16%
-
- Сообщения: 28
- Зарегистрирован: Чт июн 30, 2016 5:58 pm
- Благодарил (а): 18 раз
- Поблагодарили: 0
Re: Радио-управление nooLight
Привет еще раз всем участникам. Появился инет, и я решил поблагодарить всех за помощь!! Спасибо большое, натолкнули на мысль))). Подумал, сделал, получилось. Сейчас работает. Дальше буду ковырять и смотреть. Еще раз огромное спасибо!!