Возникла ошибка при загрузке https://raw.githubusercontent.com/...sp32_index.json
Возникла ошибка при загрузке https://downloads.arduino.cc/packages/package_index.json
ПРЕДУПРЕЖДЕНИЕ: библиотека LiquidCrystal_I2C должна запускаться на архитектурах avr и может быть несовместима с вашей платой на архитектуре esp32.
ПРЕДУПРЕЖДЕНИЕ: библиотека LiquidMenu должна запускаться на архитектурах avr и может быть несовместима с вашей платой на архитектуре esp32.
ПРЕДУПРЕЖДЕНИЕ: библиотека iarduino_I2C_connect должна запускаться на архитектурах avr и может быть несовместима с вашей платой на архитектуре esp32.
In file included from C:\Users\Luxe\Documents\Arduino\Samovar\Samovar.ino:48:
C:\Users\Luxe\Documents\Arduino\libraries\ESP_Async_WebServer\src/ESPAsyncWebServer.h: In member function 'tcp_state AsyncWebServer::state() const':
C:\Users\Luxe\Documents\Arduino\libraries\ESP_Async_WebServer\src/ESPAsyncWebServer.h:1107:50: error: passing 'const AsyncServer' as 'this' argument discards qualifiers [-fpermissive]
return static_cast<tcp_state>(_server.status());
^
In file included from C:\Users\Luxe\Documents\Arduino\Samovar\Samovar.ino:47:
C:\Program Files (x86)\Arduino\libraries\AsyncTCP\src/AsyncTCP.h:198:13: note: in call to 'uint8_t AsyncServer::status()'
uint8_t status();
^~~~~~
Несколько библиотек найдено для "AsyncTCP.h"
Используется: C:\Program Files (x86)\Arduino\libraries\AsyncTCP
Не используется: C:\Users\Luxe\Documents\Arduino\libraries\Async_TCP
Несколько библиотек найдено для "BlynkSimpleEsp32.h"
Используется: C:\Users\Luxe\Documents\Arduino\libraries\Blynk
Не используется: C:\Program Files (x86)\Arduino\libraries\Blynk
Несколько библиотек найдено для "WiFi.h"
Используется: C:\Users\Luxe\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\WiFi
Не используется: C:\Program Files (x86)\Arduino\libraries\WiFi
Несколько библиотек найдено для "GyverButton.h"
Используется: C:\Users\Luxe\Documents\Arduino\libraries\GyverButton
Не используется: C:\Program Files (x86)\Arduino\libraries\GyverButton
Не используется: C:\Program Files (x86)\Arduino\libraries\GyverButton_old
Несколько библиотек найдено для "AsyncMqttClient.h"
Используется: C:\Users\Luxe\Documents\Arduino\libraries\async-mqtt-client
Не используется: C:\Program Files (x86)\Arduino\libraries\async-mqtt-client
exit status 1
Ошибка компиляции для платы DOIT ESP32 DEVKIT V1.
Автоматика Самовар
Evgsmrt
Студент
Тольятти
14 6
Отв.3380 15 Авг. 25, 21:02
lkosoj
Куратор
Видное
613 676
Отв.3381 16 Авг. 25, 12:07
У вас лишние библиотеки в каталоге libraries. Надо удалить всё из каталогов
C:\Users\Luxe\Documents\Arduino\libraries\
C:\Program Files (x86)\Arduino\libraries\
И скопировать библиотеки Самовара в каталог C:\Users\Luxe\Documents\Arduino\libraries\
C:\Users\Luxe\Documents\Arduino\libraries\
C:\Program Files (x86)\Arduino\libraries\
И скопировать библиотеки Самовара в каталог C:\Users\Luxe\Documents\Arduino\libraries\
dranek
Доктор наук
Минск
538 499
Отв.3382 19 Авг. 25, 08:38
Почитал про String.
Прямых заявлений об использовании HEAP в случае глобальных переменных не нашел.
Однако исходный код класса String в Arduino Core
GitHub: ArduinoCore-avr / String.h
https://github.com/...rduino/String.h
· Класс String использует char *buffer для хранения данных.
· Методы reserve(), operator+= и конструкторы вызывают realloc()/malloc() (функции кучи).
buffer — это указатель на ю кучу.
То есть глобальная String: объект хранится в DATA/BSS, строка в виде pchar хранится в HEAP и скачет по ней при изменении размера.
Есть способ застолбить под неё увеличенный кусок в HEAP:
str.reserve(100);
В итоге раз глобальная String всё равно использует HEAP преимущества в её глобальности не вижу.
Прямых заявлений об использовании HEAP в случае глобальных переменных не нашел.
Однако исходный код класса String в Arduino Core
GitHub: ArduinoCore-avr / String.h
https://github.com/...rduino/String.h
· Класс String использует char *buffer для хранения данных.
· Методы reserve(), operator+= и конструкторы вызывают realloc()/malloc() (функции кучи).
// String.h (Arduino Core)
class String {
private:
char *buffer; // Указатель на динамический буфер
unsigned int capacity; // Выделенная память
// ...
public:
String(const char *str = "") {
init();
if (str) copy(str, strlen(str));
}
// ...
};
buffer — это указатель на ю кучу.
То есть глобальная String: объект хранится в DATA/BSS, строка в виде pchar хранится в HEAP и скачет по ней при изменении размера.
Есть способ застолбить под неё увеличенный кусок в HEAP:
str.reserve(100);
В итоге раз глобальная String всё равно использует HEAP преимущества в её глобальности не вижу.
lkosoj
Куратор
Видное
613 676
Отв.3383 19 Авг. 25, 09:11 (через 34 мин)
Частое создание локальной большой строки — худший вариант, который с максимальной вероятностью приведет к падению из-за фрагментации кучи. Поэтому переменная глобальная. Я на этот вопрос отвечал выше. Это не лучшее решение. Но самое простое.
Самое лучшее с точки зрения использования памяти было озвучено ранее - стримить ответ при запросе сервера через короткий буфер.
Но для ESP32 это достаточно дорогое решение с точки зрения нагрузки на ядро. Поэтому как компромисс - глобальная переменная.
Самый надежный способ — использовать глобальный/статический char массив (char buffer[SIZE]). Но это в данном случае не решение.
Самое лучшее с точки зрения использования памяти было озвучено ранее - стримить ответ при запросе сервера через короткий буфер.
Но для ESP32 это достаточно дорогое решение с точки зрения нагрузки на ядро. Поэтому как компромисс - глобальная переменная.
Самый надежный способ — использовать глобальный/статический char массив (char buffer[SIZE]). Но это в данном случае не решение.
ais77
Специалист
Москва
150 180
Отв.3384 19 Авг. 25, 14:11
Частое создание локальной большой строкиlkosoj, 19 Авг. 25, 09:11Мастер, а теоретического образования ради:
что нас заставляет складывать _всё_, что интерфейс из бровзера может запросить, в одну кучу, делая строку хранения очень большой + непредсказуемой?
Ведь, по-сути, передаваемое у нас двух типов:
1) текущие показатели (температуры-скорости-давления) - большое, но вполне прогнозируемое по длине (количество параметров для каждого режима же известно = можно выделить сразу область памяти под хранение)
2) сообщения - потенциально большое или вообще нулевое = того самого неприятно непредсказуемого размера
Не будет профита, если под п.2 выделить в интерфейсе отдельный запрос и выполнять его отдельно и после п.1)?
Размер в памяти непредсказуемости (ака фрагментации) же уменьшится существенно, по логике?
Volume
Научный сотрудник
Уфа
694 377
Отв.3385 19 Авг. 25, 17:01
други, решайте проблемы по мере поступления. Если нет проблемы в виде рестартов из-за крэша памяти - зачем с памятью/кучей разбираться? Там же компилятор рулит, и делает это очень хорошо, иначе бы код "плюсов", где динамическое работа с памятью - основа основ, конструктор-деструктор, постоянно крэшился.
Что касается std::string, то сам объект std::string хранит указатель на начало строки в памяти, а также информацию о её длине и емкости. При глобальном объявлении String ровно это будет "прибито гвоздем" в памяти, сама строка в куче. Если включена SSO, шот стринг оптимизейшн, то еще 16(или 32, платформозависимо) байт будет зарезервировано под короткие строки. Если строка больше 16/32 байт то она будет размещаться в куче
Добавлено через 19мин.:
Что касается std::string, то сам объект std::string хранит указатель на начало строки в памяти, а также информацию о её длине и емкости. При глобальном объявлении String ровно это будет "прибито гвоздем" в памяти, сама строка в куче. Если включена SSO, шот стринг оптимизейшн, то еще 16(или 32, платформозависимо) байт будет зарезервировано под короткие строки. Если строка больше 16/32 байт то она будет размещаться в куче
Добавлено через 19мин.:
стримить ответ при запросе сервера через короткий буфер.Но для ESP32 это достаточно дорогое решение с точки зрения нагрузки на ядроlkosoj, 19 Авг. 25, 09:11да не, для есп это семечки, ресурсов дофига. В нормально написанных библиотеках лимитируется максимальный размер сообщений (и выделяемых под них в библиотеке буферов), дефайнами или заданием через API (обычно порядка 1..4 кб). Если сообщение больше, то вернут "нет памяти". Значит или увеличивай лимиты, или воленс-неволенс дроби сообщение. Хорошие библиотеки, которые "кушают" stream-файлы, сами такое дробление делают при превышении лимитов
lkosoj
Куратор
Видное
613 676
Отв.3386 19 Авг. 25, 17:39 (через 38 мин)
2) сообщения - потенциально большое или вообще нулевое = того самого неприятно непредсказуемого размераais77, 19 Авг. 25, 14:11Его тогда надо передавать отдельным потоком. А ресурсов хоть и до фига, но и процессов крутится разных много. Чем сложнее, тем выше вероятность падения.
други, решайте проблемы по мере поступления.Volume, 19 Авг. 25, 17:01Золотые слова!
Очевидно, других проблем нет?
ais77
Специалист
Москва
150 180
Отв.3387 19 Авг. 25, 18:14 (через 35 мин)
тогда надо передавать отдельным потокомlkosoj, 19 Авг. 25, 17:39Ну, я просто предположил, по незнанию, что раз вебсервер, просыпаясь раз в две секунды на бооольшуууую посылку, ничего (чаще всего, пока сообщения не повалят как в НБК)) не роняет, то, взамен, просыпаться каждую секунду на одну маленькую - может выровнять общий баланс нагрузки... Уж за секунду-то наши копеешные аджаксы точно с гарантией отработают, обадва.
Но нет - так нет, просто вопрос из любознательности же)
Evgsmrt
Студент
Тольятти
14 6
Отв.3388 21 Авг. 25, 19:55
Извините, за назойливость , но у меня получилось прошить 6.25, но никак не получается получить веб интерфейс, пробовал шить с форматированием, пробовал после версии 6,23 с заливаением веб интерфейса, без заливания веб интерфейса, с отключением обновления интерфейса и без отключения , все равно пишет в браузере "no file"
bifurkas
Студент
ННОВГОРОД
19 2
Отв.3389 21 Авг. 25, 22:24
Извините, за назойливость , но у меня получилось прошить 6.25, но никак не получается получить веб интерфейс, пробовал шить с форматированием, пробовал после версии 6,23 с заливаением веб интерфейса, без заливания веб интерфейса, с отключением обновления интерфейса и без отключения , все равно пишет в браузере "no file"Evgsmrt, 21 Авг. 25, 19:55У меня то же не получается последние версии залить веб-интерфейс. С 6.15 проблем нет.
ais77
Специалист
Москва
150 180
Отв.3390 22 Авг. 25, 01:16
но никак не получается получить веб интерфейсEvgsmrt, 21 Авг. 25, 19:55Коллеги, только что проверил - всё шьётся как обычно:

Arduino IDE 1.8.19
версия SDK 2.0.11
с полной (тоже как обычно) заменой libraries и tools
ESP32 LittleFS Data Upload - влёт.
Проверяйте, скрупулёзно, где именно вы отходите от _точного_ выполнения инструкции в доках.
Чудеса случаются, но, по опыту - не на этом этапе)
Kuban
Доктор наук
Краснодар
631 508
Отв.3391 22 Авг. 25, 10:20
Методика проверки подключения Самовара к вашей сети и наличия WEB-интерфейса.
Если вы все сделали правильно при установке версии: установили релиз, установили локально интерфейс (можно отключить обновление интерфейса через интернет, потом включить, когда все будет нормально), подключили Самовар по WiFi к вашей сети и пр., в общем сделали все как документации, а интерфейса не видите, то:
При включении Самовара смотрим на 4-х строчный экран. Если нет экрана, ESP32 подключаем к компьютеру через USB и смотрим в мониторе порта Arduino IDE.
Будут появляться строки
Samovar started . . .
Connected to WiFi . . .
IP address: 192.168.2.100 (у вас будет другой адрес).
Если вы это увидели – все нормально, Самовар подключился к вашей сети и ему присвоен адрес 192.168.2.100.
Открываем браузер на компьютере/ноуте/смартфоне и проверяем действительно ли именно по этому адресу вы обращаетесь к Самовару.
Если не настроена привязка IP адреса к определенному устройству на роутере, то он может каждый раз присваивать другой IP адрес Самовару.
Проверяем в адресной строке, чтобы перед адресом Самовара было http:// , а не https:// . Символ «s” нужно стереть.
Если,
Connected to WiFi . . . видим долго, а затем появился IP address: 192.168.4.1
значит Самовар не смог подключиться к вашей WiFi сети и следует вновь выполнить настройку подключения Самовара к вашей WiFi сети.
Есть еще способ убедиться, что Самовар установлен корректно.
Если Самовар не может подключиться к вашей сети и вы увидели IP address: 192.168.4.1 подождите 3-4 минуты, отсканируйте смартфоном окружение на наличие WiFi сетей. Найдите сеть Samovar и подключитесь к ней. Пароль доступа SamApp123.
Откройте на смартфоне браузер (если он был открыт – закройте и откройте вновь).
Введите в адресной строке http:// 192.168.4.1 и вы должны увидеть интерфейс вашего Самовара.
Если вы все сделали правильно при установке версии: установили релиз, установили локально интерфейс (можно отключить обновление интерфейса через интернет, потом включить, когда все будет нормально), подключили Самовар по WiFi к вашей сети и пр., в общем сделали все как документации, а интерфейса не видите, то:
При включении Самовара смотрим на 4-х строчный экран. Если нет экрана, ESP32 подключаем к компьютеру через USB и смотрим в мониторе порта Arduino IDE.
Будут появляться строки
Samovar started . . .
Connected to WiFi . . .
IP address: 192.168.2.100 (у вас будет другой адрес).
Если вы это увидели – все нормально, Самовар подключился к вашей сети и ему присвоен адрес 192.168.2.100.
Открываем браузер на компьютере/ноуте/смартфоне и проверяем действительно ли именно по этому адресу вы обращаетесь к Самовару.
Если не настроена привязка IP адреса к определенному устройству на роутере, то он может каждый раз присваивать другой IP адрес Самовару.
Проверяем в адресной строке, чтобы перед адресом Самовара было http:// , а не https:// . Символ «s” нужно стереть.
Если,
Connected to WiFi . . . видим долго, а затем появился IP address: 192.168.4.1
значит Самовар не смог подключиться к вашей WiFi сети и следует вновь выполнить настройку подключения Самовара к вашей WiFi сети.
Есть еще способ убедиться, что Самовар установлен корректно.
Если Самовар не может подключиться к вашей сети и вы увидели IP address: 192.168.4.1 подождите 3-4 минуты, отсканируйте смартфоном окружение на наличие WiFi сетей. Найдите сеть Samovar и подключитесь к ней. Пароль доступа SamApp123.
Откройте на смартфоне браузер (если он был открыт – закройте и откройте вновь).
Введите в адресной строке http:// 192.168.4.1 и вы должны увидеть интерфейс вашего Самовара.
ais77
Специалист
Москва
150 180
Отв.3392 22 Авг. 25, 12:27
Не, там явно проблема не в подключении, а с наличием файлов в ожидаемых Самоваром местах (той же разметкой ФС из-за каких-то упущенностей с IDE/SDK/tools, вангую).
Если бы подключения не было - никто бы не ответил "no file", т.е. и коннект, и сервер явно работают..
Ещё мудрый Винни-Пух говаривал:
"— Что-то здесь не так. Кто-то там все-таки есть! Кто-то же должен был сказать «совсем никого»!"
))
Если бы подключения не было - никто бы не ответил "no file", т.е. и коннект, и сервер явно работают..
Ещё мудрый Винни-Пух говаривал:
"— Что-то здесь не так. Кто-то там все-таки есть! Кто-то же должен был сказать «совсем никого»!"
))
Kuban
Доктор наук
Краснодар
631 508
Отв.3393 22 Авг. 25, 14:32
Я предложил методику как в целом проверить что интерфейс есть. При условии что сделано все правильно, ESP живая, а скетч не болен).
той же разметкой ФС из-за каких-то упущенностей с IDE/SDK/toolsais77, 22 Авг. 25, 12:27А если включить обновление через интернет и подождать минут 20, может Самовар сам положит недостающие файлы куда нужно?
dranek
Доктор наук
Минск
538 499
Отв.3394 22 Авг. 25, 23:21
Evgsmrt, bifurkas, это вот как раз
Выяснилось что в таблице разделов не хватало буквы s в конце названия последнего раздела spiff. Возможно я случайно выложил не тот файл, из предыдущих экспериментов. Вот правильный partitions.zipс предыдущей страницы. Не правильное название раздела он и не монтируется с вытекающими. Можно просто удалить partations.csv перед загрузкой в Arduino IDE скетча.
ais77
Специалист
Москва
150 180
Отв.3395 23 Авг. 25, 12:32
Не правильное название раздела он и не монтируетсяdranek, 22 Авг. 25, 23:21У меня ж монтируется - при тех же самых прочих вводных?
dranek
Доктор наук
Минск
538 499
Отв.3396 23 Авг. 25, 13:59
при тех же самых прочих вводныхais77, 23 Авг. 25, 12:32При всех-всех? Там точно Arduino IDE 1.8.19?
11.08 я наблюдал при компиляции на Arduino IDE 2.3.6 "no file" или 404, разобрался с проблемой и поделился решением.
ais77
Специалист
Москва
150 180
Отв.3397 23 Авг. 25, 14:09 (через 10 мин)
Там точно Arduino IDE 1.8.19dranek, 23 Авг. 25, 13:59Про то и спич же: если делать точно по инструкции без шаловливости ручонок - всё шьётся на ура.
А личные фантазии - штука небесплатная, они за свой счёт)
Evgsmrt
Студент
Тольятти
14 6
Отв.3398 23 Авг. 25, 14:55 (через 47 мин)
с предыдущей страницы. Не правильное название раздела он и не монтируется с вытекающими. Можно просто удалить partations.csv перед загрузкой в Arduino IDE скетча.dranek, 22 Авг. 25, 23:21Спасибо Дранек, помогло! Удалил этот файл у вуаля!
Про то и спич же: если делать точно по инструкции без шаловливости ручонок - всё шьётся на ура.Странно что версии 6.23 и ниже до 6.20 шились без проблем, возможно у меня какая то другая esp
А личные фантазии - штука небесплатная, они за свой счёт)ais77, 23 Авг. 25, 14:09
версии в норме
сообщение удалено
Toljnuch
Бакалавр
Сочи
77
Отв.3399 23 Авг. 25, 22:10
Добрый вечер. Загрузил последнюю версию самовара. Роутер видит что esp подключена. У меня белый экран и надпись Not found, в разных браузерах. Подскажите Что не так?


