English

Виджет toggle

Очень гибко настраиваемый виджет для управления устройствами, имеющими два состояния. Например: ВКЛЮЧЕНО и ВЫКЛЮЧЕНО

Скриншот

HTML код

        <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" } или полный конфиг для его отображения в приложении.

Дополнительные опции в config

Пользователи

user - string, необязательный. Если эта опция присутствует в config, то IoT Manager сравнивает имя пользователя брокера и поле user. Если они совпадают, то config обрабатывается далее, если нет, то пропускается.

users - string, необязательный. Список пользователей, разделенных пробелаами. Если эта опция присутствует в config, то IoT Manager ищет имя пользователя брокера в строке users. Если имя пользователя присутствует в списке, то config обрабатывается далее, если нет, то пропускается.

Эти дополнительные поля не предназначены для управлением контроля доступа. Для усуществления контроля доступа на уровне пользователей используйте стандартные возможности брокера - ACL.

UUID

uuid - string, необязательный. Если данная опция присутствует, то сообщение будет обрабатываться только устройством с указанным UUID.

minWidth и maxWidth (как @media в CSS)

minWidth - integer, необязательный. Если присутствует, то парсер сравнивает ширину экрана устройства и значение minWidth. Если device_width >= minWidth, то config обрабатывается далее, если нет, то пропускается.

maxWidth - integer, необязательный. Если присутствует, то парсер сравнивает ширину экрана устройства и значение maxWidth. Если device_width <= maxWidth, то config обрабатывается далее, если нет, то пропускается.

Дополнительные опции status сообщения

Обычно, сообщение status содержит только значение виджета, например: { status: 50 } или { status: "50" }.

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

vibrate

vibrate - включает вибрацию при приеме данного сообщения, например: { status: 50, vibrate: 100 }, где 100 - время вибрации в миллисекундах.

toast

toast - отображает кратковременное всплывающее сообщение, так называемый toast, при получении сообщения, например: { status: 50, toast: "Alert!" }, где Alert! - отображаемое сообщение.

toastLong - - отображает более продолжительное всплывающее сообщение, так называемый toastLong, при получении сообщения, например: { status: 50, toastLong: "Alert!" }, где Alert! - отображаемое сообщение.

beep

beep - звуковой сигнал при получении сообщения, например: { status: 50, beep: 1 }, где 1 - количество звуковых сигналов.

text2speech

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"
}

Пример 2: конфигурация в старом стиле, цветная иконка слева

{
        id     : "2",
        descr  : "Light 2",
        widget : "toggle",
        topic  : prefix + "/" + deviceID + "/light2",
        color  : "orange" // any HTML color code
}

Пример 3 цветная иконка и цветное описание виджета

{
        id     : "3",
        descr  : "Light 3",
        widget : "toggle",
        topic  : prefix + "/" + deviceID + "/light3",
        color  : "#00FF00",
        descrStyle : "color:#FFFF00"
}

Пример 4 - виджет без иконки

{
        id        : "4",
        descr     : "Light 4",
        widget    : "toggle",
        topic     : prefix+ "/" + deviceID + "/light4",
        color     : "blue", // any HTML color code
        iconStyle : "display:none;"
}

Пример 5 - иконка задана пользователем и описание большим шрифтом

{
        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;"
}

Пример 6

{
        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;"
}

Другие примеры

Demo sketches for Arduino IDE and NodeJS