Skip to content

Latest commit

 

History

History
88 lines (64 loc) · 3.75 KB

objects_rus.md

File metadata and controls

88 lines (64 loc) · 3.75 KB

Объекты

Объекты это универсальная сущность для хранения и обмена данными между подсистемами шлюза, например между скриптами.

Доступ к объекту осуществляется по его имени.

Веб интерфейс

Просмотреть текущие объекты можно на странице Objects (/objects).

Сетевые объекты

Используются для синхронизации данных между несколькими шлюзами, при изменении объекта на одном, он так же изенится и на остальных шлюзах.

Данный функционал в разработке.

MQTT

Шлюз может слать уведомления в MQTT при изменении объекта, это включается через 3 параметр obj.setOpt().

Шлюз будет публиковать в топик вида: zgwXXXX/obj/OBJ_NAME

Для изменения объекта необходимо отправить значение объекта в топик zgwXXXX/obj/OBJ_NAME/set

Для запроса текущего значения объекта необходимо отправить пустой топик zgwXXXX/obj/OBJ_NAME/get

Сохранение объектов

В данный момент объекты хранятся только в памяти и не сохраняются в флеш-память.

Для инициализации начальными значениями, можно использовать файл init.lua.

Типы данных

Можно установить объекту тип данных:

  • STR - Строки (используется по умолчанию)
  • BOOL - Бинарный (true / false)
  • INT - Целое число
  • FLOAT - Дробное число

Работа с объектами из скриптов

Получение значения (текущего и предыдущего) объекта и проверка его существования:

local current_status, previous_status = obj.get("security.status")
if (current_status == nil) then current_status = 0 end

Установка значения объекта:

obj.set(ObjectName, ObjectValue)

Удаление объекта:

obj.remove(ObjectName)

Для изменения типа переменной сохраняемого значения можно сделать так:

obj.setOpt("security.status", "INT")

Включение уведомления об изменении в MQTT:

obj.setOpt("security.status", "INT", true)

Получение времени события в секундах lua list (curr,prev):

local curr, prev = obj.getTime("security.status")
print("Время предыдущего изменения:" .. prev .. ", И последнего: " .. curr .. " длительность события: " .. curr-prev)

Привязка к объекту скрипта, который запускается по изменению:

obj.onChange('room1.temperature', 'room1_trv_calibration.lua')

События

При вызове скрипта привязанного к объекту вызывается событие с типом SCRIPT_EVENT_TYPE_OBJ_CHANGE и значением 2 (с версии 2022.01.13d11).

Так же передается имя объекта, его текущее и предыдущее значение.

if Event.Type == 2 then
  local Name = Event.Obj.Name
  local Value = Event.Obj.Value
  local OldValue = Event.Obj.OldValue
  
  ...
end