Страница 2 из 3
Re: Постоянное проговаривание свойства.
Добавлено: Пт фев 28, 2020 2:20 pm
Denis_k
xor писал(а): Чт фев 27, 2020 10:52 pm
писал по памяти, а её нету(
$param
s['NEW_VALUE'] , $param
s['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
писал по памяти, а её нету(
$param
s['NEW_VALUE'] , $param
s['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');