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

Re: Как выборочно сохранять свойства (sensor temp)

Добавлено: Вт окт 12, 2021 9:02 pm
Kirch
Ничего не выходит.
Для датчика температуры 1-wire завожу дергалку метода https://yadi.sk/i/j9NXFSsdA2g8nQ
Но в этом методе пустые значения
$this->getProperty('temperature');
$this->getProperty('value');
$params['temperature']
Как в методе logicAction обратиться к значению, которое должно записаться? Хочу поделить на 100

Re: Как выборочно сохранять свойства (sensor temp)

Добавлено: Ср окт 13, 2021 6:33 am
Logrus
Kirch писал(а): Вт окт 12, 2021 9:02 pm Ничего не выходит.
Для датчика температуры 1-wire завожу дергалку метода https://yadi.sk/i/j9NXFSsdA2g8nQ
Но в этом методе пустые значения
$this->getProperty('temperature');
$this->getProperty('value');
$params['temperature']
Как в методе logicAction обратиться к значению, которое должно записаться? Хочу поделить на 100
потому что у вас все не правильно
ранее на скринах есть свои методы фильтрации, в вашем случае с модуля мегаД посмотреть параметр в какой передается значение в метод
а не использовать метод логик экшен он совсем для другого, и не читать значения из свойств которые еще не записаны в них

Re: Как выборочно сохранять свойства (sensor temp)

Добавлено: Ср окт 13, 2021 12:22 pm
Kirch
Logrus, вот скрин как подключен датчик к МегаД https://yadi.sk/i/okx1GJwGk-y0zA
Вот возможные свойства датчика https://yadi.sk/i/VsliNHJBuuJ3iw
Как это соединить, какой совет?

Re: Как выборочно сохранять свойства (sensor temp)

Добавлено: Ср окт 13, 2021 12:34 pm
Logrus
сходить в базу знаний и прочитать статью фильтрация значений
сходить на предыдущую страницу и прочитать варианты там

зачем вы привязываете метод логик экшен совсем не понятно, что тем кодом вы хотите от этого добиться тем более

делить на 100 вы хотели что б в значении были целые числа без знака после запятой?

Re: Как выборочно сохранять свойства (sensor temp)

Добавлено: Вт окт 26, 2021 8:39 pm
Kirch
Добавил такой код, вроде теперь фильтрует и пишет корректную температуру.

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

$oldvalue = $this->getProperty('value');
$value = round($value, 1); // Выполняем округление с точностью до одного знака
//DebMes($this->object_title . " value =" . $value. " old value ". $oldvalue);
if ($value > 100) {  // Если пропала точка, то делим на 100
	$value = $value/100;
}
if ($value > 90 || $value < -10) return; // Если вне диапазона, не сохраняем
if ($value == $oldvalue) return;  // проверяем на совпадение с прошлым значением, не храним повторения
идем вначале сюда
2021-10-26_20-37-05.png
2021-10-26_20-37-05.png (15.55 КБ) 2113 просмотров
потом выбираем свойство, редактируем, вставляем код внизу
2021-10-26_20-36-23.png
2021-10-26_20-36-23.png (60.28 КБ) 2113 просмотров
кому нужна отладка - раскомментируйте DebMes

Re: Как выборочно сохранять свойства (sensor temp)

Добавлено: Пт окт 29, 2021 1:17 am
xor
Kirch писал(а): Вт окт 26, 2021 8:39 pm Добавил такой код, вроде теперь фильтрует и пишет корректную температуру.

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

$oldvalue = $this->getProperty('value');
$value = round($value, 1); // Выполняем округление с точностью до одного знака
//DebMes($this->object_title . " value =" . $value. " old value ". $oldvalue);
if ($value > 100) {  // Если пропала точка, то делим на 100
	$value = $value/100;
}
if ($value > 90 || $value < -10) return; // Если вне диапазона, не сохраняем
if ($value == $oldvalue) return;  // проверяем на совпадение с прошлым значением, не храним повторения
только так вы теряете время последней регистрации температуры(. если включена оптимизация хранения данных (а она включена по умолчанию), то система сама выбрасывает повторяющиеся значения в истории, оставляя только первое и последнее значения с отметкой времени, да и в коде валидации тогда не нужно читать старое значение и проверять на равенство

Re: Как выборочно сохранять свойства (sensor temp)

Добавлено: Пт окт 29, 2021 10:32 am
Kirch
[/quote]
только так вы теряете время последней регистрации температуры(. если включена оптимизация хранения данных (а она включена по умолчанию), то система сама выбрасывает повторяющиеся значения в истории, оставляя только первое и последнее значения с отметкой времени, да и в коде валидации тогда не нужно читать старое значение и проверять на равенство
[/quote]

Спасибо. Тогда у кого есть варианты как менять время последней записи без раздувания архива? Просто писать и все?