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

скетч с конфигуратором в eeprom, сервер и клиент

Dan Don

New member
затрудняюсь что-то так сказать, возможно это связано с более новой версией sdk?
стандартный пример с AP работает? там адрес точки как-то инициализируется?
Я буду наверное совсем глупым если спрошу, как его найти?) Это он на скрине?
 

Вложения

Dan Don

New member
затрудняюсь что-то так сказать, возможно это связано с более новой версией sdk?
стандартный пример с AP работает? там адрес точки как-то инициализируется?
До этого я работал с MQTT и сейчас стала задача, в создании интерфейса без доступа в инет и при желании , чтобы можно было ввести параметры брокера MQTT и работать уже удаленно
 

Vitaly

Member
Самое простое ESP8266WiFi -> WiFiAccessPoint
в примерах адрес не задается при старте, оно просто его получает из либы и выводит

кажется там есть возможность задать свой, но раньше работало и без этого
 

Dan Don

New member
Самое простое ESP8266WiFi -> WiFiAccessPoint
в примерах адрес не задается при старте, оно просто его получает из либы и выводит

кажется там есть возможность задать свой, но раньше работало и без этого
из библиотечного скетча он мне выдал 192.168.4.1
 

Vitaly

Member
мне сейчас не на чем поставить последние либы и проверить в чём дело, когда будет такая возможность - обновлюсь
 

leon013

New member
Коллеги, помогите советом. Написал скетч ля чтения и записи данных в епром. С платой nodemcu 0.9 все работало прекрасно. Перекомпиллил под esp-07, выбрал generic esp module. Размер флеши 1М (при прошивке последним прошивальшиком из IDE само определилось). Прошивка заливается, но при первом же запросе чтения из епром плата перезагружается циклично в том же самом месте.
Выбираю размер флеш 2М. перезагрузка пропадает, но из епром ничего не читается и ничего не пишется, хотя по сообщениям функция записи отрабатывает .
может кто сталкивался с таким. У меня две платы esp-07, от разных продавцов и куплены в разное время, но проблема прявляется на обеих.
 

Сергей_Ф

Moderator
Команда форума
@leon013 вы бы хоть сказали куда пишите. Если в область программы - то ничего странного нет.
 

leon013

New member
Это я читал. Новости уже полтора года почти. Поэтому подумал что решение уже есть, и тот кто в теме подскажут....
 

nikolz

Well-known member
Это я читал. Новости уже полтора года почти. Поэтому подумал что решение уже есть, и тот кто в теме подскажут....
если сохраняете не более 512 байт - пишите в RTC
для записи во флеш используйте функции СИ из SDK вместо дурины
 

Сергей_Ф

Moderator
Команда форума
Новости уже полтора года почти. Поэтому подумал что решение уже есть, и тот кто в теме подскажут....
точно было решение. Надо править исходники чуть чуть. Но сейчас не найду о со смарта тяжело. Rtc писать просто, но все пропадает при отключении питания. Если устроит, сейчас найду как.
 

leon013

New member
точно было решение. Надо править исходники чуть чуть.
Если есть решение, поделитесь пожалуйста. Мне хранить с отключением питания нужно.
на форуме недавно отвечал но я могу дать ссылку лишь на SDK
Не сочтите за труд. Мне интересны все решения этой проблемы с епром.
 

Сергей_Ф

Moderator
Команда форума
@leon013 после этого надо перекомпилировать скетч без кэша и залить заново, естественно. И покажите свой скетч в конце-концов.
 
Последнее редактирование:

leon013

New member
вот чтение из еепром
Код:
 void eep_init (void){
     unsigned char i,y,tmp;
     String port_str;
    // delay(300);
   //  Serial.println("");
  //  Serial.println("LOAD");
     EEPROM.begin(100);
  
   
      unsigned char* buf_conf = new unsigned char[20];//0
     
i = 0;
y = 1;
     do {
      tmp = char(EEPROM.read(y));
      buf_conf[i] = tmp;
      y++;
      i++;
        } while (tmp != 0);
      _ssid = (const char*)buf_conf;
       Serial.println(_ssid);
i = 0;
y = 21;
     do {
      tmp = char(EEPROM.read(y));
      buf_conf[i] = tmp;
      y++;
      i++;
        } while (tmp != 0);
      _password = (const char*)buf_conf;
       Serial.println(_password);     
i = 0;
y = 41;
     do {
      tmp = char(EEPROM.read(y));
      buf_conf[i] = tmp;
      y++;
      i++;
        } while (tmp != 0);
      mqtt_user = (const char*)buf_conf;
       Serial.println(mqtt_user);    
i = 0;
y = 61;
     do {
      tmp = char(EEPROM.read(y));
      buf_conf[i] = tmp;
      y++;
      i++;
        } while (tmp != 0);
      mqtt_pass = (const char*)buf_conf;
       Serial.println(mqtt_pass);    
i = 0;
y = 81;
     do {
      tmp = char(EEPROM.read(y));
      buf_conf[i] = tmp;
      y++;
      i++;
        } while (tmp != 0);
      port_str = (const char*)buf_conf;
      mqtt_port = port_str.toInt();
      Serial.println(mqtt_port);
     
       EEPROM.commit();
       EEPROM.end();
   
  }
а вот запись
Код:
 void uart_in (void){
unsigned char i,y,z,mesto;
digitalWrite(2, LOW);
while(1){
while (Serial.available() < 20);

  for (i = 0; i < 20;i++){
  arr_uart_conf[i] = Serial.read(); 
                         }
   EEPROM.begin(100);                     
  i = arr_uart_conf[0] - 1;
  i = i * 20;//20
  y = arr_uart_conf[0] * 20;
  //y--;
  mesto = 0;
  for(z = i; z < y; z++){
    EEPROM.write(z, arr_uart_conf[mesto]);
    mesto++;
                        }
    // EEPROM.write(10, 0);                  
Serial.println("SAVE");
     EEPROM.commit();
     EEPROM.end();                   
       }
                    }
 
Сверху Снизу