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

IoT Manager - архив обсуждений

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

Статус темы:
Закрыта.
  1. Сергей Булгаков

    Сергей Булгаков Новичок

    Сообщения:
    19
    Симпатии:
    2
    Я почитаю, обязательно, и скорее всего научусь. Но пока Вы сами залете...
    тут проблема, я её нашел на этом сайте, без каких либо ссылок на авторство...
    вот что написано в примере к это библиотеке (раскрыть)

    Код (Text):
    1. /***************************************************
    2.   This is an example for the BMP085 Barometric Pressure & Temp Sensor
    3.  
    4.   Designed specifically to work with the Adafruit BMP085 Breakout
    5.   ----> https://www.adafruit.com/products/391
    6.  
    7.   These displays use I2C to communicate, 2 pins are required to
    8.   interface
    9.   Adafruit invests time and resources providing this open source code,
    10.   please support Adafruit and open-source hardware by purchasing
    11.   products from Adafruit!
    12.  
    13.   Written by Limor Fried/Ladyada for Adafruit Industries.
    14.   BSD license, all text above must be included in any redistribution
    15. ****************************************************/


    Будет нужна помощь - попрошу обязательно, а сейчас нужно, что-то интересное придумать. Вы не отвлекайтесь и добавляйте новые виджеты (ну там графики допустим, очень полезно будет для отображения изменения атмосферного давления).
     
  2. Victor

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

    Сообщения:
    2.188
    Симпатии:
    368
    PavelNikolaevich нравится это.
  3. Сергей Булгаков

    Сергей Булгаков Новичок

    Сообщения:
    19
    Симпатии:
    2
  4. Сергей Булгаков

    Сергей Булгаков Новичок

    Сообщения:
    19
    Симпатии:
    2
    @Victor добрый день! Возникли сложности, может быть вы сможете помочь...
    Проблема в следующем: делаю свои скетчи на основе примера4, Всё хорошо. Компилируется, заливается в IoT manager данные отображаются, но после 4-5 минут работы датчики перестают отвечать и вместо данных в браке уходит "null". Сначала подумал что проблема с брокером, переключился на локального . Не помогло. Переписал код по другой датчик (был bmt180, стал dht 11). Опять непомогло... Незнаю в какую ещё сторону думать, может посоветуете?
     
  5. klbsss

    klbsss Читатель

    Сообщения:
    24
    Симпатии:
    8
    у меня было такое.
    Увеличите значение StaticJsonBuffer<8024> jsonBuffer;
     
  6. Victor

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

    Сообщения:
    2.188
    Симпатии:
    368
    поддерживаю и посмотрите логи еще - может утечка памяти где-то (функция FreeHEAP именно для этого)
     
  7. grigorygn

    grigorygn Новичок

    Сообщения:
    13
    Симпатии:
    3
    Добрый день!
    Можно ли как-то подключить 74HC595 в качестве расширителя портов (выходов) наподобие того, как это описано здесь?
     
  8. Victor

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

    Сообщения:
    2.188
    Симпатии:
    368
    да, конечно. IoT Manager к железу вообще никак не привязан - хоть от холодильника вашего будет принимать данные.
    Кстати, есть еще вариант подключения Arduino Pro Mini через I2C по двум проводам в качестве расширителя портов от наших коллег esp8266.nu MiniProExtender:
    ESP8266 + ArduinoProMini через I2C (раскрыть)

    Код (C):
    1. /****************************************************************************************************************************\
    2. * Arduino project "ESP Easy" � Copyright www.esp8266.nu
    3. *
    4. * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
    5. * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
    6. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
    7. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
    8. * You received a copy of the GNU General Public License along with this program in file 'License.txt'.
    9. *
    10. * IDE download    : https://www.arduino.cc/en/Main/Software
    11. * ESP8266 Package : https://github.com/esp8266/Arduino
    12. *
    13. * Source Code     : https://sourceforge.net/projects/espeasy/
    14. * Support         : http://www.esp8266.nu
    15. * Discussion      : http://www.esp8266.nu/forum/
    16. *
    17. * Additional information about licensing can be found at : http://www.gnu.org/licenses
    18. \*************************************************************************************************************************/
    19.  
    20. // This file is to be loaded onto an Arduino Pro Mini so it will act as a simple IO extender to the ESP module.
    21. // Communication between ESP and Arduino is using the I2C bus, so only two wires needed.
    22. // It best to run the Pro Mini on 3V3, although the 16MHz versions do not officially support this voltage level on this frequency.
    23. // That way, you can skip levelconverters on I2C.
    24. // Arduino Mini Pro uses A4 and A5 for I2C bus. ESP I2C can be configured but they are on GPIO-4 and GPIO-5 by default.
    25.  
    26. #include <Wire.h>
    27.  
    28. #define I2C_MSG_IN_SIZE    4
    29. #define I2C_MSG_OUT_SIZE   4
    30.  
    31. #define CMD_DIGITAL_WRITE  1
    32. #define CMD_DIGITAL_READ   2
    33. #define CMD_ANALOG_WRITE   3
    34. #define CMD_ANALOG_READ    4
    35.  
    36. volatile uint8_t sendBuffer[I2C_MSG_OUT_SIZE];
    37.  
    38. void setup()
    39. {
    40.   Wire.begin(0x7f);
    41.   Wire.onReceive(receiveEvent);
    42.   Wire.onRequest(requestEvent);
    43. }
    44.  
    45. void loop() {}
    46.  
    47. void receiveEvent(int count)
    48. {
    49.   if (count == I2C_MSG_IN_SIZE)
    50.   {
    51.     byte cmd = Wire.read();
    52.     byte port = Wire.read();
    53.     int value = Wire.read();
    54.     value += Wire.read()*256;
    55.     switch(cmd)
    56.       {
    57.         case CMD_DIGITAL_WRITE:
    58.           pinMode(port,OUTPUT);
    59.           digitalWrite(port,value);
    60.           break;
    61.         case CMD_DIGITAL_READ:
    62.           pinMode(port,INPUT_PULLUP);
    63.           clearSendBuffer();
    64.           sendBuffer[0] = digitalRead(port);
    65.           break;
    66.         case CMD_ANALOG_WRITE:
    67.           analogWrite(port,value);
    68.           break;
    69.         case CMD_ANALOG_READ:
    70.           clearSendBuffer();
    71.           int valueRead = analogRead(port);
    72.           sendBuffer[0] = valueRead & 0xff;
    73.           sendBuffer[1] = valueRead >> 8;
    74.           break;
    75.       }
    76.   }
    77. }
    78.  
    79. void clearSendBuffer()
    80. {
    81.   for(byte x=0; x < sizeof(sendBuffer); x++)
    82.     sendBuffer[x]=0;
    83. }
    84.  
    85. void requestEvent()
    86. {
    87.   Wire.write((const uint8_t*)sendBuffer,sizeof(sendBuffer));
    88. }
    89.  
     
  9. Сергей Булгаков

    Сергей Булгаков Новичок

    Сообщения:
    19
    Симпатии:
    2
    Спасибо, кажется помогло, прорестирую ещё ночью, но уже работает минут 30 без проблем.
    Не подскажете, где посмотреть информацию о том как использовать ножки TX RX в качестве GPIO?

    З.Ы. к сожалению спустя три часа все сломалось...
    Вижу несколько выходов: 1. перезагружать модуль программно каждый час (костыль и неудобно); 2. отказаться от Json; 3.решить проблему с растущим буфером.
     
    Последнее редактирование: 11 фев 2016
  10. Victor

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

    Сообщения:
    2.188
    Симпатии:
    368
    попробуйте эту строку JsonObject& json_status = jsonBuffer.createObject(); перенести внутрь функций setStatus - это первый кандидат на утечку памяти. Также чтобы точно определить, что дело именно в утечке нужно отслеживать логи через терминал. Уменьшите jsonBuffer обратно и все логи с запуска до вылета в студию :)
     
  11. Сергей Булгаков

    Сергей Булгаков Новичок

    Сообщения:
    19
    Симпатии:
    2
    Данные из терминала (раскрыть)

    Код (Text):
    1.  
    2. MQTT client started.
    3. Mode: STA
    4. PHY mode: N
    5. Channel: 1
    6. AP id: 0
    7. Status: 0
    8. Auto connect: 1
    9. SSID (0):
    10. Passphrase (0):
    11. BSSID set: 0
    12. Connecting via WiFi to esp8266...
    13.  
    14. WiFi connect: Success
    15. IP address: 192.168.1.165
    16. Connecting to MQTT server ...
    17. Connect to MQTT server: Success
    18. Get data from subscribed topic /IoTmanager => dev04
    19. Publish config: Success ({"id":0,"page":"HDT11","widget":"display-value","class1":"item no-border","style1":"","descr":"Влажность  %","class2":"balanced","style2":"font-size:20px;float:left;padding-top:10px;font-weight:bold;","topic":"/IoTmanager/dev04/HDT11_temp","class3":"","style3":"float:right;","height":"40","color":"#52FF00","inactive_color":"#414141","digits_count":3})
    20. Publish config: Success ({"id":1,"page":"HDT11","widget":"display-value","class1":"item no-border","style1":"","descr":"Темп-СЂР°  *C","class2":"balanced","style2":"font-size:20px;float:left;padding-top:10px;font-weight:bold;","topic":"/IoTmanager/dev04/HDT11_hum","class3":"","style3":"float:right;","height":"40","color":"#52FF00","inactive_color":"#414141","digits_count":3})
    21. Publish config: Success
    22. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":0}
    23. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":0}
    24. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    25. Memory leak detected! old free heap = 40616, new value = 40544
    26. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"20.00"}
    27. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    28. Memory leak detected! old free heap = 40544, new value = 40328
    29. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"20.00"}
    30. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    31. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"20.00"}
    32. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    33. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"20.00"}
    34. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    35. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"20.00"}
    36. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    37. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"20.00"}
    38. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    39. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"20.00"}
    40. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    41. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"20.00"}
    42. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"34.00"}
    43. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {"status":"21.00"}
    44. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {"status":"35.00"}
    45. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {}
    46. Get data from subscribed topic /IoTmanager => HELLO
    47. Get data from subscribed topic /IoTmanager => dev04
    48. Publish config: Success ({"id":0,"page":"HDT11","widget":"display-value","class1":"item no-border","style1":"","descr":"Влажность  %","class2":"balanced","style2":"font-size:20px;float:left;padding-top:10px;font-weight:bold;","topic":"/IoTmanager/dev04/HDT11_temp","class3":"","style3":"float:right;","height":"40","color":"#52FF00","inactive_color":"#414141","digits_count":3})
    49. Publish config: Success ({"id":1,"page":"HDT11","widget":"display-value","class1":"item no-border","style1":"","descr":"Темп-СЂР°  *C","class2":"balanced","style2":"font-size:20px;float:left;padding-top:10px;font-weight:bold;","topic":"/IoTmanager/dev04/HDT11_hum","class3":"","style3":"float:right;","height":"40","color":"#52FF00","inactive_color":"#414141","digits_count":3})
    50. Publish config: Success
    51. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {}
    52. Memory leak detected! old free heap = 40328, new value = 40216
    53. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {}
    54. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {}
    55. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {}
    56. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {}
    57. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {}
    58. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {}
    59. Publish new status for /IoTmanager/dev04/HDT11_hum, value: {}
    60. Publish new status for /IoTmanager/dev04/HDT11_temp, value: {}
     
  12. Victor

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

    Сообщения:
    2.188
    Симпатии:
    368
    дело не в утечке памяти, вроде датчик отваливается?
    проверяйте temp и davlen после чтения данных и перед тем, как вызывать setStatus и объявление этих переменных и чтение данных из датчика вынести в отдельную функцию (тогда они будут пересоздаваться каждый раз при вызове функции и не смогут влиять на утечку памяти)
     
  13. Сергей Булгаков

    Сергей Булгаков Новичок

    Сообщения:
    19
    Симпатии:
    2
    Попробую, но почему увеличение буфера так сильно помогло. Ещё один момент, я пробовал сдвумя разными датчиками (датчик давления и датчик влажности) соответственно две разные библиотеки и два данных кода опроса датчиков. А результат одинаковый. Я тут задумался, а неможет быть это из-за кириллицы?
     
  14. Victor

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

    Сообщения:
    2.188
    Симпатии:
    368
    попробуйте.
    но я больше всего не доверяю реализации String в Arduino.
    Выложите последний вариант скетча, я еще подумаю
     
  15. Сергей Булгаков

    Сергей Булгаков Новичок

    Сообщения:
    19
    Симпатии:
    2
    код (раскрыть)

    Код (Text):
    1. #include <ESP8266WiFi.h>
    2. #include <WiFiClientSecure.h>
    3. #include <PubSubClient.h>
    4. #include <ArduinoJson.h>
    5. #include "DHT.h"
    6. #define DHTPIN 2
    7. #define DHTTYPE DHT11   // DHT 11
    8.  
    9. DHT dht(DHTPIN, DHTTYPE);
    10.  
    11. String hum, temp; float h, t; int ttt;
    12.  
    13. const char *ssid =  "esp8266";            // cannot be longer than 32 characters!
    14. const char *pass =  "12345678";       // WiFi password
    15.  
    16. String prefix   = "/IoTmanager";      // global prefix for all topics - must be some as mobile device
    17. String deviceID = "dev04";            // thing ID - unique device id in our project
    18.  
    19. WiFiClient wclient;
    20.  
    21. // config for cloud mqtt broker by DNS hostname ( for example, cloudmqtt.com use: m20.cloudmqtt.com - EU, m11.cloudmqtt.com - USA )
    22. //String mqttServerName = "m11.cloudmqtt.com";            // for cloud broker - by hostname, from CloudMQTT account data
    23. //int    mqttport = 10927;                                // default 1883, but CloudMQTT.com use other, for example: 13191, 23191 (SSL), 33191 (WebSockets) - use from CloudMQTT account data
    24. //String mqttuser =  "test";                              // from CloudMQTT account data
    25. //String mqttpass =  "test";                              // from CloudMQTT account data
    26. //PubSubClient client(wclient, mqttServerName, mqttport); // for cloud broker - by hostname
    27.  
    28.  
    29. // config for local mqtt broker by IP address
    30. IPAddress server(192, 168, 1, 100);                        // for local broker - by address
    31. int    mqttport = 1883;                                    // default 1883
    32. String mqttuser =  "test";                                     // from broker config
    33. String mqttpass =  "test";                                     // from broker config
    34. PubSubClient client(wclient, server, mqttport);            // for local broker - by address
    35.  
    36. String val;
    37. String ids = "";
    38. int newValue, newtime, oldtime, freeheap;
    39.  
    40. const int nWidgets = 2;
    41. String sTopic      [nWidgets];
    42. String stat        [nWidgets];
    43. int    pin         [nWidgets];
    44. String thing_config[nWidgets];
    45. StaticJsonBuffer<1024>jsonBuffer;
    46. //JsonObject& json_status = jsonBuffer.createObject();
    47. String string_status;
    48.  
    49. void FreeHEAP() {
    50.   if ( ESP.getFreeHeap() < freeheap ) {
    51.     if ( ( freeheap != 100000) ) {
    52.        Serial.print("Memory leak detected! old free heap = ");
    53.        Serial.print(freeheap);
    54.        Serial.print(", new value = ");
    55.        Serial.println(ESP.getFreeHeap());
    56.     }
    57.     freeheap = ESP.getFreeHeap();
    58.   }
    59. }
    60.  
    61. String setStatus ( String s ) {
    62.   JsonObject& json_status = jsonBuffer.createObject();
    63.   json_status["status"] = s;
    64.   string_status = "";
    65.   json_status.printTo(string_status);
    66.   return string_status;
    67. }
    68. String setStatus ( int s ) {
    69.   JsonObject& json_status = jsonBuffer.createObject();
    70.   json_status["status"] = s;
    71.   string_status = "";
    72.   json_status.printTo(string_status);
    73.   return string_status;
    74. }
    75. void initVar() {
    76.  
    77.   sTopic[0] = prefix + "/" + deviceID + "/HDT11_temp";
    78.   stat  [0] = setStatus (0);
    79.   sTopic[1] = prefix + "/" + deviceID + "/HDT11_hum";
    80.   stat  [1] = setStatus (1);
    81.  
    82.   JsonObject& root = jsonBuffer.createObject();
    83.   JsonObject& cfg  = jsonBuffer.createObject();
    84.  
    85.   root["id"] = 0;
    86.   root["page"] = "HDT11";
    87.   root["widget"] = "display-value";
    88.   root["class1"] = "item no-border";                          // class for 1st div
    89.   root["style1"] = "";                                        // style for 1st div
    90.   root["descr"]  = "Влажность  %";                            // text  for description
    91.   root["class2"] = "balanced";                                // class for description from Widgets Guide - Color classes
    92.   root["style2"] = "font-size:20px;float:left;padding-top:10px;font-weight:bold;"; // style for description
    93.   root["topic"] = sTopic[0];
    94.   root["class3"] = "";                                        // class for 3 div - SVG
    95.   root["style3"] = "float:right;";                            // style for 3 div - SVG
    96.   root["height"] = "40";                                      // SVG height without "px"
    97.   root["color"]  = "#52FF00";                                 // color for active segments
    98.   root["inactive_color"] = "#414141";                         // color for inactive segments
    99.   root["digits_count"]   = 3;                                 // how many digits
    100.  
    101.   root.printTo(thing_config[0]);
    102.  
    103. //////////////////////////////////////
    104. root["id"] = 1;
    105.   root["page"] = "HDT11";
    106.   root["widget"] = "display-value";
    107.   root["class1"] = "item no-border";                          // class for 1st div
    108.   root["style1"] = "";                                        // style for 1st div
    109.   root["descr"]  = "Темп-ра  *C";                            // text  for description
    110.   root["class2"] = "balanced";                                // class for description from Widgets Guide - Color classes
    111.   root["style2"] = "font-size:20px;float:left;padding-top:10px;font-weight:bold;"; // style for description
    112.   root["topic"] = sTopic[1];
    113.   root["class3"] = "";                                        // class for 3 div - SVG
    114.   root["style3"] = "float:right;";                            // style for 3 div - SVG
    115.   root["height"] = "40";                                      // SVG height without "px"
    116.   root["color"]  = "#52FF00";                                 // color for active segments
    117.   root["inactive_color"] = "#414141";                         // color for inactive segments
    118.   root["digits_count"]   = 3;                                 // how many digits
    119.  
    120.   root.printTo(thing_config[1]);
    121. //////////////////////////////////////
    122.  
    123. }
    124. void pubStatus(String t, String payload) {
    125.     if (client.publish(t + "/status", payload)) {
    126.        Serial.println("Publish new status for " + t + ", value: " + payload);
    127.     } else {
    128.        Serial.println("Publish new status for " + t + " FAIL!");
    129.     }
    130.     FreeHEAP();
    131. }
    132. void pubConfig() {
    133.   bool success;
    134.   success = client.publish(MQTT::Publish(prefix, deviceID).set_qos(1));
    135.   if (success) {
    136.       delay(500);
    137.       for (int i = 0; i < nWidgets; i = i + 1) {
    138.         success = client.publish(MQTT::Publish(prefix + "/" + deviceID + "/config", thing_config[i]).set_qos(1));
    139.         if (success) {
    140.           Serial.println("Publish config: Success (" + thing_config[i] + ")");
    141.         } else {
    142.           Serial.println("Publish config FAIL! ("    + thing_config[i] + ")");
    143.         }
    144.         delay(150);
    145.       }    
    146.   }
    147.   if (success) {
    148.      Serial.println("Publish config: Success");
    149.   } else {
    150.      Serial.println("Publish config: FAIL");
    151.   }
    152.   stat[0] = setStatus(  ttt=0 ); // пока не понял то это
    153.   stat[1] = setStatus(  ttt=0 ); // пока не понял то это
    154.   for (int i = 0; i < nWidgets; i = i + 1) {
    155.       pubStatus(sTopic[i], stat[i]);
    156.       delay(100);
    157.   }    
    158. }
    159. void callback(const MQTT::Publish& sub) {
    160.   Serial.print("Get data from subscribed topic ");
    161.   Serial.print(sub.topic());
    162.   Serial.print(" => ");
    163.   Serial.println(sub.payload_string());
    164.  
    165.   if ( sub.payload_string() == "HELLO" ) {  // handshaking
    166.      pubConfig();
    167.   }
    168. }
    169.  
    170. void setup() {
    171.     dht.begin();
    172.   WiFi.mode(WIFI_STA);
    173.   initVar();
    174.   oldtime = 0;
    175.   Serial.begin(115200);
    176.   delay(10);
    177.   Serial.println();
    178.   Serial.println();
    179.   Serial.println("MQTT client started.");
    180.   FreeHEAP();
    181.   freeheap = 100000;
    182.   WiFi.disconnect();
    183.   WiFi.printDiag(Serial);
    184. }
    185.  
    186. void loop() {
    187.   if (WiFi.status() != WL_CONNECTED) {
    188.     Serial.print("Connecting via WiFi to ");
    189.     Serial.print(ssid);
    190.     Serial.println("...");
    191.  
    192.     WiFi.begin(ssid, pass);
    193.  
    194.     if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    195.       return;
    196.     }
    197.  
    198.     Serial.println("");
    199.     Serial.println("WiFi connect: Success");
    200.     Serial.print("IP address: ");
    201.     Serial.println(WiFi.localIP());
    202.   }
    203.  
    204.   if (WiFi.status() == WL_CONNECTED) {
    205.     if (!client.connected()) {
    206.       Serial.println("Connecting to MQTT server ...");
    207.       bool success;
    208.       if (mqttuser.length() > 0) {
    209.         success = client.connect( MQTT::Connect( deviceID ).set_auth(mqttuser, mqttpass) );
    210.       } else {
    211.         success = client.connect( deviceID );
    212.       }
    213.       if (success) {
    214.         client.set_callback(callback);
    215.         Serial.println("Connect to MQTT server: Success");
    216.         client.subscribe(prefix); // for receiving HELLO messages and handshaking
    217.         pubConfig();
    218.       } else {
    219.         Serial.println("Connect to MQTT server: FAIL");  
    220.         delay(1000);
    221.       }
    222.     }
    223.  
    224.     if (client.connected()) {
    225.       newtime = millis();
    226.       if (newtime - oldtime > 10000) { // read ADC and publish data every 10 sec
    227.        
    228.         h = dht.readHumidity();
    229.         hum = String(h);
    230.         t=dht.readTemperature();
    231.         temp = String (t);
    232.        
    233.         stat[0] = setStatus( hum );
    234.         stat[1] = setStatus( temp );
    235.         pubStatus(sTopic[0], stat[0] );
    236.         pubStatus(sTopic[1], stat[1] );
    237.         oldtime = newtime;
    238.       }
    239.       client.loop();
    240.     }
    241.   }
    242. }
     
  16. Victor

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

    Сообщения:
    2.188
    Симпатии:
    368
    ну вы еще не выполнили предыдущие рекомендации.
    и еще объявление string_status перенесите внутрь setStatus
     
  17. Сергей Булгаков

    Сергей Булгаков Новичок

    Сообщения:
    19
    Симпатии:
    2
    Итак, что удалось выяснить:
    1. проблема точно не в кириллице;
    2.точно не в отваливающемся датчике.
    Проблема где-то вот в этом куске кода
    кусок кода (раскрыть)

    Код (Text):
    1. String setStatus ( String s ) {
    2.   JsonObject& json_status = jsonBuffer.createObject();
    3.   String string_status;
    4.   json_status["status"] = s;
    5.   string_status = "";
    6.   json_status.printTo(string_status);
    7.   return string_status;
    8. }
    9. String setStatus ( int s ) {
    10.   JsonObject& json_status = jsonBuffer.createObject();
    11.   String string_status;
    12.   json_status["status"] = s;
    13.   string_status = "";
    14.   json_status.printTo(string_status);
    15.   return string_status;


    после того как я заменил его на аналогичный кусок из примера 1
    другой кусок (раскрыть)

    Код (Text):
    1. String setStatus ( String s ) {
    2.   String stat = "{\"status\":\"" + s + "\"}";
    3.   return stat;
    4. }
    5. String setStatus ( int s ) {
    6.   String stat = "{\"status\":\"" + String(s) + "\"}";
    7.   return stat;
    8. }

    все стало работать как часы. я конечно оставлю теститься на ночь... Утром сделаю выводы...
    P/S/ Отработало всю ночь без косяков.
     
    Последнее редактирование: 12 фев 2016
    blue_shark и Victor нравится это.
  18. Victor

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

    Сообщения:
    2.188
    Симпатии:
    368
    Вышла новая версия IoT Manager - подробности в новой теме.
    Этот топик помечен как архивный, но доступен для чтения. Для дальнейшего обсуждения IoT Manager создан отдельный раздел, в котором будем стараться придерживаться правила "Каждый вопрос в отдельном топике"
     
Статус темы:
Закрыта.

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