• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 там модифицированный проект и либа немножко сама.
Спасибо большое за помощь
 
Сверху Снизу