-
Notifications
You must be signed in to change notification settings - Fork 35
IoT Manager API
Приложение 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 секунды, тем самым показывая пользователю что действие выполнено не было.