Страница 1 из 2
Получение времени изменения свойства
Добавлено: Пн ноя 14, 2016 6:28 am
Akorolev
Собственно использую модуль "Устройства esp8266_wifiot" и успешно получаю данные на него:
Столкнулся вот с таким вопросом. на картинке видно что выводится дата и время изменения свойства, собственно как мне ее вывести в блоке HTML? Сами значения вывожу нормально, а вот с датой изменения - проблема. Заранее спасибо!
Re: Получение времени изменения свойства
Добавлено: Пн ноя 14, 2016 11:05 am
GreatBAO
1 - добавить объекту новое свойство к примеру update_time
2 - создать метод объекта к примеру last_update с таким кодом
Код: Выделить всё
if($params['NEW_VALUE']) {
$this->setProperty("update_time", mktime());
}
3 - привязать необходимым свойствам запуск метода при изменении ("Запускать метод при изменении" выставляется в параметрах необходимого свойства)
тем самым, при изменении статуса свойства, будет вызван метод который обновляет поле update_time
либо вытаскивать из БД
таблица mqtt -> поле UPDATED
Re: Получение времени изменения свойства
Добавлено: Пн ноя 14, 2016 2:35 pm
Akorolev
GreatBAO писал(а):1 - добавить объекту новое свойство к примеру update_time
2 - создать метод объекта к примеру last_update с таким кодом
Код: Выделить всё
if($params['NEW_VALUE']) {
$this->setProperty("update_time", mktime());
}
3 - привязать необходимым свойствам запуск метода при изменении ("Запускать метод при изменении" выставляется в параметрах необходимого свойства)
тем самым, при изменении статуса свойства, будет вызван метод который обновляет поле update_time
либо вытаскивать из БД
таблица mqtt -> поле UPDATED
Сделал, выбираю метод:
http://joxi.ru/Y2L796CnyWR3m6 при попытке сохранить - он не сохраняется. В чем может быть проблема?
Re: Получение времени изменения свойства
Добавлено: Пн ноя 14, 2016 4:19 pm
GreatBAO
а ошибки при этом появляются в "Ошибки системы" ?
Re: Получение времени изменения свойства
Добавлено: Вт ноя 15, 2016 7:32 am
Akorolev
GreatBAO писал(а):а ошибки при этом появляются в "Ошибки системы" ?
Ошибок не было, я сам затупил, код рабочий. Не учел что свойство объекта.
Re: Получение времени изменения свойства
Добавлено: Вс дек 04, 2016 11:12 am
max506
GreatBAO писал(а):
3 - привязать необходимым свойствам запуск метода при изменении ("Запускать метод при изменении" выставляется в параметрах необходимого свойства)
А где надо сделать такую привязку? У меня в свойствах объекта нет параметра "Запускать метод при изменении".
И подскажите, каким образом при изменении свойства получить его старое и новое (измененное) значения?
Re: Получение времени изменения свойства
Добавлено: Вс дек 04, 2016 11:16 am
GreatBAO
max506 писал(а):А где надо сделать такую привязку? У меня в свойствах объекта нет параметра "Запускать метод при изменении".
И подскажите, каким образом при изменении свойства получить его старое и новое (измененное) значения?

- e2159-clip-24kb.png (23.81 КБ) 8545 просмотров
В качестве параметров указанному методу будут переданы следующие данные:
$params['PROPERTY'] -- текстовое имя изменяемого свойства
$params['NEW_VALUE'] -- присваиваемое значение
$params['OLD_VALUE'] -- предыдущее значение
Re: Получение времени изменения свойства
Добавлено: Сб дек 10, 2016 2:29 pm
max506
Создал класс Class1. Добавил свойство value1. Создал в классе метод updateValue. В настройке свойства указал вызов метода updateValue при изменении. В результате метод updateValue вызывается с некоторой периодичностью постоянно, при этом $params['NEW_VALUE'] = $params['OLD_VALUE'].
Почему так происходит? Я ожидал, что метод будет вызываться только при изменении значения свойства, когда $params['NEW_VALUE'] != $params['OLD_VALUE']. Что я делаю не так?
Re: Получение времени изменения свойства
Добавлено: Сб дек 10, 2016 2:54 pm
GreatBAO
max506 писал(а):Я ожидал, что метод будет вызываться только при изменении значения свойства, когда $params['NEW_VALUE'] != $params['OLD_VALUE']. Что я делаю не так?
Re: Получение времени изменения свойства
Добавлено: Сб дек 10, 2016 2:54 pm
GreatBAO
метод вызывается при любом изменении значений, будь то X != X или X = X
внутри метода уже можно сделать простую проверку
Код: Выделить всё
if($params['NEW_VALUE'] != $params['OLD_VALUE']) {
}