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

Баги/глюки/проблемы в каком-то конкретном примере из пакета Sming

M-a-x-x

New member
Есть такое, попробуй по одному датчику, экран убирать(комментировать сроки). Еще бывает на delay() ругается. Перед заливкой новой прошивки удалить папку ./out и прошить предварительно пустым файлом (blank512.bin)
 

M-a-x-x

New member
После обновления не может записать все файлы в spiff_rom.bin. Поставил все с нуля, тоже самое.

Разобрался, нужно просто добавлять эти файлы в архив *.gz
 
Последнее редактирование:
При попытке обновить прошивку во воздуху в 99% случаев возникает ошибка:

Код:
Download file:
  (0) http://192.168.1.3/esp/firmware/0x00000.bin -> 0x0
Download: http://192.168.1.3:80/esp/firmware/0x00000.bin
connect to: 192.168.1.3
TcpConnection::connect result:, 0
realloc 59 -> 190
TCP connection error: -8

Firmware download failed..
Хотя при открытии ссылки в браузере файл скачивается. Пинг до ESP есть.
Смотрю tcpdump на сервере - до хоста пакеты с ESP не долетают во время обновления.

Иногда везет и файл скачивается, но при этом возникает другая проблема:

Код:
Download file:
    (0) http://192.168.1.3/esp/firmware/0x00000.bin -> 0x0
Download: http://192.168.1.3:80/esp/firmware/0x00000.bin
connect to: 192.168.1.3
TcpConnection::connect result:, 0
realloc 59 -> 190
OnConnected
TCP connected
onReadyToSendData: 0
TcpClient request completed
TCP sent: 61
onReadyToSendData: 2
Header pos: 246
Server === nginx/1.8.1
Date === Tue, 01 Mar 2016 21:02:24 GMT
Content-Type === application/octet-stream
Content-Length === 31392
Last-Modified === Tue, 01 Mar 2016 20:19:04 GMT
Connection === close
ETag === "56d5f938-7aa0"
Accept-Ranges === bytes
TCP received: 1460 bytes
...
...
TCP received: 982 bytes
onReadyToSendData: 1
TCP received: (null)
TCP connection closing
-TCP connection
jump: 5472
Download file:
    (1) http://192.168.1.3/esp/firmware/0x09000.bin -> 0x9000
Download: http://192.168.1.3:80/esp/firmware/0x09000.bin
+TCP connection
connect to: 192.168.1.3
TcpConnection::connect result:, 0
realloc 59 -> 190
OnConnected
TCP connected
onReadyToSendData: 0
TcpClient request completed
TCP sent: 61
onReadyToSendData: 2
Header pos: 248
Server === nginx/1.8.1
Date === Tue, 01 Mar 2016 21:02:24 GMT
Content-Type === application/octet-stream
Content-Length === 225928
Last-Modified === Tue, 01 Mar 2016 20:19:04 GMT
Connection === close
ETag === "56d5f938-37288"
Accept-Ranges === bytes
TCP received: 1460 bytes
onReadyToSendData: 1
...
...
TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 4027fe90

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 40280444

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 402809f8

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 40280fac

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 40281560

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 40281b14

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 402820c8

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 4028267c

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 40282c30

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 402831e4

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 40283798

TCP received: 1460 bytes
onReadyToSendData: 1
ERROR: ERROR in flash_write: r=1 at 40283d4c

TCP received: 1340 bytes
onReadyToSendData: 1
TCP received: (null)
TCP connection closing
-TCP connection

Firmware download finished!
         item: 0x0 0x44000 31392 bytes
         item: 0x9000 0x4d000 225928 bytes
Firmware upgrade started
start write: 0x44000 -> 0x0 262792
write: 0x44000 -> 0x0 (sect: 0), 262792
write: 0x45000 -> 0x1000 (sect: 1), 258696
write: 0x46000 -> 0x2000 (sect: 2), 254600
write: 0x47000 -> 0x3000 (sect: 3), 250504
write: 0x48000 -> 0x4000 (sect: 4), 246408
write: 0x49000 -> 0x5000 (sect: 5), 242312
write: 0x4A000 -> 0x6000 (sect: 6), 238216
write: 0x4B000 -> 0x7000 (sect: 7), 234120
write: 0x4C000 -> 0x8000 (sect: 8), 230024
write: 0x4D000 -> 0x9000 (sect: 9), 225928
write: 0x4E000 -> 0xA000 (sect: 10), 221832
write: 0x4F000 -> 0xB000 (sect: 11), 217736
write: 0x50000 -> 0xC000 (sect: 12), 213640
write: 0x51000 -> 0xD000 (sect: 13), 209544
write: 0x52000 -> 0xE000 (sect: 14), 205448
write: 0x53000 -> 0xF000 (sect: 15), 201352
write: 0x54000 -> 0x10000 (sect: 16), 197256
write: 0x55000 -> 0x11000 (sect: 17), 193160
write: 0x56000 -> 0x12000 (sect: 18), 189064
write: 0x57000 -> 0x13000 (sect: 19), 184968
write: 0x58000 -> 0x14000 (sect: 20), 180872
write: 0x59000 -> 0x15000 (sect: 21), 176776
write: 0x5A000 -> 0x16000 (sect: 22), 172680
write: 0x5B000 -> 0x17000 (sect: 23), 168584
write: 0x5C000 -> 0x18000 (sect: 24), 164488
write: 0x5D000 -> 0x19000 (sect: 25), 160392
write: 0x5E000 -> 0x1A000 (sect: 26), 156296
write: 0x5F000 -> 0x1B000 (sect: 27), 152200
write: 0x60000 -> 0x1C000 (sect: 28), 148104
write: 0x61000 -> 0x1D000 (sect: 29), 144008
write: 0x62000 -> 0x1E000 (sect: 30), 139912
write: 0x63000 -> 0x1F000 (sect: 31), 135816
write: 0x64000 -> 0x20000 (sect: 32), 131720
write: 0x65000 -> 0x21000 (sect: 33), 127624
write: 0x66000 -> 0x22000 (sect: 34), 123528
write: 0x67000 -> 0x23000 (sect: 35), 119432
write: 0x68000 -> 0x24000 (sect: 36), 115336
write: 0x69000 -> 0x25000 (sect: 37), 111240
write: 0x6A000 -> 0x26000 (sect: 38), 107144
write: 0x6B000 -> 0x27000 (sect: 39), 103048
write: 0x6C000 -> 0x28000 (sect: 40), 98952
write: 0x6D000 -> 0x29000 (sect: 41), 94856
write: 0x6E000 -> 0x2A000 (sect: 42), 90760
write: 0x6F000 -> 0x2B000 (sect: 43), 86664
write: 0x70000 -> 0x2C000 (sect: 44), 82568
write: 0x71000 -> 0x2D000 (sect: 45), 78472
write: 0x72000 -> 0x2E000 (sect: 46), 74376
write: 0x73000 -> 0x2F000 (sect: 47), 70280
write: 0x74000 -> 0x30000 (sect: 48), 66184
write: 0x75000 -> 0x31000 (sect: 49), 62088
write: 0x76000 -> 0x32000 (sect: 50), 57992
write: 0x77000 -> 0x33000 (sect: 51), 53896
write: 0x78000 -> 0x34000 (sect: 52), 49800
write: 0x79000 -> 0x35000 (sect: 53), 45704
write: 0x7A000 -> 0x36000 (sect: 54), 41608
write: 0x7B000 -> 0x37000 (sect: 55), 37512
write: 0x7C000 -> 0x38000 (sect: 56), 33416
write: 0x7D000 -> 0x39000 (sect: 57), 29320
write: 0x7E000 -> 0x3A000 (sect: 58), 25224
write: 0x7F000 -> 0x3B000 (sect: 59), 21128
write: 0x80000 -> 0x3C000 (sect: 60), 17032
write: 0x81000 -> 0x3D000 (sect: 61), 12936
write: 0x82000 -> 0x3E000 (sect: 62), 8840
write: 0x83000 -> 0x3F000 (sect: 63), 4744
write: 0x84000 -> 0x40000 (sect: 64), 648
Firmware upgrade finished

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 24724, room 16
tail 4
chksum 0x9d
load 0x3ffe8000, len 888, room 4
tail 4
chksum 0x02
load 0x3ffe8380, len 5732, room 4
tail 0
chksum 0x80
csum 0x80
system param error
00 00 ff 08 31 29 0c d8 01 00 21 12 00 00 00 00 12 41 70 02 61 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 01 00 00 02 00 01 03 33 01 02 02 00 12 42 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 80 03 00 02 c0 10 42
40 02 20 80 20 22 02 08 00 20 00 04 00 21 98 46 00 02 04 80 02 08 02 02 4c 0c 08 31 c8 21 12 c1
10 0d f0 00 12 c1 f0 c2 61 00 02 61 03 30 c0 74 04 00 00 00 00 6c 20 22 00 00 48 00 04 01 30 22
20 04 48 40 00 20 01 42 21 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f2 61 23 42 61 1d fd 03 50 50 74
0c 03 cd 02 42 a0 67 2d 01 d2 61 25 02 61 27 e2 61 24 52 61 1e 01 00 00 00 00 00 22 01 00 1c f3
04 00 00 00 02 02 31 00 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 13 20 13 03 01 08 10 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 41 60 2d 01 01 53 f9 c0 00 00 42 21 1d 22 c1 20 32 24 00 01 4f f9 c0 00 00 c5 3e fe
2d 01 85 60 d2 dd 02 dc f2 45 3f fe 21 ce ff 05 1d fe c5 92 d2 2d 0c 3d 0e 85 f0 ff 32 21 1c 2d
0c 05 ec ff 46 09 00 00 00 00 38 0f 21 c7 ff 05 1b fe c5 3c fe 85 90 d2 2d 0c 3d 0e 45 ee ff 32
21 1c 2d 0c c5 e9 ff 22 21 1e 05 7f d2 02 21 27 92 a0 a0 2d 0d c2 21 26 d2 21 25 e2 21 24 f2 21
23 9a 11 0d f0 00 00 00 12 c1 e0 c2 61 06 42 a0 0c cd 02 0c 03 2d 01 02 61 07 01 2d f9 c0 00 00
3d 01 0c 02 45 8e d3 38 01 2d 0c 85 25 fe 08 71 2d 0c c8 61 12 c1 20 0d f0 00 00 00 12 c1 e0 c2
61 06 d2 61 05 09 71 dd 02 85 9e d2 0c 0c 66 52 10 2d 01 3d 0d 05 fb ff 38 11 0c 12 30 c2 93 c0
c0 74 08 71 2d 0c d8 51 c8 61 12 c1 20 0d f0 00 0d 95 fe 3f 12 c1 e0 d2 61 05 30 d3 20 31 fc ff
09 71 c9 61 cd 02 01 c0 f5 c0 00 00 2d 01 ab 3d 01 be f5 c0 00 00 3d 01 2d 0c 05 9e fe 2d 01 85
8f fe 4b 3d 8b 2c 0c 64 01 a2 f6 c0 00 00 28 cd 0c 13 29 4c 22 0d 2b 08 71 22 4c 14 22 0d 2c 80
22 01 20 28 31 22 5c 0b 42 0d 34 0c 02 40 23 93 22 4c 18 d8 51 c8 61 12 c1 20 0d f0 12 c1 e0 c2
61 06 cd 02 21 21 ff d9 51 29 0c 0c 0d 21 31 f6 3d 0c d9 1c d9 2c d9 4c d9 5c 09 71 45 a3 fd 22
cc 10 d2 4c 0c 3d 01 d9 01 85 b3 06 28 01 d7 12 0f 38 12 0b 00 00 00 00 00 00 18 00 00 00 00 01
00 0c 02 29 01 00 00 00 00 14 85 b1 06 28 01 8c d2 38 12 0b 33 39 12 cc 53 38 02 38 13 c0 03 00
08 71 0c 02 29 6c 29 8c d8 51 c8 61 00 00 20 0d 00 00 00 00 00 00 00 00 fd 8c fe 3f 12 c1 f0 c9
21 cd 02 28 42 d9 11 e9 01 09 31 dd 04 ed 05 56 d2 03 28 5c 56 82 03 22 cc 10 45 b0 06 3d 0e d9
6c 22 cc 14 85 af 06 3c 02 85 c7 fd dd 02 45 1a ff 41 f0 ff 3c 23 d9 8c 2d 0d 01 ac f5 c0 00 00
l`don't use rtc mem data
;lS+TCP connection

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset

Далее - циклический ребут.

ESP-07. 1 мегабайт флеш.
 
Вот код, который шью:

Код:
#include <user_config.h>
#include <SmingCore/SmingCore.h>

#ifndef WIFI_SSID
    #define WIFI_SSID "SkyNet"
    #define WIFI_PWD "..."
#endif

#define UPDATE_PIN 2 // GPIO2
HttpFirmwareUpdate airUpdater;

void IRAM_ATTR interruptHandler()
{
    detachInterrupt(UPDATE_PIN);
    Serial.println("Let's do cloud magic!");

    // Start cloud update
    airUpdater.start();
}

// Will be called when WiFi station was connected to AP
void connectOk()
{
    Serial.println("I'm CONNECTED");

    // Configure cloud update
    airUpdater.addItem(0x0000, "http://192.168.1.3/esp/firmware/0x00000.bin");
    airUpdater.addItem(0x9000, "http://192.168.1.3/esp/firmware/0x09000.bin");

    attachInterrupt(UPDATE_PIN, interruptHandler, CHANGE);
    Serial.println("\r\nPress GPIO2 to start cloud update!\r\n");
}

#define LED_PIN 4 // GPIO4

Timer procTimer;
bool state = true;

void blink()
{
                digitalWrite(LED_PIN, state);
        state = !state;
}

void init()
{
    spiffs_mount(); // Mount file system, in order to work with files

    Serial.begin(SERIAL_BAUD_RATE); // 115200 by default
    Serial.systemDebugOutput(true); // Debug output to serial

    WifiStation.enable(true);
    WifiStation.config(WIFI_SSID, WIFI_PWD);
    WifiAccessPoint.enable(false);

    // Run our method when station was connected to AP
    WifiStation.waitConnection(connectOk);

    pinMode(LED_PIN, OUTPUT);
        procTimer.initializeMs(100, blink).start();
}
 

M-a-x-x

New member
Такое было когда прошивка была больше половины памяти еспшки (>~236Kb). Но пример "Basic_AirUpdate" работал, если, например, подсунуть ему "Basic_Blink". У ESP-07 512Kb.
 
Встал в тупик и потратил сегодня целый день над проблемой.пытаюсь совместить HttpServer_ConfigNetwork и HttpClient_ThingSpeak,при отключенном WifiAccessPoint.enable(False) данные не передаются на сервер,когда включаю все идет нормально.Все перелопатил уже,безрезультатно.
 

AAM

New member
Привет.

Нид хелп. Есть два кода. На базе HttpServer_ConfigNetwork, Sming 2.1, SDK 1.5.0 .
В первом добавлено чтение датчика (readDHT() из Humidity_DHT22) и вывод инфы на html-странице (readDHT вызывается из обработчика http-запроса). Работает, показывает температуру.

Второй код был сделан из первого. Добавил пару классов. Весь код функции init() перенес в первый класс. Код инициализации веб-сервера во второй. Правда, как оказалось, HttpServer.addPath() не принимает методы класса в качестве обработчика.

Код работал, до тех пор, пока не включил опрос датчика (вызов readDHT()). После этого даже не запускается прошивка. Т.е. должна появиться Wi-Fi сеть хотя бы. Фиг.
Отсекая код по кускам, нашел, что ошибка возникает на строчке dht.begin();
Вот начало кода readDHT():
Код:
int readDHT(float& h, float& t) { 
int pin = 12; 
DHT dht(pin); 
//disable watchdog 
WDT.enable(false); 
//wait for sensor startup 
delay(1000); 
dht.begin(); 
...
Что вызывает наибольшее непонимание, так это почему прошивка падает изначально, даже до того, как я обращусь к странице, где опрашивается датчик? Такое ощущение, что все функции, обработчики HTTP-запросов, в самом начале по разу вызываются.
Почему косметические изменения так аукнулись.
Есть какие-то предположения, где искать проблему?

Первый вариант работает, вроде бы и забить можно, но напрягают такие нештатные приколы на ровном месте.

P.S. В довершение, проблемы с виндой, ошибка подключения UART конвертера ((
Не успел потестить, что происходит внутри dht.begin()
 
Использую пример MQTT.При длительном разъединения с WIFI,и повторном соединение,не запускается публикация сообщений.А подписка проходит успешно.Помогите,как вылечить этот недостаток.
 

anakod

Moderator
Команда форума
После потери связи надо повторно вызвать connect у MQTT, чтобы установить соединение с сервером. Текущий статус соединения можно получить непосредственно в классе MQTT.
 
После потери связи надо повторно вызвать connect у MQTT, чтобы установить соединение с сервером. Текущий статус соединения можно получить непосредственно в классе MQTT.
Так вроде бы Connect проходит,раз принимает подписку со стороны сервера
 

anakod

Moderator
Команда форума
Проверяйте статус соединения, можно делать это в таймере. Подписка асинхронная операция, насколько я помню, а статус позволяет однозначно говорить о том установлена связь или нет.
 

Symrak

New member
Всех приветствую!

Пример работы с NRF24L01, версия Sming – 2.1.0, железо – ESP-201 со стандартными (указанными в примере) портами (IO 4 и 4) перезагружается (rst cause (3,6) или (3,7)) после попытки выполнения метода radio.printDetails(); (а именно на строке вывода установленного baud rate).

Кто-то сталкивался с подобным? Кто-то успешно запускал этот пример у себя / работал с NRF24L01?
Похоже на срабатывание WATCHDOG, т.к. перезагрузка происходит примерно каждые 8 секунд.

Заранее благодарю!
 
Сверху Снизу