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

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

AK1
Сообщения: 154
Зарегистрирован: Чт фев 13, 2020 6:39 pm

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

Сообщение AK1 »

Пороги у всех устройств разные.
А если делать универсально, то будет работать медленнее.
Kirch
Сообщения: 52
Зарегистрирован: Чт июл 26, 2018 4:50 pm

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

Сообщение Kirch »

порог у всех 100
ложное обычно 130
Jilber
Сообщения: 719
Зарегистрирован: Ср май 03, 2017 7:41 pm

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

Сообщение Jilber »

Вот тут Skysilver писал про фильтрацию и округление данных с датчика. Также перед сохранением в базу наверное стоит добавить сравнение значения с предыдущим (если значение не изменилось, то зачем его сохранять ещё раз ?). Наверное было бы неплохо, если бы Skysilver добавил в свою статью сравнение с предыдущим значением, я думаю на форуме ещё много раз будем ссылаться на его статью.
Kirch
Сообщения: 52
Зарегистрирован: Чт июл 26, 2018 4:50 pm

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

Сообщение 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);
Аватара пользователя
ProxXx
Сообщения: 16
Зарегистрирован: Сб июл 04, 2020 8:59 am

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

Сообщение 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);
Было бы не плохо...
В свободное время модифицирую игры. Если интересно, можете скачать кс го 1 6 со скинами моего творения на пробу.
Ответить