Страница 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);