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

Странное поведение прошивки MQTT

CROSP

New member
Здравствуйте, я хочу сделать маленький проект с датчиком который бы отсылал данные по MQTT протоколу.
Нашел вот реализованную прошивку уже с нужным функционалом, даже больше чем надо. GitHub - tuanpmt/esp_mqtt: MQTT client library for ESP8266 Soc
Поправил, скомпилировал и прошил. Все окей.
Но после того как прошил на UART постоянно сыпятся подобные сообщения

Код:
scandone
no A700E found, reconnect after 1s
reconnect
f r0, scandone
no A700E found, reconnect after 1s
reconnect
f 0, scandone
no A700E found, reconnect after 1s
reconnect
Вроде как не может подконектиться к точке A700E. НО вопрос откуда взялась такая точка вообще.
Я редактировал файл include/mqtt_config.h , поправил там настройки точки доступа и адрес mqtt брокера, а оно пытается подключится к какой-то непонятной точке A700E.
Я грепом пробовал искать по всем файла в SDK и в проекте этом, никакой такой точки нету.
Вообще не могу понять откуда она взялась и в чем вообще проблема.
Я залил свой подправленный проект на гитхаб GitHub - CROSP/IOT_MQTT_Intercom
Пожалуйста помогите решить эту проблему. Я не знаю в чем проблема.
Использую opensdk GitHub - pfalcon/esp-open-sdk: Free and open (as much as possible) integrated SDK for ESP8266 chips
Система Linux Debian
Буду благодарен за любую помощь.
Спасибо
 

Victor

Administrator
Команда форума
Буду благодарен за любую помощь.
в mqtt_config в строке [inline][HASHTAG]#define[/HASHTAG] CFG_HOLDER 0x00FF55A4[/inline] измените число на любое другое, и меняйте каждый раз после изменения констант в этом файле, иначе прошивка будет брать настройки из EEPROM, а не из кода
 

CROSP

New member
Вот оно как, спасибо большое за пояснение. Не знаю чтобы без Вас делал. Только что поменял число на другое (0x00FA55A4) но к сожалению опять пытается подконектиться к этой злосчастной сети А700Е. Подскажите где еще может быть проблема
Спасибо
 

CROSP

New member
Если поменять вручную вот так [inline] WIFI_Connect("SSID", "password", wifiConnectCb);[/inline] то все работает, даже авторизацию проходит и отсылает сообщение на mqtt broker .
Подскажите пожалуйста в чем проблема может быть.
Спасибо
 
Последнее редактирование:

CROSP

New member
Мне кажеться проблема в записи данных на флешку по SPI

Код:
void ICACHE_FLASH_ATTR
CFG_Save()
{
    spi_flash_read((CFG_LOCATION + 3) * SPI_FLASH_SEC_SIZE,
                      (uint32 *)&saveFlag, sizeof(SAVE_FLAG));

    if (saveFlag.flag == 0) {
        spi_flash_erase_sector(CFG_LOCATION + 1);
        spi_flash_write((CFG_LOCATION + 1) * SPI_FLASH_SEC_SIZE,
                        (uint32 *)&sysCfg, sizeof(SYSCFG));
        saveFlag.flag = 1;
        spi_flash_erase_sector(CFG_LOCATION + 3);
        spi_flash_write((CFG_LOCATION + 3) * SPI_FLASH_SEC_SIZE,
                        (uint32 *)&saveFlag, sizeof(SAVE_FLAG));
    } else {
        spi_flash_erase_sector(CFG_LOCATION + 0);
        spi_flash_write((CFG_LOCATION + 0) * SPI_FLASH_SEC_SIZE,
                        (uint32 *)&sysCfg, sizeof(SYSCFG));
        saveFlag.flag = 0;
        spi_flash_erase_sector(CFG_LOCATION + 3);
        spi_flash_write((CFG_LOCATION + 3) * SPI_FLASH_SEC_SIZE,
                        (uint32 *)&saveFlag, sizeof(SAVE_FLAG));
    }
}
После того как я считываю конфиг

Получаю следующее

STA_SSID Myssid

STA_PASS mypass

CONFIG LOADED ssid : A700E pass : mypass

Может просто запись идет не по тому смещению что нужно ? Кто может подсказать по этому поводу
 

Victor

Administrator
Команда форума
@CROSP, можно просто вырезать сохранение/загрузку конфигурации, все отлично и без этого будет работать
 

CROSP

New member
@CROSP, можно просто вырезать сохранение/загрузку конфигурации, все отлично и без этого будет работать
Спасибо сидел ночью разбирался, проблема оказалась в структуре и размере данных, все это захордкоженно в
Код:
typedef struct{
    uint32_t cfg_holder;
    uint8_t device_id[16];
    uint8_t mqtt_topic[64];
    uint8_t sta_ssid[64];
    uint8_t sta_pwd[64];
    uint32_t sta_type;

    uint8_t mqtt_host[64];
    uint32_t mqtt_port;
    uint8_t mqtt_user[32];
    uint8_t mqtt_pass[32];
    uint32_t mqtt_keepalive;
    uint8_t security;
} SYSCFG;
В общем взял пример вот этого проекта GitHub - jpenninkhof/esp_mqtt_switch: MQTT Switch for ESP8266 там модифицированный проект и либа немножко сама.
Спасибо большое за помощь
 
Сверху Снизу