Технические новости
Разработчикам
Получение продукции на тестирование
Тестирование интерфейсов LogicMachine и Amati.linea
Совместимое периферийное оборудование
FAQ
Форум
  logicmachine.net.ru    Поддержка    Разработчикам    Документация по Mosaic    Общая структура конфигурационного файла

Общая структура конфигурационного файла

Конфигурация приложения представляет собой файл JSON формата, имеющий следующую структуру:

{
"title": "Mosaic",
"version": 2,
"settings": {
...
}
"floors": [
...
],
"custom_widgets": {
...
},
"themes": [
...
]
}

Описание полей верхнего уровня

Название поля Описание
title Значением поля является строка, которая будет являться заголовком страницы в браузере. Содержимое тега <title> на странице приложения.
version Версия приложения, число. Данное описание составлено для Mosaic версии 2, в этом случае значение поля должно быть всегда равно 2. Если версия не указана или меньше 2, при первом запуске приложения с этим конфигурационным файлом будет произведена попытка произвести преобразование предыдущего формата файла к текущей версии.
settings Секция предназначена для указания общих настроек приложения. Подробнее будет описана в разделе «Settings. Секция настроек приложения» настоящего документа.
floors Секция описывает структуру приложения и список виджетов на каждом экране. Подробнее будет описана в разделе «Floors. Структура приложения» настоящего документа.
custom_widgets Системная секция, содержащая список и информацию о загруженных пользователем через web-интерфейс кастомных виджетах. Секция не предназначена для ручного редактирования так как для нормального функционирования приложение должно содержать набор файлов виджета расположенных в правильной директории (смотри руководство по разработке кастомных виджетов), которые могут быть загружены только через web-интерфейс приложения.
themes Системная секция, содержащая список и информацию о загруженных пользователем через web-интерфейс темах. Секция не предназначена для ручного редактирования так как для нормального функционирования приложение должно содержать набор файлов темы расположенных в правильной директории (смотри руководство по разработке тем), которые могут быть загружены только через web-интерфейс приложения.

Settings. Секция настроек приложения.

Секция представляет собой объект, содержащий настройки приложения, которые могут быть отредактированы с помощью соответствующей формы в web-интерфейсе приложения.

Пример, содержащий все возможные на данный момент настройки приложения:

"settings": {
"theme": 1,
"dropdown_rooms_menu": false,
"screensaver": 10,
"main_screen": true
}

В дальнейшем набор возможных настроек будет расширяться.

Описание полей секции «settings»

Название поля Описание
theme Значением поля является число—номер одной из установленных в приложение пользовательских тем. Обозначает тему по умолчанию. Приложение будет открываться с указанной темой при первом запуске его в браузере. Каждый пользователь может переопределить для себя тему через пользовательский интерфейс приложения, персональные настройки сохраняются локально в браузере.Если значение равно -1, то темой по умолчанию будет основная тема приложения.
dropdown_rooms_menu Логическое поле, отвечающее за внешний вид нижнего меню в пользовательском интерфейсе.В случае если значение «false», то список комнат в приложении будет отображаться в виде обычного списка.

В случае, если значение «true», список комнат будет отображаться в виде выпадающего списка.

screensaver Число—количество секунд, которое должно пройти с последнего действия пользователя до затемнения экрана в пользовательском интерфейсе приложения.Чтобы совсем отключить заставку, укажите 0 в качестве значения.
main_screen Логическое поле. Отвечает за отображение в нижнем навигационном меню ссылки на главный экран приложения «Этажи» («Floors»). Если значение «false», то ссылка на экран в меню будет отсутствовать.

 

Floors. Структура приложения

Секция «floors» описывает полную структуру приложения согласно следующей иерархии

  • Этажи
    • Комнаты на этаже
      • Набор виджетов на экране комнаты

Список этажей

Секция floors представляет собой массив из объектов, каждый из которых описывает структуру одного этажа (первый уровень навигации).  Пример описания этажей:

"floors" : [
{
"title" : "Первый этаж",
"rooms": [ ... ],
"order" : 1
},
{
"title" : "Второй этаж",
"rooms": [ ... ],
"order" : 2
}
...
]

Описание полей этажа

Название поля Описание
title Строка, название этажа, отображается в заголовке экрана и в меню навигации.
order Число, отвечает за сортировку списка этажей в навигационном меню. Этажи сортируются по значению поля «order» в порядке возрастания.
rooms Массив, список комнат этажа. Секция подробнее описана в следующем разделе настоящего документа.

 

Список комнат на этаже

Секция «rooms» для каждого этажа представляет собой массив из объектов, каждый из которых описывает структуру одного комнаты (второй уровень навигации).  Пример описания списка комнат:

"floors" : [
{
...
"rooms": [
{
"title" : "Room name",
"widgets" : [ ... ],
"order" : 1
},
{
"title" : "Room name 2",
"widgets" : [ ... ],
"order" : 1
}
...
]
}
...
]

Описание полей комнаты

Название поля Описание
title Строка, название комнаты, отображается в заголовке экрана и в меню навигации.
order Число, отвечает за сортировку списка комнат в навигационном меню. Комнаты сортируются по значению поля «order» в порядке возрастания.
widgets Массив, список виджетов на экране комнаты. Секция подробнее описана в следующем разделе настоящего документа.

Список виджетов для комнаты

Секция «widgets» для каждого этажа представляет собой массив из объектов, каждый из которых описывает один виджет на экране данной комнаты:

"floors" : [
{
...
"rooms": [
{
...
"widgets": [
{
"type": "alarm_leak",
"title": "Alarm LEAK",
"order": 1,
"objects": {
"object": "1\/1\/1"
},
"settings": [],
"systems": [],
"uid": "af108a99c1a95786f07ec72d453db063"
},
{
"type": "light-switch",
"title": "Sockets",
"order": 6,
"objects": {
"object-2": "1\/1\/48",
"object-status-1": "1\/1\/31",
"object-1": "1\/1\/47"
},
"settings": [],
"systems": ["lighting"],
"uid": "818cfe444c9c1a965958c46f4d0820e6"
},
{
"type": "drapes",
"title": "Drapes",
"order": 5,
"objects": {
"position": "1\/1\/46"
},
"settings": { "max-state": 6 },
"systems": ["blinds"],
"uid": "808930469d911f6b888ebae92f9f86a4"
},
...
],
}
...
]
}
...
]

Описание полей виджета

Название поля Описание
type Строка, ID виджета.  Список идентификатор системных виджетов приведен в приложении к настоящему документу. Для кастомных виджетов ID определяется его разработчиком (смотри руководство по разработке виджетов).
title Строка, название виджета, как правило отображается в заголовке виджета.
order Число, отвечает за сортировку виджетов на экране комнаты. Виджеты сортируются по значению поля «order» в порядке возрастания.
objects Объект, содержащий список групповых адресов, связанных с данным виджетом. В качестве ключей для кастомных виджетов должны выступать ключи объекта «objects» из конфигурации кастомного виджета (смотри руководство по разработке виджетов). Список ключей объектов для системных виджетов приведен в приложении к настоящему документу.
settings Объект, содержащий список настроек для данного типа виджета. В качестве ключей для кастомных виджетов должны выступать ключи объекта «settings» из конфигурации кастомного виджета (смотри руководство по разработке виджетов). Список возможных настроек для системных виджетов приведен в приложении к настоящему документу.
systems Массив, содержащий список идентификаторов инженерных систем. Виджет будет отображаться на экранах всех инженерных систем, которые перечислены в массиве.На момент написания настоящего документа, полный список идентификаторов инженерных систем выглядит так:

  • lighting
  • blinds
  • power
  • windows
  • ac
  • ventilation
  • floor

В дальнейшем список может быть расширен.

uid Системное поле, внутренний идентификатор виджета. Если идентификатор виджета не указан, то он будет назначен системой при первом запуске приложения.

ПРИЛОЖЕНИЕ. Список системных виджетов и их параметров.

ID виджета Конфигурация виджета
ac-switch
config : {
title : "AC On/Off",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
object : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status" : {
datatype : dt.bool,
title : "On/Off Status Object"
}
},
settings : {},
systems:["ac"]
}
ac
config : {
title : "Climat",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
switch : {
datatype : dt.bool,
title : "On/Off Object"
},
"switch-status" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
scale : {
datatype : dt.float16,
title : "Temp Object"
},
"scale-status" : {
datatype : dt.float16,
title : "Temp Status Object"
},
},
settings : {
"min-value" : {
datatype : "number",
title : "Minimum value"
},
"max-value" : {
datatype : "number",
title : "Maximum value"
}
},
systems:["ac"]
}
alarm_fire
config : {
title : "Fire sensor",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
object : {
datatype : dt.bool,
title : "Alarm Status Object"
}
},
settings : {}
}
alarm_leak
config : {
title : "Water Leak",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
object : {
datatype : dt.bool,
title : "Alarm Status Object"
}
},
settings : {}
}
drapes-move-stop
config : {
title : "Drapes (Move/Stop)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
"move-direction" : {
datatype : dt.bool,
title : "Open/Close Object"
},
stop : {
datatype : dt.bool,
title : "Stop Object"
},
"stop-status" : {
datatype : dt.bool,
title : "Open/Close Status Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {},
systems:["blinds"]
}
drapes-open-close
config : {
title : "Drapes (Open/Close)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
open : {
datatype : dt.bool,
title : "Open Object"
},
"open-status" : {
datatype : dt.bool,
title : "Open Status Object"
},
close : {
datatype : dt.bool,
title : "Close Object"
},
"close-status" : {
datatype : dt.bool,
title : "Close Status Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {},
systems:["blinds"]
}
drapes
config : {
title : "Drapes (Position)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
position : {
datatype : dt.uint8,
title : "Position Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {
"max-state" : {
datatype : "number",
title : "Number of steps (2-6)"
}
},
systems:["blinds"]
}
floor-heating-switch
config : {
title : "Floor Heating On/Off",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
object : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status" : {
datatype : dt.bool,
title : "On/Off Status Object"
}
},
settings : {},
systems:["floor"]
}
floor-heating
config : {
title : "Floor Heating",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
switch : {
datatype : dt.bool,
title : "On/Off Object"
},
"switch-status" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
scale : {
datatype : dt.float16,
title : "Temp Object"
},
"scale-status" : {
datatype : dt.float16,
title : "Temp Status Object"
},
},
settings : {
"min-value" : {
datatype : "number",
title : "Minimum value"
},
"max-value" : {
datatype : "number",
title : "Maximum value"
}
},
systems:["floor"]
}
html
config : {
title : "Plain HTML",
settings : {
plain_html : {
datatype : "textarea",
title : "HTML"
},
size : {
datatype : "size",
title : "Size of Widget"
}
},
objects : {},
systems:[]
}
 
 
lamella-move-stop
 
[codesyntax lang="lua" ]
config : {
title : "Lamella (Move/Stop)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
"move-direction" : {
datatype : dt.bool,
title : "Open/Close Object"
},
stop : {
datatype : dt.bool,
title : "Stop Object"
},
"stop-status" : {
datatype : dt.bool,
title : "Open/Close Status Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {},
systems:["blinds"]
}
 
 
lamella-open-close
 
[codesyntax lang="lua" ]
config : {
title : "Lamella (Open/Close)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
open : {
datatype : dt.bool,
title : "Open Object"
},
"open-status" : {
datatype : dt.bool,
title : "Open Status Object"
},
close : {
datatype : dt.bool,
title : "Close Object"
},
"close-status" : {
datatype : dt.bool,
title : "Close Status Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {},
systems:["blinds"]
}
lamella
config : {
title : "Lamella (Position)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
position : {
datatype : dt.uint8,
title : "Position Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {
"max-state" : {
datatype : "number",
title : "Number of steps (2-6)"
}
},
systems:["blinds"]
}
lock
config : {
title : "Lock",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
object : {
datatype : dt.bool,
title : "Lock/Unlock Object"
},
"object-status" : {
datatype : dt.bool,
title : "Lock/Unlock Status Object"
}
},
settings : {},
systems:["lock"]
}
Iframe
config : {
title : "Inline frame",
settings : {
url : {
datatype : "string",
title : "URL"
},
size : {
datatype : "size",
title : "Size of Widget"
}
},
objects : {},
systems:[]
}
light-rotary-dimmer
config : {
title : "Lighting Controls",
fields : {
title : {
datatype : "string",
title : "Title"
},
colors : {
datatype : "string",
default : "FF0000,FF9900,FBE420,F1F1F1,48AE4A,569ADD,666666",
title : "Colors"
}
},
objects : {
switch : {
datatype : dt.bool,
title : "On/Off Object"
},
"switch-status" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
luminosity : {
datatype : dt.uint8,
title : "Dimmer Object"
},
"luminosity-status" : {
datatype : dt.uint8,
title : "Dimmer Status Object"
},
rgb : {
datatype : dt.rgb,
title : "Color Object"
},
"rgb-status" : {
datatype : dt.rgb,
title : "Color Status Object"
}
},
settings : {},
systems:["lighting"]
}
light-switch
config : {
title : "Switch",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
"object-1" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-1" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-2" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-2" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-3" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-3" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-4" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-4" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-5" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-5" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-6" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-6" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
},
settings : {},
systems:["lighting"]
}
light-dimmer
config : {
title : "Lighting Controls",
fields : {
title : {
datatype : "string",
title : "Title"
},
colors : {
datatype : "string",
default : "FF0000,FF9900,FBE420,F1F1F1,48AE4A,569ADD,666666",
title : "Colors"
}
},
objects : {
switch : {
datatype : dt.bool,
title : "On/Off Object"
},
"switch-status" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
luminosity : {
datatype : dt.uint8,
title : "Dimmer Object"
},
"luminosity-status" : {
datatype : dt.uint8,
title : "Dimmer Status Object"
},
rgb : {
datatype : dt.rgb,
title : "Color Object"
},
"rgb-status" : {
datatype : 232,
title : "Color Status Object"
}
},
settings : {},
systems:["lighting"]
}
roman-blinds-move-stop
config : {
title : "Roman Blinds (Move/Stop)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
"move-direction" : {
datatype : dt.bool,
title : "Open/Close Object"
},
stop : {
datatype : dt.bool,
title : "Stop Object"
},
"stop-status" : {
datatype : dt.bool,
title : "Open/Close Status Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {},
systems:["blinds"]
}
roman-blinds-open-close
config : {
title : "Roman Blinds (Open/Close)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
open : {
datatype : dt.bool,
title : "Open Object"
},
"open-status" : {
datatype : dt.bool,
title : "Open Status Object"
},
close : {
datatype : dt.bool,
title : "Close Object"
},
"close-status" : {
datatype : dt.bool,
title : "Close Status Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {},
systems:["blinds"]
}
roman-blinds
config : {
title : "Roman Blinds (Position)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
position : {
datatype : dt.uint8,
title : "Position Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {
"max-state" : {
datatype : "number",
title : "Number of steps (2-6)"
}
},
systems:["blinds"]
}
sockets
config : {
title : "Sockets",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
"object-1" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-1" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-2" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-2" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-3" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-3" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-4" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-4" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-5" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-5" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
"object-6" : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status-6" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
},
settings : {},
systems:["power"]
}
ventilation-switch
config : {
title : "Ventilation On/Off",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
object : {
datatype : dt.bool,
title : "On/Off Object"
},
"object-status" : {
datatype : dt.bool,
title : "On/Off Status Object"
}
},
settings : {},
systems:["ventilation"]
}
ventilation
config : {
title : "Ventilation",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
switch : {
datatype : dt.bool,
title : "On/Off Object"
},
"switch-status" : {
datatype : dt.bool,
title : "On/Off Status Object"
},
scale : {
datatype : dt.float16,
title : "Temp Object"
},
"scale-status" : {
datatype : dt.float16,
title : "Temp Status Object"
},
},
settings : {
"min-value" : {
datatype : "number",
title : "Minimum value"
},
"max-value" : {
datatype : "number",
title : "Maximum value"
}
},
systems:["ventilation"]
}
window-move-stop
config : {
title : "Transom Window (Move/Stop)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
"move-direction" : {
datatype : dt.bool,
title : "Open/Close Object"
},
stop : {
datatype : dt.bool,
title : "Stop Object"
},
"stop-status" : {
datatype : dt.bool,
title : "Open/Close Status Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {},
systems:["windows"]
}
window-open-close
config : {
title : "Transom Window (Open/Close)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
open : {
datatype : dt.bool,
title : "Open Object"
},
"open-status" : {
datatype : dt.bool,
title : "Open Status Object"
},
close : {
datatype : dt.bool,
title : "Close Object"
},
"close-status" : {
datatype : dt.bool,
title : "Close Status Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {},
systems:["windows"]
}
window
config : {
title : "Transom Window (Position)",
fields : {
title : {
datatype : "string",
title : "Title"
}
},
objects : {
position : {
datatype : dt.uint8,
title : "Position Object"
},
"position-status" : {
datatype : dt.uint8,
title : "Position Status Object"
}
},
settings : {
"max-state" : {
datatype : "number",
title : "Number of steps (2-6)"
}
},
systems:["windows"]
}

 

 




Copyright
© Embedded Systems Rus
2019. All Rights Reserved