Скрыть объявление
Управляйте вашими ESP8266 и другими устройствами прямо с телефона из любой точки мира, где есть интернет!
Подробности и обсуждение IoT Manager в этой теме. Официальный сайт приложения и документация IoTmanager.ru
Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

IoT Manager - предложения по расширению функционала

Тема в разделе "IoT Manager – мобильное приложение", создана пользователем Victor, 13 фев 2016.

Метки:
  1. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    нужно ее экранировать \ как и кавычки
     
  2. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    @Victor, да, экранировал.
    Брал сообщение из mqtt spy, чтобы исключить накладки.
    Сообщение выглядит так:
    Код (Text):
    1. {"id":11,"page":"LivingRoom","pageId":10,"topic":"/IoTmanager/DVES_06FD8A/sensor6","widget":"anydata","class1":"item no-border","style2":"font-size:18px;float:left","descr":"Влажность,%","class3":"balanced","style3":"font-size:18px;font-weight:bold;float:right;:before \{content:\"xxx\";\}"}
    В логах по прежнему ошибка парсинга JSON.
     
  3. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    жаль, видимо, такой вариант не пройдет
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.419
    Симпатии:
    1.100
    Возможна ли работа с IoT Manager c "AT" прошивками?
    Модули с таким функционалом для частных одиночных заказов на али стоят уже менее 700 руб, а через другие магазины или малый опт. и значительно меньше...
     
  5. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    в принципе возможно, но сейчас это обычному пользователю слишком сложно (нужно вручную создать JSON файл со стилями оформления и загрузить в телефон специально программой - данный функционал есть, но не дорабатывается по причине невостребованности, а сделать сервис, который будет генерить нужные JSON файлы в визуальном редакторе слишком трудоемко для бесплатного проекта, а делать платный мне не хочется). Есть подробное описание процесса для ESPEasy (на англ)
     
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.419
    Симпатии:
    1.100
    JSON файлы ныне может выдавать (и по SSL запросам/ответам) и хранить нормальная "AT" прошивка (к примеру уже указанный модуль).
    Так-же и что посылается и принимается и какие теги и прочее в MQTT/MQTTS. Нужна только настройка модуля для работы MQTT и IoT Manager.
    Но с этим как раз не справиться - нет популярного описания. Те, что есть, либо не по русски, либо с неверными устаревшими ссылками... :)
    Получается, чтобы что-то сделать с IoT Manager, необходимо к неделе изучения разного материала, совершенно не нужного для реализации на нем чего-либо.
    К примеру у меня желания выкинуть неделю, ради пары кнопок на телефоне нет. Проще взять что другое и за вечер слепить рабочий вариант.
     
    Последнее редактирование: 21 фев 2017
  7. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    Все описания я сделал на двух языках здесь Главная · IoT Manager (именно здесь все с учетом последних изменений)
    Протоколы обмена описаны тут Протокол обмена · IoT Manager
    Если на сайте какая-то страница открылась на английском - значит справа вверху жмем "Russian"
    Остальное все в примерах тут GitHub - 4refr0nt/iot-manager-demo: Demo sketches for IoT Manager https://play.google.com/store/apps/details?id=ru.esp8266.iotmanager

    Экран телефона условно разбит на виджеты (обычно виджет - это div элемент на всю ширину экрана, т.е. горизонтальный блок, но может быть и несколько виджетов в горизонтальном блоке - тогда применяется разметка bootstrap). У каждого виджета свой html код - он есть в описании. К этому коду можно применить HTML inline стили или готовые классы. Вы можете использовать стандартные классы цветов, классы полей, другие полезные классы и классы Bootstrap3 col-xs и col-xm для отображения виджетов в несколько колонок
    Виджеты сгруппированы на вкладки (страницы). Когда на телефоне вы выбираете какую-то вкладку (страницу) то на список виджетов накладывается фильтр (или снимается, если выбираете страницу "Все").

    Для языка С, где начинающим не комфортно работать со строками, собирая JSON строку конфигурации, предложен вариант генерации .h файлов с const char массивами из текстовых удобочитаемых JSON файлов

    Если использовать протокол v1, то от устройства потребуется отправка данных 2 раза: первый раз нужно отправить JSON строку с HTML классами и стилями (config) каждый раз, когда телефон подключается к брокеру и шлет HELLO и далее периодически отправляем только данные. Данные с устройства отправляем в топик, указанный ранее в config, JSON строкой {"status":xxx}. Не уверен, что такое получится реализовать на AT прошивке для RAK473, но этот вопрос я не изучал. Хотя, даже на bash c mosquitto_pub все работает.

    Если использовать протокол v2, то придется поставить node.js и разобраться c импортом конфига в телефон, но данные с устройства можно будет отправлять по протоколу Domoticz (по сути это всего лишь {"idx"=xxx, "svalue"=yyy}) и не обязательно периодически, а только тогда, когда придет запрос с телефона. Пример для v2 iot-manager-demo/demo1.js at master · 4refr0nt/iot-manager-demo · GitHub

    Как видно, описание принципов работы уложилось в 3 абзаца, деталей конечно больше, но все документировано.
    У пользователей основные трудности возникают с поднятием своих MQTT, настройкой и подключением. Используют не ту версию библиотеки MQTT в Arduino (хотя в каждом примере на нее есть ссылка) или бояться как огня Node.JS и не могут запустить простые примеры. Остальные трудности связаны с отсутствием понимания как устроен HTML.

    Так что, я думаю что вы справитесь за пару часов или даже быстрее :)
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.419
    Симпатии:
    1.100
    Нету простого пример как послать и сконфигурировать IoTmanager сообщениями.
    Приходиться рыться в всяких исходниках, в которых этот поцесс завуалирован спецификой процедур, на кой модуль написано (а он один - ESP8266 :)).
    Как не стараюсь - не проходит протокол. В телефоне пишет нет данных и псё. Хотя сам все отправляет и все логи во всех MQTT и даже в телефоне что-то принимают. Похоже какие-то проблемы с Pub-Topic и нигде внятного описания этого нет. :(
    Остальное всё понятно - я сам могу расписать до бит в сети и как они кодируются, хоть на WiFi поканально... :)
    Там, в RAK это всё делается просто. Есть даже софтина конфигурации, где наглядно можно отсылать/принимать данные MQTT(S) и т.д. Всё в MQTT передается и принимается, и остлеживается сторонними логерами, но вот полностью протокол что-то не идет. В том-же cloudmqtt есть Send message, но нет тупого примера как через них пустить IoTmanager, хотя-бы для теста...
     
    Последнее редактирование: 22 фев 2017
  9. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.419
    Симпатии:
    1.100
    В общем дело оказалось в "пузырьках":
    /IoTmanager
    HELLO
    /IoTmanager/dev-01/config
    {"id": "1","page": "boiler","pageId":1,"widget":"anydata","class1":"item no-border","style2":"font-size:16px;float:left","descr":"Hello IoTmanager","topic":"/IoTmanager/dev-01/anydata1","class3":"assertive", "style3":"font-size:40px;font-weight:bold;float:right"}
    /IoTmanager/dev-01/sensor1/status
    {"status":"1"}
    В примере стоят имена без кавычек ": Виджет anydata · IoT Manager
    Теперь вообще не ясно, где они нужны, а где нет :)
    ---------
    Ну вот и тестовый прогон на "AT" прошивке :)
    "AT" лог (раскрыть)
    Код (Text):
    1. Welcome to RAK473 <--- Включение модуля --->
    2. at+ascii=1
    3. OK
    4. at+auto_connect
    5. OK
    6. mac=34:C3:D2:69:86:6E
    7. addr=192.168.1.151
    8. mask=255.255.255.0
    9. gw=192.168.1.1
    10. dns1=192.168.1.1
    11. dns2=0.0.0.0
    12. at+mqtt_init=12345,100
    13. OK
    14. at+mqtt_auth=testrak473,testrak473
    15. OK
    16. at+mqtt_con=54.228.205.206,19912,0
    17. OK20
    18. at+mqtt_sub=/IoTmanager
    19. OK
    20. at+recv_data=20,19912,54.228.205.206,265,{"id": "1","page": "boiler","pageId":"1","widget":"anydata","class1":"item no-border","style2":"font-size:16px;float:left","descr":"Hello IoTmanager","topic":"/IoTmanager/dev-01/anydata1","class3":"assertive", "style3":"font-size:40px;font-weight:bold;float:right"}
    21. <--- Ожидание HELLO --->
    22. at+recv_data=20,19912,54.228.205.206,5,HELLO
    23. at+mqtt_pub=/IoTmanager/dev-01/config,0
    24. OK
    25. at+send_data=20,0,0,265,{"id": "1","page": "boiler","pageId":"1","widget":"anydata","class1":"item no-border","style2":"font-size:16px;float:left","descr":"Hello IoTmanager","topic":"/IoTmanager/dev-01/anydata1","class3":"assertive", "style3":"font-size:40px;font-weight:bold;float:right"}
    26. OK
    27. at+mqtt_pub=/IoTmanager/dev-01/anydata1/status,0
    28. OK
    29. at+send_data=20,0,0,16,{"status":"100"}
    30. OK
    31. at+send_data=20,0,0,16,{"status":"101"}
    32. OK
    33. at+send_data=20,0,0,16,{"status":"102"}
    34. OK
    35. at+send_data=20,0,0,16,{"status":"103"}
    36. OK
    37. at+send_data=20,0,0,16,{"status":"104"}
    38. OK
    39. at+send_data=20,0,0,16,{"status":"105"}
    40. OK
    41. at+send_data=20,0,0,16,{"status":"106"}
    42. OK
    43. at+send_data=20,0,0,16,{"status":"107"}
    44. OK
    45. at+send_data=20,0,0,16,{"status":"108"}
    46. OK
    47. at+send_data=20,0,0,16,{"status":"109"}
    48. OK
    49. at+send_data=20,0,0,16,{"status":"110"}
    50. OK
    51. at+mqtt_discon=20
    52. OK

    iotmanager.ttl - файл макро-скрипта для терминальной программы "Tera Term"
    iotmanager.ttl (раскрыть)
    Код (Text):
    1.  
    2.     timeout = 0
    3.     testdata = 100
    4.     wait 'RAK473'
    5.     beep 0
    6. :new_start
    7.     sendln 'at+ascii=1'
    8.     timeout = 0
    9.     wait 'OK' 'ERROR' 'RAK473'
    10.     If result=3 goto new_start
    11.     If result=2 goto error_end
    12.     mpause 500
    13. :connet_ap
    14.     timeout = 10
    15.     sendln 'at+auto_connect'
    16.     wait 'OK' 'ERROR' 'RAK473'
    17.     If result=3 goto new_start
    18.     If result=1 goto start_mqtt
    19.     if result=0 goto connet_ap
    20.     pause 1
    21.     If result=2 goto connet_ap
    22. :start_mqtt
    23.     timeout = 0
    24.     sendln 'at+mqtt_init=12345,100'
    25.     wait 'OK' 'ERROR' 'RAK473'
    26.     If result=3 goto new_start
    27.     If result=2 goto start_mqtt
    28.     sendln 'at+mqtt_auth=testrak473,testrak473'
    29.     wait 'OK' 'ERROR' 'RAK473'
    30.     If result=3 goto new_start
    31.     If result=2 goto start_mqtt
    32.     sendln 'at+mqtt_con=54.228.205.206,19912,0'
    33.     wait 'OK' 'ERROR' 'RAK473'
    34.     If result=3 goto new_start
    35.     If result=2 goto error_mqtt
    36.     sendln 'at+mqtt_sub=/IoTmanager'
    37.     wait 'OK' 'ERROR' 'RAK473'
    38.     If result=3 goto new_start
    39.     If result=2 goto error_mqtt
    40.     wait 'HELLO' 'RAK473'
    41.     If result=2 goto new_start
    42. :send_hello
    43.     timeout = 0
    44.     beep 0
    45.     sendln 'at+mqtt_pub=/IoTmanager/dev-01/config,0'
    46.     wait 'OK' 'ERROR' 'RAK473'
    47.     If result=3 goto new_start
    48.     If result=2 goto error_mqtt
    49.     sendln 'at+send_data=20,0,0,265,{"id": "1","page": "boiler","pageId":"1","widget":"anydata","class1":"item no-border","style2":"font-size:16px;float:left","descr":"Hello IoTmanager","topic":"/IoTmanager/dev-01/anydata1","class3":"assertive", "style3":"font-size:40px;font-weight:bold;float:right"}'
    50.     wait 'OK' 'ERROR' 'RAK473'
    51.     If result=3 goto new_start
    52.     If result=1 goto send_data
    53. :error_mqtt
    54.     timeout = 0
    55.     sendln 'at+mqtt_discon=20'
    56.     wait 'OK' 'ERROR' 'RAK473'
    57.     If result=3 goto new_start
    58.     If result=2 goto error_end
    59.     goto start_mqtt
    60. :send_data
    61.     timeout = 0
    62.     sendln 'at+mqtt_pub=/IoTmanager/dev-01/anydata1/status,0'
    63.     wait 'OK' 'ERROR' 'RAK473'
    64.     If result=3 goto new_start
    65.     If result=2 goto error_end
    66. :send_data1
    67.     timeout = 0
    68.     sprintf 'at+send_data=20,0,0,16,{"status":"%d"}' testdata
    69.     testdata = testdata + 1
    70.     sendln inputstr
    71.     wait 'OK' 'ERROR' 'RAK473'
    72.     if testdata > 110 goto test_end
    73.     If result=3 goto new_start
    74.     If result=2 goto error_end
    75.     timeout = 3
    76.     wait 'HELLO' 'RAK473'
    77.     If result=1 goto send_hello
    78.     If result=2 goto new_start
    79.     goto send_data1
    80. :error_end
    81.     beep 0
    82. :test_end
    83.     sendln 'at+mqtt_discon=20'
    84.  

    Ситуация с " не понятна - они нужны для увеличения объема отсылаемых данных?
     
    Последнее редактирование: 22 фев 2017
    Victor нравится это.
  10. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    Мы отправляем стандартную JSON пару key-value и, в классическом JSON, двойные кавычки вокруг key обязательны. Однако, если потом мы эту строку обрабатываем в JS с помощью JSON.stringify, то кавычки не обязательны - stringify добавит их автоматом (именно так и сделано во всех NodeJS примерах, а в примерах для Arduino, например, наоборот - везде двойные кавычки). Для value кавычки используются только для передачи строковых данных: {"status":1} передаст int 1, а {"status":"1"} передаст строку 1, независимо от того, в JS это или нет.
    В документации IoT Manager примеры без кавычек, хотя не должно быть привязки к конкретному языку программирования (а по факту дан JS). Но, подразумевается, что пользователь знаком с основными принципами построения JSON и добавит кавычки сам, если его язык программирования не делает это автоматом.

    JSON в С++ Запись данных в формате JSON
    Библиотека ArduinoJSON GitHub - bblanchon/ArduinoJson: C++ JSON library for IoT. Simple and efficient.
    В JS все немного запутанней для понимания (новички часто путают JS объекты и JSON, потому что они ведут себя очень похоже), зато проще с практической точки зрения - необязательны кавычки для key, после последнего элемента допускается запятая и т.д.
     
  11. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.419
    Симпатии:
    1.100
    Тогда где надо " а где нет для чисел?
    Это зависит от самого IoT Manager, но ни слова об этом нигде нет. Только гадать. :)
     
  12. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    Должно быть без разницы, т.к. IoT Manager сам, там где требуется, пытается сделать parseInt для строковых данных.
    А вообще зависит от виджета. anydata отображает данные как есть и ему без разницы строка там или число. А вот chart ожидает что прилетит int или массив из int
     
  13. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    6.419
    Симпатии:
    1.100
    Обычно интерпретатор смотрит, если ему нужно числовой аргумент, а переменная строковая, то переводит в числовое значение. Там тоже не всё гладко – формат числа бывает разный (например восьмеричный). Кароче понаписали кривых языков с неявным синтаксисом. :)
    Printfв C/C++ тоже любит издеваться над пользователями – “\0x12abcdef” воспринимается по разному, и только в последние годы стали вписывать для конкретного компилятора как он это сожрет :)
     
    Последнее редактирование: 22 фев 2017
  14. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    Да уж, но есть и еще проблема. IoT Manager исполняется в Android WebView (у Apple тоже есть аналогичная штука), которых тысячи реализаций в зависимости от версии Android и модели смартфона, поэтому могут даже не все функции JS поддерживаться (т.е. ситуация намного хуже, чем с браузерами). Частично эти проблемы я решаю подключением полифиллов, но и это закрывает не все проблемы.
     
  15. roiksv

    roiksv Новичок

    Сообщения:
    20
    Симпатии:
    0
    Если есть-не пинайте и скажите где и как. Отображение виджета в закладке, но не на общей станице. Или нужна отдельная страница например "Настройки" куда валить виджеты, которые не хочешь постоянно видеть (например есть датчик DHT11, данные влажности с которого влияют на работу вытяжки. Двумя виджетами я могу задать верхний-нижний пороги срабатывания вытяжки, но я не хочу видеть эти виджеты постоянно)
     
  16. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    В настройках приложения отключите отображение страницы "Все" и раскидайте виджеты на 2 страницы - первая для параметров, которые нужны постоянно, а вторая, как вы и предлагали, "настройки"
    Пробуйте в новой бета-версии Анонсы новых версий IoT Manager
     
  17. roiksv

    roiksv Новичок

    Сообщения:
    20
    Симпатии:
    0
    Так в том и хотелка, что хочется иметь вкладку "Все"
     
  18. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    Зашёл сказать спасибо за before и after!
    Заливаю прошивку, запускаю IoTmanager - и тут анонс новой версии! before и after!!! Ура! :)
     
    Victor нравится это.
  19. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    Протестировал, работает!
    Код (Text):
    1. {"id":2,"page":"LivingRoom","pageId":10,"topic":"/IoTmanager/DVES_06FD8A/sensor1","widget":"anydata","status":"0.00","after":"C","class1":"item no-border","style2":"font-size:18px;float:left","descr":"Sensor A","class3":"balanced","style3":"font-size:18px;font-weight:bold;float:right"}
    Screenshot_2017-03-14-00-09-22_ru.esp8266.iotmanager[1].png
     
    Victor нравится это.
  20. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    @Victor, а можно ли в status или before/after вставить представление unicode-символа? Очень хочется использовать символ градуса, да и других востребованных символов хватает...
     

Поделиться этой страницей