Получение времени изменения свойства

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

Модератор: immortal

Akorolev
Сообщения: 119
Зарегистрирован: Вт ноя 08, 2016 4:27 pm
Благодарил (а): 11 раз
Поблагодарили: 10 раз

Получение времени изменения свойства

Сообщение Akorolev » Пн ноя 14, 2016 6:28 am

Собственно использую модуль "Устройства esp8266_wifiot" и успешно получаю данные на него:
Изображение
Столкнулся вот с таким вопросом. на картинке видно что выводится дата и время изменения свойства, собственно как мне ее вывести в блоке HTML? Сами значения вывожу нормально, а вот с датой изменения - проблема. Заранее спасибо!
GreatBAO
Сообщения: 119
Зарегистрирован: Пн авг 24, 2015 11:24 am
Откуда: Сочи
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Получение времени изменения свойства

Сообщение GreatBAO » Пн ноя 14, 2016 11:05 am

1 - добавить объекту новое свойство к примеру update_time
2 - создать метод объекта к примеру last_update с таким кодом

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

if($params['NEW_VALUE']) {
     $this->setProperty("update_time", mktime());
}
3 - привязать необходимым свойствам запуск метода при изменении ("Запускать метод при изменении" выставляется в параметрах необходимого свойства)
тем самым, при изменении статуса свойства, будет вызван метод который обновляет поле update_time

либо вытаскивать из БД
таблица mqtt -> поле UPDATED
За это сообщение автора GreatBAO поблагодарил:
Akorolev (Пн ноя 14, 2016 11:50 am)
Рейтинг: 1.16%
Akorolev
Сообщения: 119
Зарегистрирован: Вт ноя 08, 2016 4:27 pm
Благодарил (а): 11 раз
Поблагодарили: 10 раз

Re: Получение времени изменения свойства

Сообщение Akorolev » Пн ноя 14, 2016 2:35 pm

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 при попытке сохранить - он не сохраняется. В чем может быть проблема?
GreatBAO
Сообщения: 119
Зарегистрирован: Пн авг 24, 2015 11:24 am
Откуда: Сочи
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Получение времени изменения свойства

Сообщение GreatBAO » Пн ноя 14, 2016 4:19 pm

а ошибки при этом появляются в "Ошибки системы" ?
Akorolev
Сообщения: 119
Зарегистрирован: Вт ноя 08, 2016 4:27 pm
Благодарил (а): 11 раз
Поблагодарили: 10 раз

Re: Получение времени изменения свойства

Сообщение Akorolev » Вт ноя 15, 2016 7:32 am

GreatBAO писал(а):а ошибки при этом появляются в "Ошибки системы" ?
Ошибок не было, я сам затупил, код рабочий. Не учел что свойство объекта.
max506
Сообщения: 88
Зарегистрирован: Чт сен 08, 2016 3:14 pm
Благодарил (а): 17 раз
Поблагодарили: 0

Re: Получение времени изменения свойства

Сообщение max506 » Вс дек 04, 2016 11:12 am

GreatBAO писал(а): 3 - привязать необходимым свойствам запуск метода при изменении ("Запускать метод при изменении" выставляется в параметрах необходимого свойства)
А где надо сделать такую привязку? У меня в свойствах объекта нет параметра "Запускать метод при изменении".
И подскажите, каким образом при изменении свойства получить его старое и новое (измененное) значения?
GreatBAO
Сообщения: 119
Зарегистрирован: Пн авг 24, 2015 11:24 am
Откуда: Сочи
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Получение времени изменения свойства

Сообщение GreatBAO » Вс дек 04, 2016 11:16 am

max506 писал(а):А где надо сделать такую привязку? У меня в свойствах объекта нет параметра "Запускать метод при изменении".
И подскажите, каким образом при изменении свойства получить его старое и новое (измененное) значения?
e2159-clip-24kb.png
e2159-clip-24kb.png (23.81 КБ) 7396 просмотров
В качестве параметров указанному методу будут переданы следующие данные:
$params['PROPERTY'] -- текстовое имя изменяемого свойства
$params['NEW_VALUE'] -- присваиваемое значение
$params['OLD_VALUE'] -- предыдущее значение
За это сообщение автора GreatBAO поблагодарил:
max506 (Вс дек 04, 2016 11:42 am)
Рейтинг: 1.16%
max506
Сообщения: 88
Зарегистрирован: Чт сен 08, 2016 3:14 pm
Благодарил (а): 17 раз
Поблагодарили: 0

Re: Получение времени изменения свойства

Сообщение max506 » Сб дек 10, 2016 2:29 pm

Создал класс Class1. Добавил свойство value1. Создал в классе метод updateValue. В настройке свойства указал вызов метода updateValue при изменении. В результате метод updateValue вызывается с некоторой периодичностью постоянно, при этом $params['NEW_VALUE'] = $params['OLD_VALUE'].
Почему так происходит? Я ожидал, что метод будет вызываться только при изменении значения свойства, когда $params['NEW_VALUE'] != $params['OLD_VALUE']. Что я делаю не так?
GreatBAO
Сообщения: 119
Зарегистрирован: Пн авг 24, 2015 11:24 am
Откуда: Сочи
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Получение времени изменения свойства

Сообщение GreatBAO » Сб дек 10, 2016 2:54 pm

max506 писал(а):Я ожидал, что метод будет вызываться только при изменении значения свойства, когда $params['NEW_VALUE'] != $params['OLD_VALUE']. Что я делаю не так?
GreatBAO
Сообщения: 119
Зарегистрирован: Пн авг 24, 2015 11:24 am
Откуда: Сочи
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Получение времени изменения свойства

Сообщение GreatBAO » Сб дек 10, 2016 2:54 pm

метод вызывается при любом изменении значений, будь то X != X или X = X

внутри метода уже можно сделать простую проверку

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

if($params['NEW_VALUE'] != $params['OLD_VALUE']) {
  
} 
Ответить