Skip to content

IoT Manager API

Dmitry Borisenko edited this page Aug 22, 2020 · 32 revisions

Приложение iot Manager способно подключаться к mqtt брокеру. Взаимодействие осуществляется по mqtt в формате json. Для того что бы получить json для того или иного виджета смотрите раздел приложения widget collection

Порядок взаимодействия:

1. получаем на микроконтроллере (esp8266/32), который является клиентом нашего брокера, сообщение HELLO, которое отправляет приложение в топик /prefix при подключении к брокеру (когда нажали на облако).

2. по его получению отправляем в топик /prefix/termostat/config json текст виджета из widget collection, в данном случае termostat - имя устройства, может быть любым.
Берите json необходимых Вам виджетов из раздела приложения widget collection

К примеру мы отправили такой текст:

{
"widget": "anydata",
"page": "Датчики",
"order": "1",
"descr": "Наш новый виджет",
"topic": "/prefix/termostat/temperature1",
"after": "C",
"icon": "thermometr",
"color": "red",
"descrColor": "red"
}

В котором:

  • "widget": "anydata" это тип виджета, все типы смотрите в меню приложения в widget collection
  • "page": "Датчики" это вкладка в приложении, все виджеты имеющие одинаковое название вкладок будут помещены на одной вкладке. Что бы вкладки появились нужно минимум два виджета с двумя разными названиями вкладок page
  • "order": "1" этот параметр отвечает за сортировку виджетов, виджеты будут выстраиваться в установленном порядке
  • "descr": "Наш новый виджет" это название виджета в приложении
  • "topic": "/prefix/termostat/temperature1" - это теперь топик данного виджета, termostat - имя устройства, temperature1 - уникальное имя данного конкретного виджета, в рамках одного устройства эти имена должны быть всегда разные
  • "after": "C" это символ который появится после цифры, символ единиц измерения
  • "icon": "thermometr" это тип отображаемой иконки. Иконки, которые поддерживаются iot manager
  • "color": "red" цвет надписи
  • "descrColor": "red" цвет названия виджета

3. Теперь мы хотим послать данные в наш виджет. Для этого мы берем его топик /prefix/termostat/temperature1 и добавляем слово status
Получаем /prefix/termostat/temperature1/status Теперь в этот топик отправляем данные. Данные должны быть в формате json.

Что бы отправить число 60, отправляем json вида:

{
"status":60
}

Что бы отправить любой текст, отправляем json вида:

{
"status":"text"
}

важное замечание: Вы так же можете отправлять в виджет любой другой json например:
{"descr":"Новое имя"} или {"after":"mBar"} и это поле будет тут же переписано. Таким образом Вы можете менять налету, в режиме реального времени вид виджета

4. Если виджет является кнопкой, или любым другим виджетом способным не только отображать, но и посылать данные (например range), то данные этого виджета мы будем получать в топик /prefix/light/button1/control. Кнопка при нажатии пришлет в этот топик либо ноль либо единицу. Ползунок пришлет установленную позицию.

При получении данных в control мы должны сразу же отправить отчетные данные в status. Так реализована обратная связь.

Разберемся с этим на примере кнопки. Например мы нажали в приложении на кнопку и поставили ее в положение включить. В этот же момент приложение пошлет в топик /prefix/light/button1/control единицу. На контроллере получив эту единицу мы должны отчитаться приложению о том что она получена. И мы отправляем эту же единицу в /prefix/light/button1/status Тогда приложение будет считать, что команда долетела и кнопка не вернется больше в исходное состояние. Иначе, если обратная команда отправленна не будет, приложение вернет кнопку в исходное состояние через 2 секунды, тем самым показывая пользователю что действие выполнено не было.

Clone this wiki locally