Страница 2 из 3

Re: Постоянное проговаривание свойства.

Добавлено: Пт фев 28, 2020 2:20 pm
Denis_k
xor писал(а): Чт фев 27, 2020 10:52 pm писал по памяти, а её нету(

$params['NEW_VALUE'] , $params['OLD_VALUE']
отлично, спасибо, такая конструкция работает

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

If($params['NEW_VALUE']<>$params['OLD_VALUE'])
{
$open=gg("OpenClose01.status");
if ($open==1) 
{say ("Входная дверь закрыта",2);
}
else 
{say ("Входная дверь открыта",2);
}
}

Re: Постоянное проговаривание свойства.

Добавлено: Вс мар 01, 2020 10:52 am
xor
Denis_k писал(а): Пт фев 28, 2020 2:20 pm
xor писал(а): Чт фев 27, 2020 10:52 pm писал по памяти, а её нету(

$params['NEW_VALUE'] , $params['OLD_VALUE']
отлично, спасибо, такая конструкция работает

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

If($params['NEW_VALUE']<>$params['OLD_VALUE'])
{
$open=gg("OpenClose01.status");
if ($open==1) 
{say ("Входная дверь закрыта",2);
}
else 
{say ("Входная дверь открыта",2);
}
}
ну, можно подсократить, тут $params['NEW_VALUE'] у вас и есть новое значение OpenClose01.status

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

If($params['NEW_VALUE']<>$params['OLD_VALUE'])
{
if ($params['NEW_VALUE']==1) 
{say ("Входная дверь закрыта",2);
}
else 
{say ("Входная дверь открыта",2);
}
}

Re: Постоянное проговаривание свойства.

Добавлено: Вс мар 01, 2020 1:54 pm
madbob
Chainik писал(а): Чт фев 27, 2020 5:10 pm Скорее всего при while у вас "набросало" сообщений в очередь и будет проговаривать до второго пришествия (хотя сам метод фактически закончил выполнение).
Попробуйте, как правильно подсказали, добавить в код строчку с SetTimeOut, скажем, с 10-секундной задержкой выполнения).

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

If  ($this->getProperty('status')) {
 say("пожар в гараже",3);
 SetTimeOut("MyTimer_33","$this->callMethod('ИМЯ_ТЕКУЩЕГО_МЕТОДА');",10);
}
Все равно проговаривает 1 раз, метод не перезапусается по окончании таймера.

Re: Постоянное проговаривание свойства.

Добавлено: Вс мар 01, 2020 2:23 pm
Chainik
madbob писал(а): Вс мар 01, 2020 1:54 pm ...

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

If  ($this->getProperty('status')) {
 say("пожар в гараже",3);
 SetTimeOut("MyTimer_33","$this->callMethod('ИМЯ_ТЕКУЩЕГО_МЕТОДА');",10);
}
Все равно проговаривает 1 раз, метод не перезапусается по окончании таймера.
Значит, наверняка проблема с правильностью синтаксиса в том коде, что я предложил. Попробуйте указать имя Объекта.Метода в явном виде.

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

 SetTimeOut("MyTimer_33","callMethod('Relay19.statusUpdated');",10);
Если вам все же нужен классовый метод, можно написать так:

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

$ot=$this->object_title;
SetTimeOut("MyTimer_33","callMethod('".$ot.".statusUpdated');",10);

Re: Постоянное проговаривание свойства.

Добавлено: Вс мар 01, 2020 3:11 pm
Logrus
SDevices_statusUpdated не предназначен для такого, есть SDevices_logicAction

Re: Постоянное проговаривание свойства.

Добавлено: Вс мар 01, 2020 5:13 pm
madbob

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

if ($this->getProperty('status')) {
 say("пожар в гараже",3);
 SetTimeOut("Timer_fire_garage","callMethod('Relay19.statusUpdated');",10);
}
Ура! Так заработало в statusUpdated. Даже теща прибежала :)))
Logrus писал(а): Вс мар 01, 2020 3:11 pm SDevices_statusUpdated не предназначен для такого, есть SDevices_logicAction
Почему? Чем грозит использование этого кода в методе statusUpdate объекта в Sdevices ?
Спасибо всем за помощь!

Re: Постоянное проговаривание свойства.

Добавлено: Пн мар 02, 2020 8:40 pm
Logrus
madbob писал(а): Вс мар 01, 2020 5:13 pm

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

if ($this->getProperty('status')) {
 say("пожар в гараже",3);
 SetTimeOut("Timer_fire_garage","callMethod('Relay19.statusUpdated');",10);
}
Ура! Так заработало в statusUpdated. Даже теща прибежала :)))
Logrus писал(а): Вс мар 01, 2020 3:11 pm SDevices_statusUpdated не предназначен для такого, есть SDevices_logicAction
Почему? Чем грозит использование этого кода в методе statusUpdate объекта в Sdevices ?
Спасибо всем за помощь!
в инжекции есть много лишнего

Re: Постоянное проговаривание свойства.

Добавлено: Вт мар 03, 2020 8:33 pm
madbob
Logrus писал(а): Пн мар 02, 2020 8:40 pm в инжекции есть много лишнего
Мне пока не понять :( катастрофы, надеюсь, не будет?

Re: Постоянное проговаривание свойства.

Добавлено: Вт мар 03, 2020 9:17 pm
Logrus
не должно, но лишняя не нужная нагрузка

Re: Постоянное проговаривание свойства.

Добавлено: Вт мар 03, 2020 9:45 pm
xor
madbob писал(а): Вт мар 03, 2020 8:33 pm
Logrus писал(а): Пн мар 02, 2020 8:40 pm в инжекции есть много лишнего
Мне пока не понять :( катастрофы, надеюсь, не будет?
я б вообще вынес крик о пожаре в отдельный скрипт, допустим, FireAlarm

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

//script FireAlarm
if (gg('Object.status')) { //кричать, пока свойство=1
 say("пожар в гараже",3);
 SetTimeOut("Timer_fire_garage","runscript('FireAlarm');",10);
}
а инициировал бы его один раз вызовом из откуда он там вызывается

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

//say("пожар в гараже",3);
 runscript('FireAlarm');