• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Не понимаю как создать программу

starmos

New member
Есть какие/где-нибудь примеры, как с версией 2 работать на C? На JS что-то много ему присущей специфики, например (в основном) при создании конфигурации виджетов. Мне непонятно, как это сделать на C. Каждый виджет судя по всему имеет разный набор параметров? Непонятно какие из них отвечают за положение виджета на странице и на какой странице он будет находиться. Непонятно где задается название собственно страницы. Например вижеты имеют параметр "pageId: 1" - я понимаю, что это идентификатор страницы и все виджеты с таким значением = будут на одной странице? А в каком порядке они там будут располагаться? По параметру "order: 10"? Это "10" что значит? Еще некоторые виджеты имеют параметр, например "page: "Home"", а другие не имеют - кто первый указал этот параметр, тот и определяет название страницы? А если следующий виджет с тем же pageId будет иметь другое значение page, то название страницы переопределится?
 

Victor

Administrator
Команда форума
Есть какие/где-нибудь примеры, как с версией 2 работать на C?
https://github.com/4refr0nt/iot-manager-demo/tree/master/ArduinoIDE/ESP8266/official-demo - примеры на Arduino для старых версий IoT Manager. Чтобы понять принцип как делать - они вполне подойдут, хоть и виджеты изменились во 2-й версии IoT Manager и использование этих примеров без правок приведет, скорее всего, к некорректному отображению.
https://github.com/DmitryBorisenko33/esp32-esp8266_iot-manager_modules_firmware - это готовая прошивка, которая умеет работать со второй версией IoT Manager. Можете ее просто прошить, а можете посмотреть как сделано
Например вижеты имеют параметр "pageId: 1" - я понимаю, что это идентификатор страницы и все виджеты с таким значением = будут на одной странице?
да
А в каком порядке они там будут располагаться? По параметру "order: 10"? Это "10" что значит?
Все просто - нумерация через 10 позволяет легко вставлять новые виджеты без перенумерации существующих, например 5, 10, 20, 22, 30.
"10" значит, что виджеты с меньшим значением order будут располагаться выше, а с большим значением - ниже
Еще некоторые виджеты имеют параметр, например "page: "Home"", а другие не имеют - кто первый указал этот параметр, тот и определяет название страницы? А если следующий виджет с тем же pageId будет иметь другое значение page, то название страницы переопределится?
да на оба вопроса.
 

starmos

New member
Еще вопросы есть:
1. Что такое параметр Path в описании подключения? Путь до чего?
2. Параметр Prefix - это старший уровень топика? Т.е. если у меня управление котлом и темы вида Kotel/..../...., то префикс будет Kotel?
3. Конфигурация виджетов пишется в тему /config (в моем примере Kotel/config) в виде одной строки формата "{параметры виджета1}....{параметры виджетаN}"? Или как-то разбивается? (у меня есть работавший ранее пример какой-то предыдущей версии, там конфигурация отправлялась с помощью циклического вызова функции публикации, но разве при этом не будет перезаписи?)
Я пытаюсь наладить подключение смартфона к брокеру.
И чтобы не "вставать" два раза:
4. А русский язык где-нибудь возможен? В интерфейсе, или хотя бы в надписях виджетов?
 

Victor

Administrator
Команда форума
Еще вопросы есть:
1. Что такое параметр Path в описании подключения? Путь до чего?
некоторые брокеры требуют URL вида wss://host:port/path - вот для них этот параметр. Если у вас не требуется это, то просто не заполняйте
2. Параметр Prefix - это старший уровень топика? Т.е. если у меня управление котлом и темы вида Kotel/..../...., то префикс будет Kotel?
это самый старший уровень топика для того, чтобы на одном брокере можно было работать нескольким пользователям, тогда в качестве префикса используйте любую уникальную строку
3. Конфигурация виджетов пишется в тему /config (в моем примере Kotel/config) в виде одной строки формата "{параметры виджета1}....{параметры виджетаN}"? Или как-то разбивается? (у меня есть работавший ранее пример какой-то предыдущей версии, там конфигурация отправлялась с помощью циклического вызова функции публикации, но разве при этом не будет перезаписи?)
перезаписи не будет, почитайте про протокол MQTT
IoT Manager 2.x использует протокол обмена v1, реализованный поверх MQTT, описано это здесь http://iotmanager.ru/exchange/
4. А русский язык где-нибудь возможен? В интерфейсе, или хотя бы в надписях виджетов?
В интерфейсе пока нет других языков, кроме английского в IoT Manager 2.X, версия 1.X многоязычная.
В обеих версиях IoT Manager можно использовать надписи на любом языке в кодировке UTF-8, там где текст задается пользователем
 

starmos

New member
Наконец получилось у меня отобразить виджеты на экране смартфона. Пока только виджет, показывающий температуру - anydata. Но вопросы остались - параметр id для виджета нужен или нет? Значения параметров id, pageid, order - надо передавать числом или строкой (в виде ""order":10 или "order":"10")? И как вообще передаются числа, числом или строкой, например в status? Числа с плавающей точкой можно передавать, или только целые? Все это к тому, что виджеты на экране я получил, а значения им передать не могу. Я передаю строку "{"status":"30"}" в тему .../status - а на экране шиш, передавать одну из температур числом = я тоже пробовал. В MQTT Raw Data приложения видно, что строка значения так и получается, как я выше написал и получается именно в тему /status. Как правильно передать значение? Надо ли указывать в конфигурации топик с /status, или приложение само знает, что должно обращаться у указанному топику за значением виджета?
Я пока сделал для примера 3 виджета, у всех "page":"Home", но никакой страницы Home на экране не появилось.
Мне нравится сама идея, когда конфигурация приложения считывается с устройства (кому еще знать что как должно быть как не устройству и его разработчику? Но ОЧЕНЬ отталкивает и тогда и сейчас отсутствие внятных описаний - ни хрена же непонятно.
 

starmos

New member
Со страницами разобрался - все работает, если их несколько. И с передачей значений тоже. Оказывается, что приложение работает ТОЛЬКО с топиками определенного формата: <префикс>/<имя устройства>/<имя датчика>. Для вывода значений в виджет, в конец топика добавляется /status. Если захотеть например выделить все датчики в одну группу, что позволяет MQTT, например у меня было 3 датчика температуры и между именем устройства и именем датчика было /Temperature - как результат данные не передавались. Я считаю что возможность группировки датчиков было бы хорошо добавить, т.к. когда их мало, то легко присвоить им каждому уникальное имя, а когда их много, то группировка помогла бы их упорядочить. Имя устройства для этого не очень подходит, т.к. оно отображается внизу основного экрана приложения и может при таком подходе вводить в заблуждение, наверное. Сама идея имени устройства = правильная, т.к. на объекте может быть несколько "устройств": отопление, вентиляция, водоснабжение, освещение. Со своими системами управления, я бы так разбивал лично например. Так что вложенные уровни, 1 или 2, можно было бы добавить?
 

starmos

New member
Значение с плавающей точкой можно передавать в виде строки. Чем дальше разбираешься = тем больше нравится. Единственное, что не хватает проекту = хорошей документации, а так все пока хорошо.
 

starmos

New member
Как можно изменить иконку и/или цвет у виджета (а не только значение)? Записать несколько параметров в топик /status? Или продублировать всю конфигурацию виджета с другими параметрами?
 
Сверху Снизу