Фильтрация и округление данных от датчиков

4. Азбука Комментариев нет

На примере модуля Xiaomi Home рассмотрим возможность выполнения фильтрации и округления поступающих от устройств данных перед тем, как сохранять их в базу данных MajorDoMo.

Такая предварительная обработка может потребоваться в случаях, когда надо исключить попадание в систему заведомо некорректных данных, а также для округления значений, если их точность слишком избыточна.

При использовании Простых устройств в модуле Xiaomi Home автоматически создаются нужные объекты, а свойства привязываются к соответствующим метрикам в модуле. При таком подходе данные с датчиков сразу же пишутся в связанное свойство объекта. Наша задача удалить в модуле связанное свойство и привязать вместо него метод.

Настройки модуля по умолчанию

Сначала создадим нужный нам метод. Переходим в раздел Методы класса SSensors и нажимаем кнопку Добавить метод.

Добавление метода для класса SSensors

Указываем название и описание метода. Они могут быть произвольными, лишь бы вы сами понимали для чего они созданы и что выполняют.

Название и описание метода

После этого можно переходить на вкладку Методы нужного нам объекта, чьи данные требуется обрабатывать, и настраивать только что созданный метод.

Настройка метода для датчика температуры

Настройка метода заключается в выборе типа Код и написании логики на PHP или Blockly.

Логика метода для обработки данных с датчика

Данные в метод поступают через параметры, которые на стороне метода принимаются конструкцией $params['имя_параметра'], где имя_параметра обычно совпадает с метрикой в модуле. Получив данные, обрабатываем их в соответствии с нужной логикой и в завершении сохраняем в свойство объекта.

Чтобы узнать, какие параметры передаются методу при его вызове, можно воспользоваться вкладкой Methods в модуле XRay. В столбце PARAMS приводятся параметры вызова методов.

Пример передачи параметров методам

Для датчика температуры примерный код будет выглядеть так:

А для датчика влажности так:

После настройки методов возвращаемся в модуль на вкладку Данные нужного датчика и отвязываем свойства объектов, взамен их указываем методы и сохраняем изменения.

Настройка модуля для обработки данных от датчиков

 

Информеры датчиков на сцене до обработки

 

Информеры датчиков на сцене после обработки

 

Поделитесь в соц сетях

Теги: