Страница 2 из 4
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 9:15 am
DimSun75
EvgenyG писал(а):
так тоже не работает
не могу разобраться
можете поправить мой код?
Ну есть же рядом с "Запускать метод при изменении (не обязательно)" кнопочка с буковкой "i". Там же все и написано
http://majordomo.smartliving.ru/Hints/o ... ?skin=hint А ваш метод должен выглядеть примерно так:
Код: Выделить всё
If ($params['NEW_VALUE'] <398) {
$this->setProperty($params['PROPERTY'], 390);
say('Ошибка CO2<398');
} else
If ($params['NEW_VALUE'] ) {
$this->setProperty($params['PROPERTY'], 1400);
say('Ошибка CO2>3000');
} else
{
$this->setProperty($params['PROPERTY'],$params['NEW_VALUE']);
}
И да, я бы все-таки такую фильтрацию делал на устройстве, которое опрашивает датчик.
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 9:55 pm
EvgenyG
DimSun75 писал(а):EvgenyG писал(а):
так тоже не работает
не могу разобраться
можете поправить мой код?
Ну есть же рядом с "Запускать метод при изменении (не обязательно)" кнопочка с буковкой "i". Там же все и написано
http://majordomo.smartliving.ru/Hints/o ... ?skin=hint А ваш метод должен выглядеть примерно так:
Код: Выделить всё
If ($params['NEW_VALUE'] <398) {
$this->setProperty($params['PROPERTY'], 390);
say('Ошибка CO2<398');
} else
If ($params['NEW_VALUE'] ) {
$this->setProperty($params['PROPERTY'], 1400);
say('Ошибка CO2>3000');
} else
{
$this->setProperty($params['PROPERTY'],$params['NEW_VALUE']);
}
И да, я бы все-таки такую фильтрацию делал на устройстве, которое опрашивает датчик.
Спасибо
По ссылке только три строки, не разобрался
Ваш код у меня не работает.
Каждый опрос датчика выводит 'Ошибка CO2<398' на основной странице
Не понятно, где в Вашем коде проверка на условие Ошибка CO2>3000
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 10:15 pm
DimSun75
EvgenyG писал(а):
Спасибо
По ссылке только три строки, не разобрался
Ваш код у меня не работает.
Странно. Сейчас специально создал новый объект с методом из моего кода. Создал свойство и привязал этот метод при изменении. Добавил в меню слайдер и привязал его к свойству. Все адекватно реагирует. Ну и да, у меня небольшая ошибочка: во втором if должно быть
Каждый опрос датчика выводит 'Ошибка CO2<398' на основной странице
Что у вас в X-Ray на это метод пишется?
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 10:40 pm
EvgenyG
DimSun75 писал(а):
Что у вас в X-Ray на это метод пишется?
Из X-Ray
CO2SpBol.parm_change
Проверка и замена "глючных" значений
a:4:{s:5:" TITLE" ; s:3:" co2" ; s:5:" VALUE" ; s:3:" 682" ; s:5:" value" ; s:3:" 682" ; s:21:" ORIGINAL_OBJECT_TITLE" ; s:8:" CO2SpBol" ; } 2017-01-31 22:38:20
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 10:48 pm
DimSun75
EvgenyG писал(а):DimSun75 писал(а):
Что у вас в X-Ray на это метод пишется?
Из X-Ray
CO2SpBol.parm_change
Проверка и замена "глючных" значений
a:4:{s:5:" TITLE" ; s:3:" co2" ; s:5:" VALUE" ; s:3:" 682" ; s:5:" value" ; s:3:" 682" ; s:21:" ORIGINAL_OBJECT_TITLE" ; s:8:" CO2SpBol" ; } 2017-01-31 22:38:20
Хм, интересно, у меня другие параметры передает. Но можно попробовать в моем коде поменять 'NEW_VALUE' на 'VALUE' (или на 'value' не знаю чем они отличаются) и 'PROPERTY' на "TITLE'
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 10:59 pm
EvgenyG
DimSun75 писал(а):EvgenyG писал(а):DimSun75 писал(а):
Что у вас в X-Ray на это метод пишется?
Из X-Ray
CO2SpBol.parm_change
Проверка и замена "глючных" значений
a:4:{s:5:" TITLE" ; s:3:" co2" ; s:5:" VALUE" ; s:3:" 682" ; s:5:" value" ; s:3:" 682" ; s:21:" ORIGINAL_OBJECT_TITLE" ; s:8:" CO2SpBol" ; } 2017-01-31 22:38:20
Хм, интересно, у меня другие параметры передает. Но можно попробовать в моем коде поменять 'NEW_VALUE' на 'VALUE' (или на 'value' не знаю чем они отличаются) и 'PROPERTY' на "TITLE'
Так:
Код: Выделить всё
If ($params['VALUE'] < 398) {
$this->setProperty($params['TITLE'], 390);
say('Ошибка CO2<398');
} else
If ($params['VALUE'] > 3000) {
$this->setProperty($params['TITLE'], 1400);
say('Ошибка CO2>3000');
} else
{
$this->setProperty($params['TITLE'],$params['VALUE']);
}
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 11:04 pm
DimSun75
Да
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 11:07 pm
EvgenyG
DimSun75 писал(а):Да
Если открыть переменную, то вот какие значения:
2017-01-31 23:05:53: 400 X
2017-01-31 23:05:43: 400 X
2017-01-31 23:05:33: 390 X
2017-01-31 23:05:33: 5 X
2017-01-31 23:05:29: 390 X
2017-01-31 23:05:29: 5 X
2017-01-31 23:05:19: 390 X
2017-01-31 23:05:19: 128 X
2017-01-31 23:04:51: 916 X
2017-01-31 23:04:51: 916 X
2017-01-31 23:04:41: 914 X
значения в одинаковые промежутки времени
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 11:17 pm
DimSun75
EvgenyG писал(а):DimSun75 писал(а):Да
Если открыть переменную, то вот какие значения:
2017-01-31 23:05:53: 400 X
2017-01-31 23:05:43: 400 X
2017-01-31 23:05:33: 390 X
2017-01-31 23:05:33: 5 X
2017-01-31 23:05:29: 390 X
2017-01-31 23:05:29: 5 X
2017-01-31 23:05:19: 390 X
2017-01-31 23:05:19: 128 X
2017-01-31 23:04:51: 916 X
2017-01-31 23:04:51: 916 X
2017-01-31 23:04:41: 914 X
значения в одинаковые промежутки времени
Очень похоже, что метод работает и работает правильно. Происходит похоже следующее: при получении значения оно записывается в базу. после этого вызывается метод CO2SpBol.parm_change, который фильтрует и новое значение опять попадает в базу.
Re: Фильтрация значений получаемых от датчиков
Добавлено: Вт янв 31, 2017 11:18 pm
EvgenyG
DimSun75 писал(а):EvgenyG писал(а):DimSun75 писал(а):Да
Если открыть переменную, то вот какие значения:
2017-01-31 23:05:53: 400 X
2017-01-31 23:05:43: 400 X
2017-01-31 23:05:33: 390 X
2017-01-31 23:05:33: 5 X
2017-01-31 23:05:29: 390 X
2017-01-31 23:05:29: 5 X
2017-01-31 23:05:19: 390 X
2017-01-31 23:05:19: 128 X
2017-01-31 23:04:51: 916 X
2017-01-31 23:04:51: 916 X
2017-01-31 23:04:41: 914 X
значения в одинаковые промежутки времени
Очень похоже, что метод работает и работает правильно. Происходит похоже следующее: при получении значения оно записывается в базу. после этого вызывается метод CO2SpBol.parm_change, который фильтрует и новое значение опять попадает в базу.
Да, похоже.
Упростил код вроде ничего не изменилось))
Код: Выделить всё
If ($params['VALUE'] < 398) {
$this->setProperty($params['TITLE'], 390);
say('Ошибка CO2<398');
}
If ($params['VALUE'] > 3000) {
$this->setProperty($params['TITLE'], 1400);
say('Ошибка CO2>3000');
}