• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Mоnk

Member
25 16:45:40 GMT+0300 (MSK) Parsing config data from device "Home-20-1", widget id=51
26 16:45:40 GMT+0300 (MSK) Update config for device: Home-20-1, widget id: 51
27 16:45:40 GMT+0300 (MSK) Parsing: all steps done.
28 16:45:40 GMT+0300 (MSK) Parsed status: for widget id=51 from /Eagle-owl/Home-20-1/DHT22_t/status -> {"status":"+24.7 °C"
29 16:45:40 GMT+0300 (MSK) Parsing config data from device "Home-20-1", widget id=61
30 16:45:40 GMT+0300 (MSK) Update config for device: Home-20-1, widget id: 61
31 16:45:40 GMT+0300 (MSK) Parsing: all steps done.
32 16:45:40 GMT+0300 (MSK) Parsed status: for widget id=61 from /Eagle-owl/Home-20-1/DHT22_tZ/status -> {"status":"+23.8 °C"
33 16:45:41 GMT+0300 (MSK) Parsing config data from device "Home-20-1", widget id=51
34 16:45:41 GMT+0300 (MSK) Update config for device: Home-20-1, widget id: 51
35 16:45:41 GMT+0300 (MSK) Parsing: all steps done.
36 16:45:41 GMT+0300 (MSK) Parsed status: for widget id=51 from /Eagle-owl/Home-20-1/DHT22_t/status -> {"status":"+24.7 °C"
37 16:45:41 GMT+0300 (MSK) Parsing config data from device "Home-20-1", widget id=61
38 16:45:41 GMT+0300 (MSK) Update config for device: Home-20-1, widget id: 61
39 16:45:41 GMT+0300 (MSK) Parsing: all steps done.
40 16:45:41 GMT+0300 (MSK) Parsed status: for widget id=61 from /Eagle-owl/Home-20-1/DHT22_tZ/status -> {"status":"+23.8 °C"
41 16:45:41 GMT+0300 (MSK) Parsing config data from device "Home-20-1", widget id=51
42 16:45:41 GMT+0300 (MSK) Update config for device: Home-20-1, widget id: 51
43 16:45:41 GMT+0300 (MSK) Parsing: all steps done.
44 16:45:41 GMT+0300 (MSK) Parsed status: for widget id=51 from /Eagle-owl/Home-20-1/DHT22_t/status -> {"status":"+24.7 °C"
45 16:45:41 GMT+0300 (MSK) Parsing config data from device "Home-20-1", widget id=61
46 16:45:41 GMT+0300 (MSK) Update config for device: Home-20-1, widget id: 61
47 16:45:41 GMT+0300 (MSK) Parsing: all steps done.
Почему то {"status":"+24.7 °C" не имеет закрывающей фигурной скобки.
 

Mоnk

Member
@Victor, а можно во второй пример IDS вернуть? У меня образования не хватает.
#include <WiFiClientSecure.h>
.....................
const char* host = "onesignal.com";
WiFiClientSecure httpClient;
const int httpsPort = 443;
String url = "/api/v1/notifications";

void push(String msg)
{
if (ids.length() == 0)
{
//Serial.println("PUSH: ids not received, push failed");
return;
}
if (!httpClient.connect(host, httpsPort))
{
//Serial.println("PUSH: connection failed");
return;
}
String data = "{\"app_id\": \"8871958c-5f52-11e5-8f7a-c36f5770ade9\",\"include_player_ids\":[\"" + ids + "\"],\"android_group\":\"IoT Manager\",\"contents\": {\"en\": \"" + msg + "\"}}";
httpClient.println("POST " + url + " HTTP/1.1");
httpClient.print("Host:");
httpClient.println(host);
httpClient.println("User-Agent: esp8266.Arduino.IoTmanager");
httpClient.print("Content-Length: ");
httpClient.println(data.length());
httpClient.println("Content-Type: application/json");
httpClient.println("Connection: close");
httpClient.println();
httpClient.println(data);
httpClient.println();
}
.....................
client.subscribe(prefix + "/ids");
......................
где то в коде втавил:
String msg = "Вентиляция " + String(newValue) + ")";
push(msg);

Не хватает чего-то типа:
(sub.topic() == prefix + "/ids")
ids = sub.payload_string();
 

Mоnk

Member
@Victor
У меня во втором примере не получается "на лету" менять
descr [0] = "Что-то"; на descr [0] = "Другое что-то";
На экране показывается только "Что-то" из дефолта.
Код:
  id        [0] = "5";      // ===== строка в менеджере
  page      [0] = room;
  pageId    [0] = 2;        // ===== закладка в менеджере
  descr     [0] = "Свет";
  widget    [0] = "toggle";
  pin       [0] = 12;       // ===== Свет
  defaultVal[0] = OFF;
  inverted  [0] = true;
  sTopic    [0] = prefix + "/" + deviceId + "/light0";
  color     [0] = "\"color\":\"green\"";               // black, blue, green, orange, red, white, yellow (off - grey)
  iconStyle [0] = "\"iconStyle\":\"display:none\"";
 

Victor

Administrator
Команда форума
У меня во втором примере не получается "на лету" менять
Во-первых не все виджеты поддерживают измение на "лету" (к сожалению, все виджеты я не тестировал именно в таком контексте). Те виджеты, которые точно поддерживают, содержат упоминание об этом в документации
Во-вторых обязательно передавать ID вместе с этим "другое что-то"
 

Mоnk

Member
Во-вторых обязательно передавать
Ну да, ну да...
Только сейчас сообразил, что надо не только менять содержимое descr [0], но и обновлять thing_config[0], который затем необходимо публиковать.
Спасибо, заработало!
А как насчет Push уведомлений?
 

Etrubin

New member
Добрый день!
пробую разобраться с примером Heater.
Если в PlatformIO запускаю загрузить , то все нормально. Если разархивирую екзешники в \platformio\heater\prebuild\bin и он начинает билдить виджеты заново, то получаю половину потеряных в мобильном приложении(как на картинке). В логах мобильного приложения появляются такие сообщения. (видимо на месте где он пытается подгрузить виджет)
12:15:33 Error parsing JSON arrived message from /IoTmanager/heater/config
что я не доделал?
Спасибо
 

Вложения

Victor

Administrator
Команда форума
что я не доделал?
я на всякий случай пересобрал это приложение и проверил - все ок (на показания не обращайте внимание - не подключен датчик)
Screenshot_2017-01-25-02-50-19.jpg
попробуйте удалить все в папке [inline]prebuild/temp[/inline] и включить тему с темным фоном
 

Mоnk

Member
И на "двушке" можно творить чудеса. Но упаришься.
Код:
  id        [6] = "55";      // ===== строка в менеджере
  page      [6] = room;
  pageId    [6] = 50;        // ===== закладка в менеджере
  //descr     [6] = "Минус";
  widget    [6] = "simple-btn";
  sTopic    [6] = prefdev + "/B_Minus";
  //badge     [3] = "\"badge\":\"badge-calm\"";                  // see http://ionicframework.com/docs/components/#colors
  class1    [6] = "\"class1\":\"item no-border col-xs-4\"";
  style1    [6] = "\"style1\":\"\"";
  class2    [6] = "\"class2\":\"balanced\"";
  style2    [6] = "\"style2\":\"font-size:20px;float:left;padding-top:10px;font-weight:bold;\"";
  class3    [6] = "\"class3\":\"button button-balanced icon ion-minus\"";
  style3    [6] = "\"style3\":\"height:70px;\"";

  id        [4] = "56";      // ===== строка в менеджере
  page      [4] = room;
  pageId    [4] = 50;        // ===== закладка в менеджере
  //descr     [4] = "Нагревать до";
  widget    [4] = "anydata";
  sTopic    [4] = prefdev + "/setpoint";
  badge     [4] = "\"badge\":\"badge-calm\"";                  // see http://ionicframework.com/docs/components/#colors
  class1    [4] = "\"class1\":\"item no-border col-xs-4\"";
  class3    [4] = "\"class3\":\"text-center\"";
  style3    [4] = "\"style3\":\"font-size:40px;font-weight:bold;line-height:2em;height:70px;\"";
  //style     [4] = "\"style\":\"font-size:150%;\"";

  id        [3] = "57";      // ===== строка в менеджере
  page      [3] = room;
  pageId    [3] = 50;        // ===== закладка в менеджере
  //descr     [3] = "Плюс";
  widget    [3] = "simple-btn";
  sTopic    [3] = prefdev + "/B_Plus";
  //badge     [3] = "\"badge\":\"badge-calm\"";                  // see http://ionicframework.com/docs/components/#colors
  class1    [3] = "\"class1\":\"item no-border col-xs-4\"";
  style1    [3] = "\"style1\":\"\"";
  class2    [3] = "\"class2\":\"balanced\"";
  style2    [3] = "\"style2\":\"font-size:20px;float:left;padding-top:10px;font-weight:bold;\"";
  class3    [3] = "\"class3\":\"button button-balanced icon ion-plus\"";
  style3    [3] = "\"style3\":\"height:70px;\"";
  thing_config[3] = "{\"id\":\"" + id[3] + "\",\"page\":\"" + page[3] + "\",\"pageId\":\"" + pageId[3] + "\",\"descr\":\"" + descr[3] + "\",\"widget\":\"" + widget[3] + "\",\"topic\":\"" + sTopic[3] + "\"," + class1[3] + "," + style1[3] + "," + class2[3] + "," + style2[3] + "," + class3[3] + "," + style3[3] + "}";  // DS18B20
  thing_config[4] = "{\"id\":\"" + id[4] + "\",\"page\":\"" + page[4] + "\",\"pageId\":\"" + pageId[4] + "\",\"descr\":\"" + descr[4] + "\",\"widget\":\"" + widget[4] + "\",\"topic\":\"" + sTopic[4] + "\"," + badge[4] + "," + class1[4] + "," + class3[4] + "," + style3[4] + "}";  // setpoint
  thing_config[6] = "{\"id\":\"" + id[6] + "\",\"page\":\"" + page[6] + "\",\"pageId\":\"" + pageId[6] + "\",\"descr\":\"" + descr[6] + "\",\"widget\":\"" + widget[6] + "\",\"topic\":\"" + sTopic[6] + "\"," + class1[6] + "," + style1[6] + "," + class2[6] + "," + style2[6] + "," + class3[6] + "," + style3[6] + "}";  // DS18B20
И проблема при отработке двойного нажатия кнопки.
Screenshot_2017-01-26-23-44-31.png
Выскакивает оповещение об обновлении.
 

Victor

Administrator
Команда форума
И проблема при отработке двойного нажатия кнопки.
это вроде как не баг, а фича :)
Двойной тач (или удерживание? - я уже забыл) включает доп. инфо: сколько времени прошло с момента приема последнего сообщения этого виджета. Просто виджет здесь сильно узкий - всё не входит по ширине.
 

Mоnk

Member
Ибо...
Читаем мануал:
Виджет simple-btn
Это простой, но очень мощный виджет для создания кнопок, имеющий множество настроек. Виджет поддерживает одиночные нажатия, двойные и “длинные” (удерживание кнопки).
Я думал, что счастье есть!
Или все-таки есть? Тогда как обрабатывать двойные и длинные нажатия?
 

Mоnk

Member
Что-то сделал не так с display-value
Код:
String stat         [nWidgets];
String sTopic       [nWidgets];
String color        [nWidgets];
String class1       [nWidgets];
String class2       [nWidgets];
String class3       [nWidgets];
String style        [nWidgets];
String style1       [nWidgets];
String style2       [nWidgets];
String style3       [nWidgets];
String badge        [nWidgets];
String widget       [nWidgets];
String descr        [nWidgets];
String page         [nWidgets];
String pageId       [nWidgets];
String thing_config [nWidgets];
String id           [nWidgets];
String iconStyle    [nWidgets];
String inactive_color       [nWidgets];
String height       [nWidgets];
String digits_count [nWidgets];
int    pin          [nWidgets];
int    defaultVal   [nWidgets];
bool   inverted     [nWidgets];

  id        [4] = "54"; 
  page      [4] = room;
  pageId    [4] = 50;
  //descr     [4] = "Нагревать до";
  widget    [4] = "display-value";
  sTopic    [4] = prefdev + "/setpoint";
  class1    [4] = "\"class1\":\"item no-border col-xs-4\""; // Размер колонки
  style1    [4] = "";
  class2    [4] = "\"class2\":\"assertive\"";
  style2    [5] = "\"style2\":\"font-size:20px;float:left;font-weight:bold;\"";
  class3    [4] = "";
  style3    [4] = "\"style3\":\"float:right;\"";
  height    [4] = "\"height\":\"20\"";
  color    [4] = "\"color\":\"#F10014\"";
  inactive_color    [4] = "\"inactive_color\":\"#414141\"";
  digits_count    [4] = "\"digits_count\":4";
 
  thing_config[4] = "{\"id\":\"" + id[4] + "\",\"page\":\"" + page[4] + "\",\"pageId\":\"" + pageId[4] + "\",\"descr\":\"" + descr[4] + "\",\"widget\":\"" + widget[4] + "\",\"topic\":\"" + sTopic[4] + "\"," + class1[4] + "," + style1[4] + "," + class2[4] + "," + style2[4] + "," + class3[4] + "," + style3[4] + "," + color[4] + "," + height[4] + "," + inactive_color[4] + "," + digits_count[4] + "}";  // setpoint
Цифры не хочет показывать...
Screenshot_2017-01-27-13-35-56.png
 

Mоnk

Member
нужен валидный JSON и
Подскажите, как должна выглядеть строчка без JSON
Код:
widgetConfig : {
  width  : "auto",
  height : 100,
  type   : "Linear",
  titleString: "Thermometer 1",
  unitString : "temp C",
  threshold: 90
}
Пробую
Код:
  id        [0] = "50";
  page      [0] = room;
  pageId    [0] = 50;
  descr     [0] = "Температура";
  stat      [0] = setStatus(DHT22_tS + " °C");
  widget    [0] = "steel";
  sTopic    [0]   = prefdev + "/DHT22_t";
  badge     [0] = "\"badge\":\"badge-calm\"";
  style     [0]   = "\"style\":\"font-size:150%;\"";
- термометр появляется.
Добавляю
Код:
widgetConfig [0] = "\"widgetConfig\":\"{width: \"auto\", height: 100, type: \"Linear\", titleString: \"Thermometer 1\", unitString : \"temp C\", threshold: 90}\"";

  thing_config[0] = "{\"id\":\"" + id[0] + "\",\"page\":\"" + page[0] + "\",\"pageId\":\"" + pageId[0] + "\",\"descr\":\"" + descr[0] + "\",\"widget\":\"" + widget[0] + "\",\"topic\":\"" + sTopic[0] + "\"," + badge[0] + "," + style[0] + "," + widgetConfig[0] + "}";
- термометр пропадает.
 

Victor

Administrator
Команда форума
термометр пропадает
попробуйте вместо
Код:
widgetConfig [0] = "\"widgetConfig\":\"{width: \"auto\", height: 100, type: \"Linear\", titleString: \"Thermometer 1\", unitString : \"temp C\", threshold: 90}\"";
вот так
Код:
widgetConfig [0] = "\"widgetConfig\":{width:\"auto\", height: 100, type: \"Linear\", titleString: \"Thermometer 1\", unitString : \"temp C\", threshold: 90}";
если не получится, то так
Код:
widgetConfig [0] = "\"widgetConfig\":{\"width\":\"auto\", \"height\": 100, \"type\": \"Linear\", \"titleString\": \"Thermometer 1\", \"unitString\" : \"temp C\", \"threshold\": 90}";
,
 
Сверху Снизу