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

не работают таймеры

Добавлено: Пт окт 19, 2018 7:45 pm
sega6549
помогите понять почему не работают таймеры есть такой код

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

$val = $this->getProperty("taim");
if (gg('motion_ulica.status')=='1') {
 clearTimeout("motion_ulica_timer"); // очищаем таймер
 $this->callMethod('turnOn');
} 
if (gg('motion_ulica.status')=='0') {
 setTimeOut("motion_ulica_timer","callMethod('motion_ulica.turnOff');", 10);
 } 
но спустя 10 секунд метод на выключение не срабатывает, причем сам метод работает если запустить вручную, и при этом точно такой же код на второй системе работает, на обоих машинах стоит винда 10

Re: не работают таймеры

Добавлено: Сб окт 20, 2018 1:33 pm
nightwind
motion_ulica.turnOff - тут ошибка скорее всего. сенсор движения не может сделать никакого turnOff. мотод турнофф надо вызывать у реле.
+ есть еще проблема с символами '-' и '_' в именнах объектов. похоже она пока не решена

Re: не работают таймеры

Добавлено: Сб окт 20, 2018 3:00 pm
sega6549
nightwind писал(а):
Сб окт 20, 2018 1:33 pm
motion_ulica.turnOff - тут ошибка скорее всего. сенсор движения не может сделать никакого turnOff. мотод турнофф надо вызывать у реле.
+ есть еще проблема с символами '-' и '_' в именнах объектов. похоже она пока не решена
Метод турнофф создан в датчике движения, так что тут вряд ли ошибка, точно так же работает на другом компе, а вот с именами проверю возможно дело как раз в знаках -_ , спасибо за наводку

Re: не работают таймеры

Добавлено: Сб окт 20, 2018 3:20 pm
skysilver
А у тебя точно дело доходит до строчки запуска таймера setTimeOut()? Проверяй-ка всю логику, а то есть сомнения.
Запущенные таймеры видно в X-Ray. Если твой там не появляется, значит косячишь с условиями.

Re: не работают таймеры

Добавлено: Сб окт 20, 2018 6:53 pm
sega6549
skysilver писал(а):
Сб окт 20, 2018 3:20 pm
А у тебя точно дело доходит до строчки запуска таймера setTimeOut()? Проверяй-ка всю логику, а то есть сомнения.
Запущенные таймеры видно в X-Ray. Если твой там не появляется, значит косячишь с условиями.
Доходит точно, если вместо вызова метода прописать например сказать что то то работает и говорит, не работает именно запуск метода

Re: не работают таймеры

Добавлено: Пн окт 22, 2018 1:22 am
xor

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

if (gg('motion_ulica.status')=='1') {
 clearTimeout("motion_ulica_timer"); // очищаем таймер
 $this->callMethod('turnOn');
} 
if (gg('motion_ulica.status')=='0') {
 setTimeOut("motion_ulica_timer","callMethod('motion_ulica.turnOff');", 10);
 } 
У вас как этот код запускается, по времени там или по событию какому?
Где он у вас прописан?
Вы включаете через ссылку на объект (как в классе)
$this->callMethod('turnOn');
а выключаете через явное указание объекта
callMethod('motion_ulica.turnOff').
Вы говорите, что ваш дд умеет что-то включать/выключать, что довольно оригинально.


Трудно догадаться, что у Вас на уме)), а тем более что-либо посоветовать.

Re: не работают таймеры

Добавлено: Пн окт 22, 2018 6:18 am
sega6549
xor писал(а):
Пн окт 22, 2018 1:22 am

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

if (gg('motion_ulica.status')=='1') {
 clearTimeout("motion_ulica_timer"); // очищаем таймер
 $this->callMethod('turnOn');
} 
if (gg('motion_ulica.status')=='0') {
 setTimeOut("motion_ulica_timer","callMethod('motion_ulica.turnOff');", 10);
 } 
У вас как этот код запускается, по времени там или по событию какому?
Где он у вас прописан?
Вы включаете через ссылку на объект (как в классе)
$this->callMethod('turnOn');
а выключаете через явное указание объекта
callMethod('motion_ulica.turnOff').
Вы говорите, что ваш дд умеет что-то включать/выключать, что довольно оригинально.


Трудно догадаться, что у Вас на уме)), а тем более что-либо посоветовать.
Создаём клас для датчиков движения, в нем все датчики по комнатам, датчик улица датчик Кухня, датчик ванная, ну и так далее, как в свойства статус приходит 1 то запускается метод этот, в нем вся логика отрабатывается, явное указание метода только потому что в таймере не поддерживается ссылка на объект, и только по тому, часть с включением отрабатывается, а вот выключение не происходит, причём если вместо запуска метода прописать например сказать привет то таймер работает, не работает именно запуск метода тут

Re: не работают таймеры

Добавлено: Вт окт 23, 2018 12:51 am
xor
sega6549 писал(а):
Пн окт 22, 2018 6:18 am
...явное указание метода только потому что в таймере не поддерживается ссылка на объект...
нет, это неверное утверждение.

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

$ot=$this->object_title;
$alive_timeout=(int)$this->getProperty("aliveTimeOut");
if (!$alive_timeout) {
 $alive_timeout=15*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); 
sega6549 писал(а):
Пн окт 22, 2018 6:18 am
...Создаём клас для датчиков движения... в нем вся логика отрабатывается...
В классе у Вас прописан запуск метода объекта?
С say это пройдет, а если сработает датчик на кухне, свет будет включаться/выключаться на улице?

Re: не работают таймеры

Добавлено: Вт окт 23, 2018 1:00 am
sega6549
sega6549 писал(а):
Пн окт 22, 2018 6:18 am
...Создаём клас для датчиков движения... в нем вся логика отрабатывается...
В классе у Вас прописан запуск метода объекта?
С say это пройдет, а если сработает датчик на кухне, свет будет включаться/выключаться на улице?
[/quote]

говорю же все работает на одной машине, а вот на второй точно так же сделано но именно таймер не отрабатывает, по таймеру должен запускаться метод на выключение света, в методе просто 0 передается свойству объекта и все. ни чего там такого нет, не работает именно вот эта строчка setTimeOut("motion_ulica_timer","callMethod('motion_ulica.turnOff');", 10);
сори что опублшиковал вопрос в не в том разделе, больше этого не повториться(

Re: не работают таймеры

Добавлено: Вт окт 23, 2018 8:53 am
Chainik
sega6549 писал(а):
Вт окт 23, 2018 1:00 am
...не работает именно вот эта строчка setTimeOut("motion_ulica_timer","callMethod('motion_ulica.turnOff');", 10);
...
Может попробовать вид кавычек поменять. Т.е.

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

setTimeOut('motion_ulica_timer','callMethod("motion_ulica.turnOff");',10);