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

Re: График не читается из-за датчика

Добавлено: Вс дек 13, 2020 8:20 am
AK1
Пороги у всех устройств разные.
А если делать универсально, то будет работать медленнее.

Re: График не читается из-за датчика

Добавлено: Вс дек 13, 2020 8:22 am
Kirch
порог у всех 100
ложное обычно 130

Re: График не читается из-за датчика

Добавлено: Вс дек 13, 2020 11:23 am
Jilber
Вот тут Skysilver писал про фильтрацию и округление данных с датчика. Также перед сохранением в базу наверное стоит добавить сравнение значения с предыдущим (если значение не изменилось, то зачем его сохранять ещё раз ?). Наверное было бы неплохо, если бы Skysilver добавил в свою статью сравнение с предыдущим значением, я думаю на форуме ещё много раз будем ссылаться на его статью.

Re: График не читается из-за датчика

Добавлено: Ср янв 27, 2021 9:58 am
Kirch
Может тогда так поправим код для сравнения с текущим значением и сохранением, если отличается на 1%
if ((getProperty('value') < $value * 1.01) and (getProperty('value') > $value * 0.99)) return;

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

// Получаем данные от сенсора
$value = $params['temperature']/100;
 
// Фильтруем данные
if ($value > 60 || $value < -60) return;
 
// Не сохраняем значения, уже сохраненные ранее с точностью 1%
if ((getProperty('value') < $value * 1.01) and (getProperty('value') > $value * 0.99)) return; 

// Выполняем округление с точностью до одного знака
$value = round($value, 1);

// Сохраняем обработанное значение в свойство объекта
$this->setProperty('value', $value);

Re: График не читается из-за датчика

Добавлено: Вт фев 09, 2021 4:01 pm
ProxXx
Kirch писал(а):
Ср янв 27, 2021 9:58 am
Может тогда так поправим код для сравнения с текущим значением и сохранением, если отличается на 1%
if ((getProperty('value') < $value * 1.01) and (getProperty('value') > $value * 0.99)) return;

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

// Получаем данные от сенсора
$value = $params['temperature']/100;
 
// Фильтруем данные
if ($value > 60 || $value < -60) return;
 
// Не сохраняем значения, уже сохраненные ранее с точностью 1%
if ((getProperty('value') < $value * 1.01) and (getProperty('value') > $value * 0.99)) return; 

// Выполняем округление с точностью до одного знака
$value = round($value, 1);

// Сохраняем обработанное значение в свойство объекта
$this->setProperty('value', $value);
Было бы не плохо...