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

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

Модератор: immortal

Kirch
Сообщения: 51
Зарегистрирован: Чт июл 26, 2018 4:50 pm
Благодарил (а): 12 раз
Поблагодарили: 7 раз

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

Сообщение Kirch » Вт окт 12, 2021 9:02 pm

Ничего не выходит.
Для датчика температуры 1-wire завожу дергалку метода https://yadi.sk/i/j9NXFSsdA2g8nQ
Но в этом методе пустые значения
$this->getProperty('temperature');
$this->getProperty('value');
$params['temperature']
Как в методе logicAction обратиться к значению, которое должно записаться? Хочу поделить на 100
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Ср окт 13, 2021 6:33 am

Kirch писал(а):
Вт окт 12, 2021 9:02 pm
Ничего не выходит.
Для датчика температуры 1-wire завожу дергалку метода https://yadi.sk/i/j9NXFSsdA2g8nQ
Но в этом методе пустые значения
$this->getProperty('temperature');
$this->getProperty('value');
$params['temperature']
Как в методе logicAction обратиться к значению, которое должно записаться? Хочу поделить на 100
потому что у вас все не правильно
ранее на скринах есть свои методы фильтрации, в вашем случае с модуля мегаД посмотреть параметр в какой передается значение в метод
а не использовать метод логик экшен он совсем для другого, и не читать значения из свойств которые еще не записаны в них
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Kirch
Сообщения: 51
Зарегистрирован: Чт июл 26, 2018 4:50 pm
Благодарил (а): 12 раз
Поблагодарили: 7 раз

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

Сообщение Kirch » Ср окт 13, 2021 12:22 pm

Logrus, вот скрин как подключен датчик к МегаД https://yadi.sk/i/okx1GJwGk-y0zA
Вот возможные свойства датчика https://yadi.sk/i/VsliNHJBuuJ3iw
Как это соединить, какой совет?
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Ср окт 13, 2021 12:34 pm

сходить в базу знаний и прочитать статью фильтрация значений
сходить на предыдущую страницу и прочитать варианты там

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

делить на 100 вы хотели что б в значении были целые числа без знака после запятой?
За это сообщение автора Logrus поблагодарил:
Kirch (Вт окт 26, 2021 8:33 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Kirch
Сообщения: 51
Зарегистрирован: Чт июл 26, 2018 4:50 pm
Благодарил (а): 12 раз
Поблагодарили: 7 раз

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

Сообщение 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;  // проверяем на совпадение с прошлым значением, не храним повторения
идем вначале сюда
2021-10-26_20-37-05.png
2021-10-26_20-37-05.png (15.55 КБ) 1066 просмотров
потом выбираем свойство, редактируем, вставляем код внизу
2021-10-26_20-36-23.png
2021-10-26_20-36-23.png (60.28 КБ) 1066 просмотров
кому нужна отладка - раскомментируйте DebMes
За это сообщение автора Kirch поблагодарил:
~220v (Пн ноя 15, 2021 6:25 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

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

Сообщение xor » Пт окт 29, 2021 1:17 am

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;  // проверяем на совпадение с прошлым значением, не храним повторения
только так вы теряете время последней регистрации температуры(. если включена оптимизация хранения данных (а она включена по умолчанию), то система сама выбрасывает повторяющиеся значения в истории, оставляя только первое и последнее значения с отметкой времени, да и в коде валидации тогда не нужно читать старое значение и проверять на равенство
Kirch
Сообщения: 51
Зарегистрирован: Чт июл 26, 2018 4:50 pm
Благодарил (а): 12 раз
Поблагодарили: 7 раз

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

Сообщение Kirch » Пт окт 29, 2021 10:32 am

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

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