Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

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

Метки:
  1. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    ....всех С Новым Годом!......люди добрые может кто подскажет куда врезать в код - IoTmanager - vibrate:50 + beep: 1 надо так чтоб при изменённом состоянии на входе GPIO письчало и дребезжало
     
  2. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    Хотите сказать, что iot-manager-demo/PushNotifications.ino at master · 4refr0nt/iot-manager-demo · GitHub не работает?

    Моя итерация (раскрыть)
    Код (C):
    1.  
    2. void loop()
    3. {
    4.   delay(7000);
    5.       String freeheap = String(ESP.getFreeHeap());
    6.       push(freeheap);
    7. }
    8.  
    9. void push(String push_msg)
    10. {
    11.   WiFiClientSecure push_client;
    12.   if (!push_client.connect("onesignal.com", 443)) return;
    13.  
    14.   String push_data = "{\"app_id\": \"8871958c-5f52-11e5-8f7a-c36f5770ade9\",\"include_player_ids\":[\"Тут-Код-телефона-из-ИотМанагера\"],\"android_group\":\"IoT Manager\",\"contents\": {\"en\": \"" + push_msg + "\"}}";
    15.  
    16.   push_client.println("POST /api/v1/notifications HTTP/1.1");
    17.   push_client.print("Host:");
    18.   push_client.println("onesignal.com");
    19.   push_client.println("User-Agent: esp8266.Arduino.IoTmanager");
    20.   push_client.print("Content-Length: ");
    21.   push_client.println(push_data.length());
    22.   push_client.println("Content-Type: application/json");
    23.   push_client.println("Connection: close");
    24.   push_client.println();
    25.   push_client.println(push_data);
    26. }
     
    blue_shark нравится это.
  3. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    Приблизительно так (раскрыть)
    Код (C):
    1. \"widgetConfig\":{\"alertTitle\":\"Вопрос:\",\"alertText\":\"Включить непрерывный нагрев?\"
    2. \"toastLong\":\"Настройки сохранены\"
    3. или еще как нибудь...
     
    Последнее редактирование: 4 янв 2018
  4. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    .....эх Monk.....что ты всё вокруг да около вертишь , твою подсказку можно растолковывать и так и сяк .....а можно вообще чёрт знает как......ты по конкрентнее напиши .....чтоб работало ,.......а это всё бутафорство фантазийное(то что ты выше написал)
     
  5. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    ....короче я так понял что есть как вариант прописать в - void pub status .....так в базовом примере идёт вибрация (для temp).....а мне нужно при сработке GPIO......короче я вот чё пробовал --
     

    Вложения:

    • vibrate.txt
      Размер файла:
      495 байт
      Просмотров:
      8
  6. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    ....как тут подправить чтоб робило
     
  7. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    На Вас, милочка, не угодишь! Пишу по пунктам, игнорируете. Даю подсказку - "вокруг да около" в ответ.
    В любом случае, как говорили древние (греки) - "чаще поворачивай стиль". В том смысле, что "нужные" кавычки в коде необходимо экранировать.
     
  8. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    @blue_shark, примите мои искренние извинения за излишне фамильярное обращение, а именно "пацанчик". И в подтверждение моих слов протестированный буквально сейчас эскиз.
    Push.ino (раскрыть)
    Код (C):
    1.  
    2. #include <ESP8266WiFi.h>
    3. #include <WiFiClientSecure.h>
    4. #include <ESP8266Ping.h>        //---------- https://github.com/dancol90/ESP8266Ping
    5.  
    6. const char* remote_host = "www.google.ru"; // Для ping www.google.ru
    7. const char* bssid[] =
    8.   {
    9.   "00:26:99:70:ED:90"  // WhiteBox-2
    10.   };
    11. const char* ssid[] =
    12.   {
    13.   "WhiteBox-2"
    14.   };
    15. const char* password[] =
    16.   {
    17.   "тут пароль от точки доступа"
    18.   };
    19.  
    20. void setup()
    21. {
    22. }
    23.  
    24. void loop()
    25. {
    26.   WiFi.begin(ssid[0], password[0]);
    27.   delay(7000);
    28.  
    29.     if(Ping.ping(remote_host))  // if(Ping.ping(remote_ip))
    30.     {
    31.       String freeheap = String(ESP.getFreeHeap());
    32.       freeheap = freeheap + " " + String(ssid[0]) + " GooglePing ok";
    33.       push(freeheap);
    34.     }
    35.     else
    36.     {
    37.       String freeheap = String(ESP.getFreeHeap());
    38.       freeheap = freeheap + " " + String(ssid[0]) + " GooglePing failing";
    39.       push(freeheap);
    40.     }
    41.  
    42.   WiFi.disconnect();
    43.   delay(5000);
    44. }
    45.  
    46. void push(String push_msg)
    47. {
    48.   WiFiClientSecure push_client;
    49.   if (!push_client.connect("onesignal.com", 443)) return;
    50.  
    51.   String push_data = "{\"app_id\": \"8871958c-5f52-11e5-8f7a-c36f5770ade9\",\"include_player_ids\":[\"тут push id из мобильного устройства\"],\"android_group\":\"IoT Manager\",\"contents\": {\"en\": \"" + push_msg + "\"}}";
    52.  
    53.   push_client.println("POST /api/v1/notifications HTTP/1.1");
    54.   push_client.print("Host:");
    55.   push_client.println("onesignal.com");
    56.   push_client.println("User-Agent: esp8266.Arduino.IoTmanager");
    57.   push_client.print("Content-Length: ");
    58.   push_client.println(push_data.length());
    59.   push_client.println("Content-Type: application/json");
    60.   push_client.println("Connection: close");
    61.   push_client.println();
    62.   push_client.println(push_data);
    63. }
    64.  

    Screenshot_2018-01-06-14-27-21.png Screenshot_2018-01-06-14-30-16.png
     
  9. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    .....извинения принимаю, а по хорошему я говорить всегда рад
     
  10. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    Про stable/package 2.4.0...
    Тщательно почистил систему от АрдуиныАйДИ, установил arduino-1.8.5-windows, накатил stable/package_esp8266 2.4.0, освежил левые библиотеки (в том числе #include <PubSubClient.h> // GitHub - Imroy/pubsubclient: A client library for the ESP8266 that provides support for MQTT), скомпилил рабочий эскиз.
    Погоревал над увеличившимся размером бинарника, порадовался увеличившемуся на 2К размеру свободной оперативки.
    Радовался недолго. До брокера данные не долетают, НТТР-обновлялка вроде работает, но криво.
    Разбираться не стал. Вернул 2.3.0. Все ожило и задышало.
     
  11. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    послушай Monk...твои протестированные эскизы не помогают решить мою задачку......у меня ни чего не получается
     
  12. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    ....с экранированием я поправился но прога не хочет робить......вот код----

    не пойму как можно ещё подправить
     

    Вложения:

  13. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    Попробуй так (раскрыть)
    Код (C):
    1. void check_status_Heater()
    2. {
    3.   if (dRhp != digitalRead(heat_pin))
    4.   {
    5.     dRhp = digitalRead(heat_pin);
    6.     pubStatus(sTopic[1], "{\"status\":\"" + String(dRhp) + "\", \"vibrate\":\"200\"}");
    7.   }
    8. }
     
  14. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    ......с этим вроде разобрался.....вот только не пойму как запускаются примеры по протоколу v 2.0..........в них нет ssid, а в базовые примеры не запускаются выдаёт ошибку var config................где вообще описание по данному материалу смотреть???
     
  15. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    Это что за зверь? Пример покажи.
     
  16. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    Код (Javascript):
    1.  
    2. // Demo device emulator "Boiler: thermostat with adjustable hysteresis"
    3. //
    4. // IoT Manager
    5. // for Android https://play.google.com/store/apps/details?id=ru.esp8266.iotmanager
    6. // for iOS     https://itunes.apple.com/us/app/iot-manager/id1155934877
    7. //
    8. // version     : 1.1
    9. // IoT Manager : 1.4.8 and above
    10. //
    11. ////////////////////////////////////////////////
    12. #define var;
    13. ////////////////////////////////////////////////
    14. var config = require("./config");
    15. var host = config.host;
    16. var port = config.port;
    17. var user = config.user;
    18. var pass = config.pass;
    19. ////////////////////////////////////////////////
    20.  
    21. var mqtt = require('mqtt');
    22. var opt = {
    23.   host       : host,
    24.   port       : port,
    25.   username   : user,
    26.   password   : pass,
    27.   clientId   : 'mqtt-js_' + Math.random().toString(16).substr(2, 8),
    28.   protocolId : 'MQTT',
    29.   connectTimeout: 3000
    30. };
    31.  
    32.  
    33. var heater = false;
    34. var waterTemp = 20;
    35. var hiTemp    = 40;
    36. var hysteresis= 5;
    37. var lowTemp   = hiTemp - hysteresis;
    38. var manualStop= false;
    39. var lastHeater= true;
    40. var lastAlert = true
    41.  
    42. var deviceID = "boiler-0001";
    43. var prefix   = "/IoTmanager";
    44. var config   = [solije];
    45. var client   = mqtt.connect(opt);
    46.  
    47. // First line
    48. var widget   = "anydata";
    49. var id       = "0"
    50. config[0] = {
    51.   id     : id,
    52.   page   : "boiler",
    53.   pageId : 1,
    54.   widget : widget,
    55.   class1 : "item no-border",
    56.   style2 : "font-size:16px;",
    57.   topic  : prefix + "/" + deviceID + "/" + widget + id,
    58.   class3 : "calm text-center",
    59.   style3 : "font-size:20px;",
    60.   status : "Boiler"
    61. };
    62.  
    63.  
    64. // -
    65. widget    = "simple-btn";
    66. id        = "1"
    67. config[1] = {
    68.   id     : id,
    69.   page   : "boiler",
    70.   pageId : 1,
    71.   widget : widget,
    72.   class1 : "text-left no-padding-right col-xs-4",
    73.   class2 : "calm",
    74.   topic  : prefix + "/" + deviceID + "/" + widget + id,
    75.   class3 : "button button-calm icon ion-minus",
    76.   style3 : "height:70px;",
    77. };
    78.  
    79. // temp
    80. widget    = "display-value";
    81. id        = "2"
    82. config[2] = {
    83.   id     : id,
    84.   page   : "boiler",
    85.   pageId : 1,
    86.   widget : widget,
    87.   class1 : "text-center no-padding-left no-padding-right col-xs-4",
    88.   topic  : prefix + "/" + deviceID + "/" + widget + id,
    89.   height : "70",
    90.   color  : "#58b7ff",
    91.   inactive_color : "#414141",
    92.   digits_count   : 2
    93. };
    94.  
    95. // +
    96. widget    = "simple-btn";
    97. id        = "3"
    98. config[3] = {
    99.   id     : id,
    100.   page   : "boiler",
    101.   pageId : 1,
    102.   widget : widget,
    103.   class1 : "text-right no-padding-left col-xs-4",
    104.   class2 : "calm",
    105.   topic  : prefix + "/" + deviceID + "/" + widget + id,
    106.   class3 : "button button-calm icon ion-plus",
    107.   style3 : "height:70px;",
    108. };
    109.  
    110. // Current temp
    111. widget    = "anydata";
    112. id        = "4"
    113. config[4] = {
    114.   id     : id,
    115.   page   : "boiler",
    116.   pageId : 1,
    117.   widget : widget,
    118.   class1 : "item no-border",
    119.   style2 : "font-size:16px;float:left",
    120.   descr  : "Current water temp",
    121.   topic  : prefix + "/" + deviceID + "/" + widget + id,
    122.   class3 : "assertive",
    123.   style3 : "font-size:40px;font-weight:bold;float:right",
    124. };
    125.  
    126. // Heater status
    127. widget    = "anydata";
    128. id        = "5"
    129. config[5] = {
    130.   id     : id,
    131.   page   : "boiler",
    132.   pageId : 1,
    133.   widget : widget,
    134.   class1 : "item no-border",
    135.   style2 : "font-size:16px;float:left;line-height:1.5em;",
    136.   descr  : "Heater status",
    137.   topic  : prefix + "/" + deviceID + "/" + widget + id,
    138.   class3 : "light padding-left padding-right rounded",
    139.   style3 : "font-size:20px;font-weight:bold;float:right;line-height:1.5em;",
    140. };
    141.  
    142. // Stop
    143. widget    = "simple-btn";
    144. id        = "6"
    145. config[6] = {
    146.   id     : id,
    147.   page   : "boiler",
    148.   pageId : 1,
    149.   widget : widget,
    150.   topic  : prefix + "/" + deviceID + "/" + widget + id,
    151.   class1 : "item no-border padding-bottom",
    152.   descr  : "Emergency Stop heating",
    153.   class2 : "assertive padding-top",
    154.   style2 : "font-size:16px;float:left;",
    155.   class3 : "button icon ion-checkmark-circled",
    156.   style3 : "float:right;",
    157.   widgetConfig : {
    158.     fill : "#FF5050",
    159.     fillPressed : "#FF7070",
    160.     label: "#FFFFFF",
    161.     labelPressed: "#000000",
    162.     alertText     : "A you sure?", // confirmation will be show after button pressed
    163.     alertTitle    : "Stop heating",
    164.   }
    165. };
    166.  
    167.  
    168. client.on('connect', function () {
    169.   console.log('Broker connected');
    170.   client.subscribe(prefix, { qos : 1 }); // HELLO expected
    171.   client.subscribe(prefix + "/" + deviceID +"/+/control", { qos : 1 }); // all command
    172.   pubConfig();
    173. });
    174.  
    175. client.on('error', function () {
    176.   console.log('error');
    177. });
    178.  
    179. client.on('offline', function () {
    180.   console.log('! offline');
    181. });
    182.  
    183. client.on('message', function (topic, message) {
    184.  
    185.   //console.log("msg: " + topic.toString() + " => " + message.toString());
    186.  
    187.   if (topic.toString() === prefix && message.toString() == "HELLO" ){
    188.     console.log('HELLO detected');
    189.     pubConfig();
    190.   }
    191.   if (topic.toString() === config[1].topic + "/control" ){
    192.     console.log("Receive command: max temp dec");
    193.  
    194.     hiTemp  = hiTemp - 1;
    195.     lowTemp = lowTemp - 1;
    196.    
    197.     manualStop = false;
    198.     pubControlTempStatus();
    199.   }
    200.   if (topic.toString() === config[3].topic + "/control" ){
    201.     console.log("Receive command: max temp inc");
    202.  
    203.     hiTemp = hiTemp + 1;
    204.     lowTemp = lowTemp + 1;
    205.  
    206.     console.log("New temp:" + hiTemp);
    207.     if (hiTemp >= 90) {  // do not overheat
    208.        hiTemp = 90;
    209.     }
    210.     if (manualStop) {
    211.        client.publish(config[6].topic + "/status", JSON.stringify(config[6]),{ qos : 1 });
    212.     }
    213.  
    214.     manualStop = false;
    215.     pubControlTempStatus();
    216.   }
    217.   if (topic.toString() === config[6].topic + "/control" ){
    218.     console.log("!!! Receive command: manualStop heater control");
    219.  
    220.     var newStyle = {
    221.         descr  : "Heating already stopped",
    222. //        class3 : "button button-light icon ion-close-circled"
    223.     }
    224.     client.publish(config[6].topic + "/status", JSON.stringify(newStyle),{ qos : 1 });
    225.  
    226.     manualStop = true;
    227.     heater = false;
    228.     pubControlTempStatus();
    229.     pubHeaterStatus();
    230.   }
    231. });
    232. ////////////////////////////////////////////////
    233. function pubConfig() {
    234.     client.publish( prefix, deviceID );
    235.     config.forEach(function(item, i, arr) {
    236.       client.publish(prefix + "/" + deviceID + "/config", JSON.stringify(item),{ qos : 1 });
    237.     });  
    238.     setTimeout(function() {
    239.        pubControlTempStatus();
    240.        pubHeaterStatus(true);
    241.     }, 500);
    242. }
    243.  
    244. ////////////////////////////////////////////////
    245. function pubAlert() {
    246.    widget = "anydata";
    247.    id     = "7"
    248.    var cfgAlert = {
    249.      id     : id,
    250.      page   : "boiler",
    251.      pageId : 1,
    252.      widget : widget,
    253.      class1 : "item rounded text-center no-padding",
    254.      class2 : "assertive-bg light",
    255.      style2 : "font-size:20px;font-weight:bold",
    256.      descr  : "FREEZE ALERT !!!",
    257.      topic  : prefix + "/" + deviceID + "/" + widget + id
    258.    };
    259.    cfgNoAlert = {
    260.      id     : id
    261.    };
    262.    if (waterTemp <= 5) {
    263.       if (waterTemp < 0) waterTemp = 0;
    264.       if (lastAlert) {
    265.           client.publish(prefix + "/" + deviceID + "/config", JSON.stringify(cfgAlert),{ qos : 1 });
    266.           console.log("Pub Alert!")
    267.           lastAlert = !lastAlert
    268.       }
    269.    } else {
    270.       if (!lastAlert) {
    271.           client.publish(prefix + "/" + deviceID + "/config", JSON.stringify(cfgNoAlert),{ qos : 1 });
    272.           console.log("Pub no alert")
    273.           lastAlert = !lastAlert
    274.       }
    275.    }
    276. }
    277. ////////////////////////////////////////////////
    278. function pubWaterTempStatus() {
    279.   client.publish( config[4].topic+"/status", JSON.stringify({ status: waterTemp + "°C" }) );
    280. }
    281. ////////////////////////////////////////////////
    282. function pubControlTempStatus() {
    283.   client.publish( config[2].topic+"/status", JSON.stringify({ status: hiTemp }) );
    284. }
    285. ////////////////////////////////////////////////
    286. function pubHeaterStatus( force ) {
    287.   if (lastHeater !== heater || force) {
    288.         var newStyle;
    289.         var newStyle1;
    290.         if (heater) {
    291.             newStyle = { status : "ON",  class3 : "assertive-bg light padding-left padding-right rounded" }
    292.             newStyle1 = {
    293.                 descr  : "Emergency Stop heating",
    294.                 class2 : "assertive padding-top",
    295.                 class3 : "button icon ion-checkmark-circled",
    296.                 widgetConfig : {
    297.                 fill        : "#FF5050",
    298.                 fillPressed : "#FF7070",
    299.                 disabled: 0
    300.               }
    301.             }
    302.         } else {
    303.             newStyle = { status : "OFF", class3 : "calm-bg light padding-left padding-right rounded" }
    304.             newStyle1 = {
    305.                 descr  : "Heating already stopped",
    306.                 class2 : "calm padding-top",
    307.                 class3 : "button icon ion-close-circled",
    308. //                style3 : "display:none;",
    309.                 widgetConfig : {
    310.                  fill : "#AAAAAA",
    311.                  fillPressed: "#EEEEEE",
    312.                  disabled: 1
    313.                 }
    314.             }
    315.         }
    316.         lastHeater = heater;
    317.         client.publish( config[5].topic + "/status", JSON.stringify(newStyle)  );
    318.         client.publish( config[6].topic + "/status", JSON.stringify(newStyle1) );
    319.   }
    320. }
    321. ////////////////////////////////////////////////
    322. // run main
    323. console.log('Start');
    324.  
    325. setInterval(function() {
    326.    // check current temp and run heater
    327.    if (waterTemp < hiTemp && !heater) {
    328.       if (waterTemp < lowTemp && !manualStop) {
    329.          heater = true;
    330.          pubHeaterStatus();
    331.       }
    332.    }
    333.    if (waterTemp < lowTemp && !manualStop) {
    334.       heater = true;
    335.       pubHeaterStatus();
    336.    }
    337.    if (waterTemp >= hiTemp ) {
    338.       heater = false;
    339.       pubHeaterStatus();
    340.    }
    341. }, 200);
    342.  
    343. setInterval(function() {
    344.    if (heater && !manualStop) {
    345.       waterTemp = waterTemp + 1;
    346.       console.log("waterTemp inc="+waterTemp);
    347.       pubAlert();
    348.       pubWaterTempStatus();
    349.    }
    350. }, 1000);
    351. setInterval(function() {
    352.    if (!heater || manualStop) {
    353.       waterTemp = waterTemp - 1;
    354.       console.log("waterTemp dec="+waterTemp);
    355.       pubAlert();
    356.       pubWaterTempStatus();
    357.    }
    358. }, 1000);
    359.  
    360. ////////////////////////////////////////////////
    361.  
     
  17. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    Это node.js? Я с ним не знаком. Вопрос скорее к автору. Или долгое нудное чтение в Гугле.
    Насколько я понимаю, JS должен в какой то среде крутиться. И какой то скрипт должен отвечать за подключение по вафле.
     
  18. джеки

    джеки Новичок

    Сообщения:
    40
    Симпатии:
    0
    @Mоnk
    .....эт ты правильно подметил --" долгое нудное чтение в Гугле.".....тычешь туда сюда в разные сайты пытаешься понять как работает тот или иной код.....толку мало время течёт......и что спрашивается автору трудно ему было сразу пример хоть один прописать для незнаек.........где вот этот автор --- АВТОР!!! отзовитесь!!!
     
    Последнее редактирование: 1 фев 2018
  19. Mоnk

    Mоnk Читатель

    Сообщения:
    123
    Симпатии:
    8
    Что то как то тихо стало...
    display-value и сдвиг закладок всё в той же стадии...
     
  20. Victor

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

    Сообщения:
    2.203
    Симпатии:
    378
    да я тут, просто пытаюсь на жизнь как то заработать, поэтому захожу реже.
    Времени заниматься развитием проекта пока нет, но надеюсь что это изменится :)
     

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