Очень гибко настраиваемый виджет для управления устройствами, имеющими два состояния. Например: ВКЛЮЧЕНО и ВЫКЛЮЧЕНО
<div class="class1" style="style1">
<div class="item-toggle descrClass" style="descrStyle">
<i class="iconClass" style="iconStyle">descr</i>
<label class="toggle">
<input type="checkbox" />
<div class="track" style="trackStyle">
<div class="handle" style="handleStyle"></div>
</div>
</label>
</div>
</div>
class1
, descrClass
- string, необязательный. HTML класс для элемента div
верхнего уровня. Вы можете использовать стандартные классы цветов, классы полей, другие полезные классы и классы Bootstrap3 col-xs и col-xm для отображжения виджетов в несколько колонок, например: item no-border
style1
, descrStyle
, descrStyleOff
- string, необязательный. HTML стиль для элемента div
верхнего уровня. Вы можете использовать любой стандартный стиль HTML5, например: padding-top:5px;padding-bottom:10px;border-bottom:dotted 1px
(descrStyle
для состояния ВКЛЮЧЕНО и descrStyleOff
для состояния ВЫКЛЮЧЕНО)
iconClass
, iconClassOff
- string, необязательный. Класс для указания иконки и ее расположения (используйте Ionic icons, (iconClass
для состояния ВКЛЮЧЕНО и iconClassOff
для состояния ВЫКЛЮЧЕНО), например: ion-checkmark-circled
iconStyle
, iconStyleOff
- string, необязательный. Cтиль иконки (любой HTML5 стиль), например: font-size:40px;
trackStyle
, handleStyle
, trackStyleOff
, handleStyleOff
- string, необязательный. Cтиль элемента toggle
, например background-color:#FFF;
.
id
- integer, обязательный. Уникальный идентификатор сенсора в устройстве. Используется в том числе и для сортировки виджетов на экране
page
- string, необязательный. название страницы (группы виджетов), например kitchen
. Используется для разделения виджетов на группы, когда вы не хотите, чтобы все отображалось “кучей” на одном экране.
pageId
- integer, необязательный. Идентификатор страницы. Используется в том числе и для сортировки страниц. Всегда должен быть больше нуля, 0
зарезервирован для страницы “Все”. Например: 1
или 7
.
topic
- string, обязательный. Топик брокера. Первая часть топика /IoTmanager
(может быть изменен в настройках приложения начиная с версии 1.5.0
). Этот префик нужен чтобы можно было разделять все сообщения на группы и не принимать сообщения, предназначенные другим проектам. Топик сенсора должен быть уникальным (если будет у двух виджетов один топик, то оба виджета будут работать синхронно). Пример: /IoTmanager/device01/sensor01
.
Виджет может получать “сообщение о состоянии” с помощью status
сообщения. Состояние сенсора мобильное приложение определяет по данным в топике статуса /IoTmanager/device01/sensor01/status
для отображения данных виджетом.
Устройство должно отпралять сообщение status
в формате JSON строки, например: {status:1}
.
Т.е. сообщение статуса - это состояние переключателя 0
или 1
. Состояние переключателя может отображаться в виджете сменой иконки, сменой оформления (например, цвет или размер шрифта) или изменением descr
Примеры: { "descrStyle" : "display:none;" }
, { "descrClass" : "calm-bg light-900" }
Виджет можно отобразить или скрыть в любое время: отправьте конфиг, содержащий только id
виджета для его отключения. Например: { "id":"5" }
или полный конфиг для его отображения в приложении.
user
- string, необязательный. Если эта опция присутствует в config, то IoT Manager сравнивает имя пользователя брокера и поле user
. Если они совпадают, то config обрабатывается далее, если нет, то пропускается.
users
- string, необязательный. Список пользователей, разделенных пробелаами. Если эта опция присутствует в config, то IoT Manager ищет имя пользователя брокера в строке users
. Если имя пользователя присутствует в списке, то config обрабатывается далее, если нет, то пропускается.
Эти дополнительные поля не предназначены для управлением контроля доступа. Для усуществления контроля доступа на уровне пользователей используйте стандартные возможности брокера - ACL.
uuid
- string, необязательный. Если данная опция присутствует, то сообщение будет обрабатываться только устройством с указанным UUID.
minWidth
- integer, необязательный. Если присутствует, то парсер сравнивает ширину экрана устройства и значение minWidth
. Если device_width >= minWidth
, то config обрабатывается далее, если нет, то пропускается.
maxWidth
- integer, необязательный. Если присутствует, то парсер сравнивает ширину экрана устройства и значение maxWidth
. Если device_width <= maxWidth
, то config обрабатывается далее, если нет, то пропускается.
Обычно, сообщение status
содержит только значение виджета, например: { status: 50 }
или { status: "50" }
.
Но, в некоторых случаях возможно, что вы захотите использовать дополнительное информирование пользователя:
vibrate
- включает вибрацию при приеме данного сообщения, например: { status: 50, vibrate: 100 }
, где 100
- время вибрации в миллисекундах.
toast
- отображает кратковременное всплывающее сообщение, так называемый toast
, при получении сообщения, например: { status: 50, toast: "Alert!" }
, где Alert!
- отображаемое сообщение.
toastLong
- - отображает более продолжительное всплывающее сообщение, так называемый toastLong
, при получении сообщения, например: { status: 50, toastLong: "Alert!" }
, где Alert!
- отображаемое сообщение.
beep
- звуковой сигнал при получении сообщения, например: { status: 50, beep: 1 }
, где 1
- количество звуковых сигналов.
speech
- string, текст для голосового синтезатора, например: { status: 50, speech: 'hello'}
rate
- float, от 0
до 1
скорость, например: { status: 50, speech: 'hello', rate: 0.7 }
locale
- string, язык, например: { status: 50, speech: 'hello', rate: 0.7, locale: 'fr-FR' }
. Если язык не задан, то используется en-US
. Русский и украинский языки не поддерживается.
{
id : 1,
widget : "toggle",
descr : "Light 1",
topic : prefix + "/" + deviceID + "/light1"
}
{
id : "2",
descr : "Light 2",
widget : "toggle",
topic : prefix + "/" + deviceID + "/light2",
color : "orange" // any HTML color code
}
{
id : "3",
descr : "Light 3",
widget : "toggle",
topic : prefix + "/" + deviceID + "/light3",
color : "#00FF00",
descrStyle : "color:#FFFF00"
}
{
id : "4",
descr : "Light 4",
widget : "toggle",
topic : prefix+ "/" + deviceID + "/light4",
color : "blue", // any HTML color code
iconStyle : "display:none;"
}
{
id : "5",
descr : "Light 5",
widget : "toggle",
topic : prefix + "/" + deviceID + "/light5",
iconClass : "ion-battery-charging",
iconClassOff : "ion-battery-low",
iconStyle : "font-size:30px;color:#4cd964;",
iconStyleOff : "font-size:30px;color:red;",
descrStyle : "font-size:20px;line-height:1.5em;"
}
{
id : "6",
descr : "Light 6",
widget : "toggle",
topic : prefix + "/" + deviceID + "/light6",
descrClass : "balanced-900 text-center",
descrStyle : "background-color:#0F0;border:solid 2px #F00;font-size:20px;font-weight:bold;",
descrStyleOff : "background-color:#0F0;border:solid 2px #000;font-size:20px;font-weight:bold;",
iconStyle : "color:red;font-size:25px;",
iconStyleOff : "color:black;font-size:25px;",
trackStyle : "background-color:red;",
trackStyleOff : "background-color:white;",
handleStyle : "background-color:yellow;",
handleStyleOff : "background-color:green;"
}