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

IoT Manager - сообщаем о багах

dao89

New member
Получилось сумбурно... и я прекрасно понимаю, что концепция программы выбрана и вряд ли автор захочет её менять, так что можно считать всё ниженаписанное оффтопом и не читать.

Я смотрю не одному мне жутко не нравится концепция настройки IoTmanager через ESP8266 или через Arduino (pro mini или другая плата). У меня, как и у @Plamen, была идея на OpenWRT поднять "слушалку" запросов от IoTmanager и публиковать конфиг по запросу. Но пока от этой идеи отказался в пользу установки на OpenWRT, наряду с mosquitto, веб-сервера lighttpd + php, нашел в интернете простенький рабочий phpMQTT класс. Одним словом, делаю простую страницу, с которой можно будет с любого устройства (компьютер или любой телефон) управлять умным домом.
Сейчас код, который обеспечивает обработку сообщений, у меня довольно лаконичен (в этом куске идёт управление двумя светодиодными лентами на кухне и в ванной, датчиками движения на кухне и в ванной, вентилятором в ванной):
Код:
void mqttData(void * response) {
    ELClientResponse *res = (ELClientResponse *)response;

    String topic = res->popString();
    String data = res->popString();
 
    if (topic == F("/set/va/fan")) {
        if (data == "on") digitalWrite(VA_FAN_PIN, HIGH);
        else if (data == "off") digitalWrite(VA_FAN_PIN, LOW);
    } else
    if (topic == F("/set/va/pir/max")) {
        vaPIR.setMaxBrightness(uint8_t(data.toInt()));
    } else
    if (topic == F("/set/va/pir/state")) {
        if (data == "on") vaPIR.enable();
        else if (data == "off") vaPIR.disable();
    } else
    if (topic == F("/set/va/le")) {
        vaLED.setTarget(uint8_t(data.toInt()));
    } else
    if (topic == F("/set/ku/pir/max")) {
        kuPIR.setMaxBrightness(uint8_t(data.toInt()));
    } else
    if (topic == F("/set/ku/pir/state")) {
        if (data == "on") kuPIR.enable();
        else if (data == "off") kuPIR.disable();
    } else
    if (topic == F("/set/ku/le")) {
        kuLED.setTarget(uint8_t(data.toInt()));
    }
}
Код отправки показаний с датчиков освещенности на кухне и влажности\температуры в ванной ещё компактнее. Не думаю, что у кого-то получилось подключить столько всего (две led ленты (с ШИМ у ESP вообще всё не очень хорошо), два датчика движения, реле, DHT. фоторезистор и ещё есть планы по добавлению устройств) к ESP8266 напрямую ;) собственно поэтому у меня ESP8266 с прошивкой ESP-Link выступает только как мост между pro mini и домашним mqtt сервером).
Так вот, когда я посмотрел на примеры настройки IoTmanager я немного опешил. Единственная мысль была - "вот ЭТО всё мне предлагают пихать микроконтроллер? он не должен этим заниматься!". И не у одного меня такие мысли, выходит. Собственно, одним из факторов отказа (по крайней мере на данном этапе) от IoTmanager является её ненативность. Была бы программа нативной для андроида - я бы, скорее всего, всё-таки использовал бы её.
P.S. Автору в любом случае большое спасибо за труды, они определенно для многих полезны. Сейчас подобных программ всего раз два и обчелся...
 

Mainscs

Member
Уважаемый dao89! Позвольте с Вами согласиться и не согласиться одновременно.
Безусловно, не существует идеального приложения, позволяющая решать абсолютно все. Это зависит от конкретной задачи, и у каждого есть свое видение решения своей проблемы.
На мой взгляд, это приложение наиболее близко подходит к одному из способов реализации опроса и управления несколькими контроллерами, которые расположены в совершенно разных местах, помещениях или даже концах света. Каждый из них решает одну или или несколько маленьких задачек и имеет свой уникальный набор данных и кнопок. И, что важно, исключение или добавление нового контроллера в систему не требует каких-либо изменений в программу управления ими, расположенной на андроиде, поскольку данные и картинку для iot каждый контроллер формирует самостоятельно.
По этой причине сборку картинки в каждом контроллере для отображения в iot нельзя назвать простой.
Это плата за возможность гибко менять конфигурацию всей системы без изменения основного управляющего приложения iot.
Ну, а во-вторых, автор iot Victor очень доброжелательно относится ко всем нападкам в свой адрес, оперативно и конструктивно отвечает на вопросы участников форума, а также успешно реализует их пожелания. Просто приятно работать. Ну, а ошибки есть у всех!!!!

И еще...
Я не собираюсь умничать или кого-нибудь обижать, но уважаемые коллеги!
Если у Вас присутствуют сбои в работе системы, попробуйте использовать самые первые скетчи. Они все работают, значит soft в порядке. Возможно, существуют проблемы с железом. Нужно проверить качество питания контроллера. Не забывайте, что потребление esp-07 может скачком меняться от 10 до 300 мА (для примера на резисторе 1 Ом это провал питания на 0,3V!!!). Воспользуйтесь не тестером, а осциллографом, поставьте электролиты и керамику на питание, проверьте наличие всех требуемых подтягивающих резисторов и конденсатора на сбросе.
Проверьте правильность настроек маршрутизатора. Обратите внимание на возможность его перегрева. Очень помогает обычный 9-12 см 12V вентилятор от компьютера, подключенный в порт usb маршрутизатора и работающий на выдув из роутера через вентиляционные отверстия, чтобы не сосать в корпус пыль. За счет 5 V питания из usb вентилятор 12V беззвучно еле крутится, но очень хорошо охлаждает.
Когда сбои исчезнут, можно приступить к реализации своих глобальных задач.
Удачи всем!!!
 
Последнее редактирование:

Noonan

New member
Добрый день. не работают push-уведомления. Что надо сделать?
Вот инфо из сериал порта.
PUSH: try to send push notification...
POST /api/v1/notifications HTTP/1.1
Host:
onesignal.com
User-Agent: esp8266.Arduino.IoTmanager
Content-Length: 195
Content-Type: application/json
Connection: close
{"app_id": "b3b808b2-7e17-4415-8c2c-30e085dba0f2","include_player_ids":["b3b808b2-7e17-4415-8c2c-30e085dba0f2"],"android_group":"IoT Manager","contents": {"en": "Kitchen ADC more then 100! (0)"}}
PUSH: done.
 

Shyster

New member
Добрый день! Пытаюсь подключиться к *cloudmqtt.com но соединения не происходит в логе пишет "trying connect to..." потом "client offline (mqtt)" (лучше лог сделать поле edit с readonly для копипаста)
У меня android 6.02 и устройство на x86 "Asus zenfone2" Другие клиенты подключаются без проблем с этими данными соединения.
Если есть возможность проэмулировать работу на Android x86, может выплывет проблема.
 

Victor

Administrator
Команда форума
Добрый день! Пытаюсь подключиться к *cloudmqtt.com но соединения не происходит в логе пишет "trying connect to..." потом "client offline (mqtt)" (лучше лог сделать поле edit с readonly для копипаста)
У меня android 6.02 и устройство на x86 "Asus zenfone2" Другие клиенты подключаются без проблем с этими данными соединения.
Если есть возможность проэмулировать работу на Android x86, может выплывет проблема.
на x86 тестировал (кстати тоже на Asus Zenfone2, только с Android 4) все ок.
Возможно, что эта проблема связана с Android 6 - там очень жесткие требования по безопасности. Попробуйте выбрать другой брокер без SSL
 

Shyster

New member
Вот ошибка может поможет.

Код:
05-11 17:20:57.169   694   705 I ActivityManager: START u0 {act=android.settings.APPLICATION_DETAILS_SETTINGS dat=package:ru.esp8266.iotmanager cmp=com.android.settings/.applications.InstalledAppDetails} from uid 1000 on display 0
05-11 17:20:57.255 25350 25350 W ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:773 android.content.ContextWrapper.sendBroadcast:402 com.android.settings.applications.PermissionsSummaryHelper.sendPermissionRequest:61 com.android.settings.applications.PermissionsSummaryHelper.getPermissionSummary:34 com.android.settings.applications.InstalledAppDetails.refreshUi:555 
05-11 17:20:57.418 25350 25350 W ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:773 android.content.ContextWrapper.sendBroadcast:402 com.android.settings.applications.PermissionsSummaryHelper.sendPermissionRequest:61 com.android.settings.applications.PermissionsSummaryHelper.getPermissionSummary:34 com.android.settings.applications.InstalledAppDetails.refreshUi:555 
05-11 17:21:12.409   694  1737 I ActivityManager: START u0 {act=android.intent.action.MAIN cmp=com.android.settings/.SubSettings (has extras)} from uid 1000 on display 0
05-11 17:21:22.289   694  1456 I ActivityManager: Force stopping ru.esp8266.iotmanager appid=10143 user=0: clear data
05-11 17:21:22.289   694  1456 I ActivityManager: Killing 18242:ru.esp8266.iotmanager/u0a143 (adj 7): stop ru.esp8266.iotmanager
05-11 17:21:22.289   694  1456 W libprocessgroup: failed to open /acct/uid_10143/pid_18242/cgroup.procs: No such file or directory
05-11 17:21:22.290   694  1456 W ActivityManager: Scheduling restart of crashed service ru.esp8266.iotmanager/com.onesignal.SyncService in 1000ms
05-11 17:21:22.293   694  1456 I ActivityManager:   Force finishing activity ActivityRecord{14a8a3b u0 ru.esp8266.iotmanager/.MainActivity t428}
05-11 17:21:22.294   694  1456 I ActivityManager:   Force stopping service ServiceRecord{a576fc4 u0 ru.esp8266.iotmanager/com.onesignal.SyncService}

05-11 18:04:19.725 18932 18932 E ActivityThread: Activity ru.esp8266.iotmanager.MainActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connection@257ef0a that was originally bound here
05-11 18:04:19.725 18932 18932 E ActivityThread: android.app.ServiceConnectionLeaked: Activity ru.esp8266.iotmanager.MainActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connection@257ef0a that was originally bound here
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1093)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:987)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1313)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.app.ContextImpl.bindService(ContextImpl.java:1296)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.content.ContextWrapper.bindService(ContextWrapper.java:610)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.speech.tts.TextToSpeech.connectToEngine(TextToSpeech.java:800)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.speech.tts.TextToSpeech.initTts(TextToSpeech.java:770)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:723)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:702)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.accessibility.AccessibilityInjector$TextToSpeechWrapper.<init>(AccessibilityInjector.java:393)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.accessibility.LollipopAccessibilityInjector$LTextToSpeechWrapper.<init>(LollipopAccessibilityInjector.java:60)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.accessibility.LollipopAccessibilityInjector$LTextToSpeechWrapper.<init>(LollipopAccessibilityInjector.java:58)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.accessibility.LollipopAccessibilityInjector.createTextToSpeechWrapper(LollipopAccessibilityInjector.java:55)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.accessibility.AccessibilityInjector.addAccessibilityApis(AccessibilityInjector.java:270)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.accessibility.JellyBeanAccessibilityInjector.addAccessibilityApis(JellyBeanAccessibilityInjector.java:91)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.accessibility.AccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary(AccessibilityInjector.java:151)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.ContentViewCore.setInjectedAccessibility(ContentViewCore.java:3160)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.ContentViewCore.setAccessibilityState(ContentViewCore.java:3150)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.ContentViewCore.onAttachedToWindow(ContentViewCore.java:1531)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.chromium.content.browser.ContentView.onAttachedToWindow(ContentView.java:255)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.view.View.dispatchAttachedToWindow(View.java:14524)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2836)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.view.ViewGroup.addViewInner(ViewGroup.java:4348)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.view.ViewGroup.addView(ViewGroup.java:4145)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.view.ViewGroup.addView(ViewGroup.java:4117)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.xwalk.core.XWalkView.postXWalkViewInternalContextAttributeSetConstructor(XWalkView.java:227)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at java.lang.reflect.Method.invoke(Native Method)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.xwalk.core.ReflectMethod.invoke(ReflectMethod.java:61)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.xwalk.core.XWalkView.reflectionInit(XWalkView.java:887)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at java.lang.reflect.Method.invoke(Native Method)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.xwalk.core.ReflectMethod.invoke(ReflectMethod.java:61)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.xwalk.core.XWalkCoreWrapper.handlePostInit(XWalkCoreWrapper.java:125)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.xwalk.core.XWalkLibraryLoader$ActivateTask.onPostExecute(XWalkLibraryLoader.java:286)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at org.xwalk.core.XWalkLibraryLoader$ActivateTask.onPostExecute(XWalkLibraryLoader.java:257)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.os.AsyncTask.finish(AsyncTask.java:651)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.os.AsyncTask.-wrap1(AsyncTask.java)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.os.Handler.dispatchMessage(Handler.java:102)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.os.Looper.loop(Looper.java:148)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at android.app.ActivityThread.main(ActivityThread.java:5461)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at java.lang.reflect.Method.invoke(Native Method)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
05-11 18:04:19.725 18932 18932 E ActivityThread:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 
Последнее редактирование:

Belerafon

New member
после обновления перестал работать виджет display-value вообще не отображается, как будто код вырезал из esp. (esp не трогал, работает полгода)
 

vvk2016

New member
Приветствую! Не могу разобраться по какой причине не отображается виджет display-value. В логах Iotmanager виджет успешно принимается, а на дисплее не отображается.

Сначала установил релизную версию менеджера, не отображается, перешел на бета версию, также не отображается.

Пример конфигурации:
JavaScript:
id = 2,
                    page = "",
                    widget = "display-value",
                    class1 = "item no-border",
                    style1 = "",
                    descr = "value-2",
                    class2 = "assertive",
                    style2 = "font-size:20px;float:left;font-weight:bold;",
                    topic = "/Iot999/dev-01/display-value2",
                    class3 = "",
                    style3 = "float:right;",
                    height = "60",
                    color = "#F10014",
                    inactive_color = "#414141",
                    digits_count = 10
 

Victor

Administrator
Команда форума
Пример конфигурации:
в примере вроде все ок (желательно добавить pageId)
виджет прорисовывается после получения первого status сообщения (этот недочет будет исправлен в будущих версиях)

потестил все сам, вроде все ок (правда только на последней dev версии удалось проверить) - прикладываю сриншот и сам пример, на котором тестил
Screenshot_2016-09-27-01-35-13.jpg
 

Вложения

Belerafon

New member
Вот код, составлен из примеров, программирование это хобби, так что особо не силен. для начала пробую ардуину. sdk пока не разобрался.
 

Вложения

Victor

Administrator
Команда форума
на первый взгляд ничего не нашел, но нужно заменить [inline]pageID[/inline] на [inline]pageId[/inline] иначе IoT Manager потеряется в страницах - может как раз из-за этого быть.
Еще попробуйте в настройках разбиение на страницы отключить Настройки - Внешний вид - Показывать вкладки страниц
У меня под рукой нет ESP чтобы попробовать, да и у вас там SPI - у меня данных не будет.
Давайте сначала вы мой пример попробуете запустить и будем дальше разбираться.
 

Belerafon

New member
этот код не знаю как вставить, пробовал http://esp8266.ru/forum/threads/iot-manager-arxiv-obsuzhdenij.651/page-12#post-13910 На экране пишет нет данных, а в логах вот так:
Код:
/IoTmanager    HELLO
/IoTmanager    dev04
/IoTmanager/dev04/config    {"id":0,"page":"ADC","widget":"display-value","class1":"item no-border","style1":"","descr":"DisplayValue","class2":"balanced","style2":"font-size:20px;float:left;padding-top:10px;font-weight:bold;","topic":"/IoTmanager/dev04/ADC","class3":"","style3":"float:right;","height":"40","color":"#52FF00","inactive_color":"#414141","digits_count":5}
/IoTmanager/dev04/ADC/status    {"status":36}
/IoTmanager/dev04/ADC/status    {"status":37}
 

Victor

Administrator
Команда форума
этот код не знаю как вставить, пробовал http://esp8266.ru/forum/threads/iot-manager-arxiv-obsuzhdenij.651/page-12#post-13910 На экране пишет нет данных
Попробовал все примеры с display-value еще и на Arduino IDE (этот и этот)
На beta версии 1.5.1 из GooglePlay все работает. Сейчас эта версия наиболее стабильная из всех существующих и предыдущих.
Если на предыдущих релизах и были какие-то проблемы, то сейчас их нет.
Завтра выпущу небольшое косметическое обновление и эта версия выйдет в релиз.
Те, кто не хотят ждать, могут присоединиться к бета тестированию
 

Scorpio

New member
Доброго времени суток!
Не могу подключится к брокеру CloudMQTT. Версия IoT Manager 1.5.0.
Log:
Код:
7:04:11 Broker: Schedulled reconnecting after 3 sec...
07:04:14 Broker: Retry connection by AutoReConnect.
07:04:14 Broker: Trying connect to mqtt://m20.cloudmqtt.com:36865, user:test, pass:<HIDDEN>, engine: "paho native", attempt 3...
07:04:14 Paho Native: connecting...
07:04:15 Paho native: Потеря связи! fail to connect, Соединение потеряно (32109) - java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)
07:04:15 Broker: onConnectionLost event: Соединение потеряно (32109) - java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)
07:04:15 Broker: onReConnect event, reconnectCount: 3
07:04:15 Maximum (3) reconnect count reached. Goto connection settings.
Настройки проверял, пробовал разные движки. Не подключается. Ответная часть на ESP работает без проблем.
 
Сверху Снизу