Конфигурирование Модели

Сконфигурируем Модель на примере комнаты, в которой необходимо регулировать температуру. Если температура в помещении превысит 22 градуса и окно закрыто, мы будем включать кондиционер. Если температура упадет или откроется окно, мы будем его выключать.

Таким образом, мы имеем следующие Устройства:

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

В нашем примере Устройства общаются с Платформой через контроллер. Контроллер отправляет данные по протоколу MQTT. Поэтому именно контроллер в данном случае будет являться Объектом контроля с точки зрения Платформы, и Модель мы будем создавать одну.

Создадим новую Модель.

В нашем примере мы выберем базовую Модель MQTT.

По умолчанию доступны 2 параметра - температура и влажность, а также две команды - включить/выключить LED.

Нам нужно управлять кондиционером на основании данных, отправляемых датчиком температуры, и учитывать, открыто окно или закрыто.

Датчик тепмературы сообщает значение температуры в градусах цельсия. Датчик на окне сообщает значение 1, если окно закрыто, и 0, если открыто, а кондиционер умеет выполнять две команды: включение и выключение.

Добавим эти аргументы и команды в Модель.

В случае с температурой мы воспользуемся уже существующим в Модели соответсвующим параметром.

Параметр "Влажность" мы удалим и создадим новый параметр для состояния окна.

Подробнее о назначении полей читайте в разделе Модели Устройства.

Создадим новый узел в разделе "Параметры". Поле Идентификатор можно оставить без изменений (поскольку в данном примере мы не предполагаем использовать API).

Если вы планируете использовать API Платформы, рекомендуем изменить Идентификатор, сгенерированный Платформой, на более понятный.

Зададим удобное для дальнейшего просмотра в интерфейсе Имя. Наше Устройство передает значение 0, если окно открыто, и 1 - если закрыто. Выберем "Аргумент" в качестве Типа, "Число" в качестве типа данных. Единица измерения в данном случае отсутствует. В поле Источник укажем topic, по которому Устройство отправляет параметр окна.

Для описания команд, отправляемых кондиционеру, отредактируем команды LED, имеющиеся по умолчанию.

Поскольку мы переименовываем идентификатор, дадим ему понятно название.

Наше Устройство подписано на topic room/aircon/power. При получении значения 1 в этот topic Устройство включит кондиционер. При получении 0 - выключит. Выберем "Действие" в качестве Типа, "Опубликовать" в качестве команды. В поле Топик укажем topic, в поле Данные - payload.

Создание Объекта

Напомним, что в нашем примере Устройство с точки зрения Платформы одно, поэтому мы создадим для него один Объект.

Зададим Идентификатор, который должен быть указан в поле clientId в пакете CONNECT. Присвоим Имя и укажем ранее созданную Модель Устройства, укажем логин и пароль, которые также нужно передать в пакете CONNECT

Использование логина и пароля не является обязательным, но мы рекомендуем это делать.

Убедимся, что Устройство отправляет данные.

Проектирование Сценария автоматизации

В нашем примере существуют 2 принципиальных состояния системы: когда кондиционер включен и когда он выключен. Весь Сценарий автоматизации разворачивается вокруг этих состояний.

Переход из "Начального состояния" в состояние "Кондиционер включен" (первое включение кондиционера) должен происходить при одновременном выполнении двух условий: если температура в комнате превышает значение в 22 градуса и окно закрыто.

Переход из состояния "Кондиционер включен" в состояние "Кондиционер выключен" происходит при выполнении одного из уловий: либо температура падает ниже 22 градусов, либо открывается окно. Обратный переход происходит при тех же условиях, что и при переходе из "Начального состояния".

Осталось запустить спроектированный Сценарий на исполнение, создав контейнер на Объекте контроля.