Changed, предыдущее значение свойства

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Changed, предыдущее значение свойства

Сообщение nightwind » Пт июл 01, 2016 9:08 pm

Господа, можно ли в методе Changed узнать предыдущее значение измененного свойства?
я так понял, метод вызывается при любом присваивании нового значения свойству, а не его изменении.
OnChange реализовать никак нельзя по-простому?
мне нужно отслеживать именно изменение. если свойство обновлено, но не изменилось - ничего не делать. как??
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: Changed, предыдущее значение свойства

Сообщение Ivan » Пт июл 01, 2016 9:28 pm

nightwind писал(а):Господа, можно ли в методе Changed узнать предыдущее значение измененного свойства?
я так понял, метод вызывается при любом присваивании нового значения свойству, а не его изменении.
OnChange реализовать никак нельзя по-простому?
мне нужно отслеживать именно изменение. если свойство обновлено, но не изменилось - ничего не делать. как??
http://majordomo.smartliving.ru/Hints/LinkedMethod
http://majordomo.smartliving.ru/Hints/Onchangemethod
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Changed, предыдущее значение свойства

Сообщение nightwind » Пт июл 01, 2016 9:52 pm

спасибо за наводку. сделал так

свойство online прилинковано к устройствам_онлайн. выставляется правильно.

код метода, привязанный к свойству online (Запускать метод при изменении (не обязательно):)

$old=$params['OLD_VALUE'];
$new=$params['VALUE'];
if ($old !=$new) {
if ($new=="1") {
$this->setProperty("onlineAt",time());
$this->setProperty("onlineAtTime",date("H:i",time()));
}
else
{
$this->setProperty("offlineAt",time());
$this->setProperty("offlineAtTime",date("H:i",time()));

}
}

не работает. выполняется ветка else, хотя Online присваивается единица. похоже $old=$params['OLD_VALUE'];
$new=$params['VALUE']; работает как то не так
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Changed, предыдущее значение свойства

Сообщение nightwind » Пт июл 01, 2016 10:06 pm

сделал say ($old.":".$new);
выдает 1:
нового значения нет
Ответить