ЗИМНЯЯ ВСТРЕЧА 26
Форум самогонщиков Сайт Барахолка Магазин ЗИМНЯЯ ВСТРЕЧА 26

Автоматика Самовар

Форум самогонщиков Вопросы по электр(он)ике
1 ... 167 168 169 170 171 172 173 ... 181 170
Evgsmrt Студент Тольятти 14 6
Отв.3380  15 Авг. 25, 21:02
Возникла ошибка при загрузке 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.
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\
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() (функции кучи).


// 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]). Но это в данном случае не решение.
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мин.:

стримить ответ при запросе сервера через короткий буфер.Но для 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
Коллеги, только что проверил - всё шьётся как обычно:
Снимок экрана в 2025-08-22 01-06-44.png
Снимок экрана в 2025-08-22 01-06-44. Автоматика Самовар. Вопросы по электр(он)ике.


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 и вы должны увидеть интерфейс вашего Самовара.
ais77 Специалист Москва 150 180
Отв.3392  22 Авг. 25, 12:27
Не, там явно проблема не в подключении, а с наличием файлов в ожидаемых Самоваром местах (той же разметкой ФС из-за каких-то упущенностей с IDE/SDK/tools, вангую).
Если бы подключения не было - никто бы не ответил "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
Спасибо Дранек, помогло! Удалил этот файл у вуаля!
Про то и спич же: если делать точно по инструкции без шаловливости ручонок - всё шьётся на ура.
А личные фантазии - штука небесплатная, они за свой счёт)ais77, 23 Авг. 25, 14:09
Странно что версии 6.23 и ниже до 6.20 шились без проблем, возможно у меня какая то другая esp
версии в норме
photo_2025-08-23_15-54-18 (2).jpg
photo_2025-08-23_15-54-18 (2).jpg Автоматика Самовар. Вопросы по электр(он)ике.
photo_2025-08-23_15-54-18.jpg
photo_2025-08-23_15-54-18.jpg Автоматика Самовар. Вопросы по электр(он)ике.
сообщение удалено
Toljnuch Бакалавр Сочи 77
Отв.3399  23 Авг. 25, 22:10
Добрый вечер. Загрузил последнюю версию самовара. Роутер видит что esp подключена. У меня белый экран и надпись Not found, в разных браузерах. Подскажите Что не так?