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

Автоматика с веб управлением на основе esp32 и pzem

Форум самогонщиков Автоматика
1 ... 36 37 38 39 40 41 42 ... 48 39
serjrv Магистр Камышин 297 132
Отв.760  16 Дек. 21, 22:12
А разработчик то данного проекта появляется в данной ветке?
Вот к примеру один из глюков с инициализацией WiFi, рассмотрим только последнюю версию.

Если выбрать свою сеть, но ввести "левый" пароль (или не ввести), модуль вечно будет по WiFi недоступен, т.к. роутер вроде увидели, но дальнейшее подключение пущено на самотек. В итоге ни AP не подняли, ни к роутеру прицепиться не смогли. В самой либе ESP`шки, автор напрямую лезет к структуре, т.е. внутрь класса WiFi, но не контролирует длину строки SSID и пароля. А при этом если произойдет переполнение по длине заданных переменных, произойдет х.з. что в самой низкоуровневой части программы коннекта к роутеру и поднятия IP стека (в SDK данная часть кода к сожалению закрыта). Скорее всего именно из за этого и вечные перезагрузки модуля у некоторых.

p.s. Если автор проекта все еще посещает данную тему, стукнись в личку, может что и подскажу дельного.

p.p.s. Мне самому проект не интересен для повторения или доработок, есть свои наработки по данной теме, ну и рулёжка силовухой в данном варианте меня точно не устраивает. Просто отслеживаю практически все проекты автоматизации, чтобы быть так скажем всегда в теме. Помочь в этом плане, или поделиться знаниями/наработками мне не влом (ну только что от разжёвывания своих коммерческих проектов воздержусь Улыбающийся ).
sechevoy Специалист Запорожье 148 26
Отв.761  16 Дек. 21, 22:46, через 34 мин
Не плодите сущности без необходимости. Проблема в поднятии точки доступа, а не в подключении к роутеру. В проекте точка доступа без пароля. Поэтому всё, что Вы описали к проблеме не относится. Не знаю как в этой автоматике, но я в других проектах использую билиотеку Wi-Fi manager, которая как раз отвечает за поднятие точки доступа, сканирования wi-fi сетей и сохранении SSID/PASSWORD в память. Глюк происходит до поднятия точки доступа. Что скажете по поводу лога из сериалпорта?
В логе ошибка происходит после строки
I (476) cpu_start: Pro cpu start user code
serjrv Магистр Камышин 297 132
Отв.762  16 Дек. 21, 23:27, через 42 мин
sechevoy, У тебя с чтением текста проблемы? Если ПАРОЛЬ к роутеру не верен, не будет и точки доступа поднято, просто железка будет в ауте...
Трахайтесь в общем то дальше тогда сами.
sechevoy Специалист Запорожье 148 26
Отв.763  16 Дек. 21, 23:39, через 12 мин
Новая железка после первой прошивки знает какую-то сеть wi-fi?
serjrv Магистр Камышин 297 132
Отв.764  17 Дек. 21, 00:11, через 33 мин
Новая железка после первой прошивки знает какую-то сеть wi-fi?sechevoy, 16 Дек. 21, 23:39
Для тех кто в танке...
При первом подключении, ESP`шка не знает название домашней сетки (SSID), соответственно и подключиться к ней не пытается, а просто поднимает точку доступа (AP). А вот если название/имя (SSID) (я хер его знает как доступно объяснять народу, кому ОКЕЙ ГУГЛ недоступен...) ПРИСУТСТВУЕТ уже в памяти контроллера, а ее вы нихрена не стираете при пере прошивке, контроллер и пытается подрубиться к домашней сетке, и совершенно насрать что парольик не тот или пуст. Контроллер думает, если уж пользователь задал что то, и тем более SSID сошлось, значит и паролик к сетке берем не задумываясь (который кстати разработчик бездумно и бесконтрольно сразу во внутреннюю структуру класса прописывает). Вот именно от этого у вас проблемы... Ну и если не только последние сообщения читаешь, мог бы и увидеть/прочитать, почему прошивка посредством самой среды в большинстве случае работает, а прошивая ВСЕГО 4 выложенных файлика - ни черта.

Надеюсь сейчас доступно?

p.s. Однозначно последняя подсказка, задолбало такое общение с гордыми, но не компетентными орлами...
sechevoy Специалист Запорожье 148 26
Отв.765  17 Дек. 21, 00:57, через 47 мин
Но по логике библиотеки после нескольких неудачных попыток подключения к "старой" сети еспэшка должна подымать точку доступа. Судя по логам она не пытается подключиться к wi-fi сети.
Очень жаль, что топикстартер давно не появляется в ветке.
Коллеги, попробуйте скомпилировать бинарники по совету serjrv. Поможет, поблагодарим от души, не поможет, будем копать дальше.
gol_avto Доктор наук Москва - Серпухов - Анапа 808 277
Отв.766  17 Дек. 21, 06:08
p.s. Попробуй все же файлик "hd_wifi.c" из 71 версии заменить в 74.serjrv, 15 Дек. 21, 20:53
Где ж его взять то? Архива на Гитхабе старой версии нет, у меня тоже. Так что менять нечем.
========
Ещё раз попробовал и 071 и 074 версии прошить бинарниками с последующим выкл/вкл Wi-Fi на ноуте - увы фокус не удался. Ноут ESP не увидел. Через среду всё восстановилось.
Так что у всех фломастеры разные, у кого то 071 работает, а 074 - нет. У меня обе мертвые через бинарники.
Браузер Chrome - версия 96.0.4664.110 (Официальная сборка), (64 бит)
P.S. бедная ESP-шка, уже изнасиловал её перепрошивками.
сообщение удалено
Volume Кандидат наук Уфа 319 191
Отв.767  17 Дек. 21, 10:40
Если выбрать свою сеть, но ввести "левый" пароль (или не ввести), модуль вечно будет по WiFi недоступенserjrv, 16 Дек. 21, 22:12
если добавлять проверки везде где пользователь может накосячить, код как минимум удвоится.
В коммерческих проектах это маст хэв, но в некоммерческих , как в этом, резоны совершенно иные - минимизировать свои трудозатраты. Автор и так массу времени на проект потратил, просто чтоб запускался и работал, поэтому к нему никаких вопросов.
Развитие проекта - дело коллективное. У меня как будет свободное время - попробую разобраться. Пока занят другим проектом
сообщение удалено
serjrv Магистр Камышин 297 132
Отв.768  17 Дек. 21, 12:59
Volume, Там делов на 5 минут, у меня просто среда не установлена НУЖНЫМ для проверки способом (уже писал об этом).
Но чтобы тебе долго не ковырять:
В файле hd_wifi.c в последней функции wifiSetup(), надо полностью переписать код инициализации WiFi

Основные косяки вот:
if (!WIFI_knowApCount) {
// Нет заданных точек доступа - переходим в режим AP
... }

Т.е. точку доступа ESP`шка поднимет ТОЛЬКО если наш роутер ни разу не прописан, или его не увидели.

Далее:
else {
...
strlcpy((char*) wifi_config.sta.ssid, w->ssid, sizeof(wifi_config.sta.ssid));
if (strlen(w->password)) strncpy((char*) wifi_config.sta.password, w->password, sizeof(wifi_config.sta.password));
...
}

Вот именно здесь надо проверять не только на пустой пароль, но и на его максимальную длину и допустимость символов (т.е. любой символ в пароле > 0x20 && < 0x80). SSID кстати тоже не повредит проверить аналогичным образом, вдруг это первая прошивка с "кашей" в памяти. Именно из за бардака в этом месте кода, у народа и вечные перезагрузки, и прочие глюки.

Далее надо завести таймер секунд на 20 - 30, и если за это время не смогли подключиться к домашней WiFi, идем поднимать свою точку доступа (AP).

p.s. Вот кстати у кого точка доступа не появляется, могли бы у себя так проверить: выключить из розетки свой роутер, а затем уже подать питание на ESP`шку. Поднимется точка доступа в этом случае? Если да, то я прав на 100%, если не поднимется AP, значит есть и еще косяки в коде. Просто глянув чутка внимательнее, видно что у автора просто куски кода из разных проектов надерганы и адаптированы к данной прошивке (уж слишком сильно различается стиль написания в разных кусках кода).
sechevoy Специалист Запорожье 148 26
Отв.769  17 Дек. 21, 16:08
Переименовал свой SSID на роутере и включил еспэшку, ребуты повторились.
serjrv Магистр Камышин 297 132
Отв.770  17 Дек. 21, 16:49, через 41 мин
sechevoy, Ну так выложи сюда свой лог загрузки, чтобы было видно в какой момент (на каком шаге загрузки) у тебя сбой происходит. Посмотреть лог загрузки можно к примеру монитором порта среды Arduino, скорость 115200.
К примеру если не выводит как минимум это:
Скрытый текстrst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:5736
load:0x40078000,len:14452
load:0x40080400,len:3864
entry 0x4008065c
I (415) cpu_start: Pro cpu up.
I (415) cpu_start: Application information:
I (415) cpu_start: Project name: esp32_hd
I (417) cpu_start: App version: c725aad-dirty
I (423) cpu_start: Compile time: Apr 12 2020 16:43:47
I (429) cpu_start: ELF file SHA256: 0afc069ca9a60c29...
I (435) cpu_start: ESP-IDF: v4.2-dev-414-g132cc67c0
I (441) cpu_start: Single core mode
I (445) heap_init: Initializing. RAM available for dynamic allocation:
I (452) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (458) heap_init: At 3FFBA308 len 00025CF8 (151 KiB): DRAM
I (465) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM
I (471) heap_init: At 40078000 len 00008000 (32 KiB): IRAM
I (477) heap_init: At 40097CB4 len 0000834C (32 KiB): IRAM
I (483) cpu_start: Pro cpu start user code
I (501) spi_flash: detected chip: gd
I (502) spi_flash: flash io: dio
I (502) cpu_start: Starting scheduler on PRO CPU.
I (517) hd_esp32: RAM left 267032
I2C installed
>> i2cScanner 0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
I (556) hd_esp32: Initializing SPIFFS
I (578) hd_esp32: Reset reason: Vbat power on reset

то виноват даже не wifi, а просто видимо криво прошиваешь.
Volume Кандидат наук Уфа 319 191
Отв.771  17 Дек. 21, 17:38, через 50 мин
Основные косяки вот:serjrv, 17 Дек. 21, 12:59
думаю дело не в коде, а в технологии прошивки. Как тут уже сообщали - при прошивке пайтоновской утилитой esp-шной среды проблем не возникает. При ровно том же коде исходника.
Просто лично я всегда из среды программирования шью, поэтому граблю с прошивкой бинарниками ни разу не видел. Чтоб разобраться, надо разницу искать между прошивкой бинарника утилиткой и прошивкой из idf-ной среды
serjrv Магистр Камышин 297 132
Отв.772  17 Дек. 21, 18:33, через 56 мин
думаю дело не в коде, а в технологии прошивки.Volume, 17 Дек. 21, 17:38
Код тоже надо править, иначе при правильном SSID, НО неверном пароле, AP не поднимется.
В принципе я могу скомпоновать прошивку и выложить архив с "выдернутой" прошивалкой из Platform IO с насадкой ESP-IDF. Правда у меня конкретно под винду, на яблоке или линухе не заведется. Ну было бы неплохо если бы файлик boot_app0.bin (или как он у вас обзывается я не знаю) тоже кто то выдернул и выложил (выше что и как я писал). В итоге просто надо будет распаковать архив и просто запустить programm.cmd, далее выбрать COM порт из доступных и все (без выеживания с утилитой flash_download_tool).

Добавил утилитку для прошивки 74-й версии, пробуйте.
- распаковываем архив
- подключаем модуль ESP по USB к компу
- запускаем файлик programm.cmd
- выбираем 2-й пункт для полного предварительного стирания памяти ESP`шки
- выбираем свой номер COM порта
- ждем пока не напишет: "Для продолжения нажмите любую клавишу..."
- перегружаем модуль и проверяем
_bin_074.zip 4.0 Мб
sechevoy Специалист Запорожье 148 26
Отв.773  17 Дек. 21, 22:00
К сожалению результат тот же. Ниже прилагаю лог из сериал порта.
log.txt 2.4 Кб
Volume Кандидат наук Уфа 319 191
Отв.774  18 Дек. 21, 11:13
попробовал прошить утилиткой - все прошилось, все работает. Что делал:
1. скачал последнюю версию прошивальщика с https://www.espressif.com/en/support/download/other-tools
2. скачал архив 074 из [сообщение #13879601]
3. указал в прошивальщике 3 первых файла в соответствии с инструкцией ТС (образ spiff не шил - приложение при старте само отформатирует файловую систему)
4. ткнул "Start", дождался "Finish". Нажал "Stop", после чего закрыл приложение прошивальщика
5. выдернул шнурок USB, воткнул обратно (типа - рестарт espшки).

Запустил putty на COM-порт esp32, вижу лог нормального старта. Посмотрел в ноуте доступные WiFi точки - вижу точку hd_esp32

Сравниваю свой лог старта с логом sechevoy, вижу различия:
1я строчка, у меня
ets Jun 8 2016 00:22:57 (ets Jul 29 2019 12:21:46)
6я строчка
mode:DIO, clock div:2 (mode:DIO, clock div:1)
Вот этих строк у меня нет:
E (29) esp_image: image at 0x110000 has invalid magic byte
E (29) boot: OTA app partition slot 0 is not bootable
serjrv Магистр Камышин 297 132
Отв.775  18 Дек. 21, 12:03, через 50 мин
mode:DIO, clock div:2 (mode:DIO, clock div:1)Volume, 18 Дек. 21, 11:13
Это только от установленной микросхемки флеша зависит, div:1 это просто максимальная скорость по шине SPI. У меня кстати тоже данный делитель равен единичке.
Вот этих строк у меня нет:
E (29) esp_image: image at 0x110000 has invalid magic byte
E (29) boot: OTA app partition slot 0 is not bootableVolume, 18 Дек. 21, 11:13
А это уже ругань идет...

Кстати у sechevoy, такое впечатление что на инициализации I2C все стопориться и перегружается.

Немного переделал прошивальщик, убрал заливку spiffs, все равно образ бардачный...
_bin_074_2.zip

Ну и ложка дегтя, когда рухнет сервак обновлений, откуда первоначально нужные файлики подтягиваются, у народа опять проблемы нарисуются.
gol_avto Доктор наук Москва - Серпухов - Анапа 808 277
Отв.776  18 Дек. 21, 12:40, через 38 мин
1. скачал последнюю версию прошивальщика с https://www.espressif.com/en/support/download/other-tools
2. скачал архив 074 из [сообщение #13879601]
3. указал в прошивальщике 3 первых файла в соответствии с инструкцией ТС (образ spiff не шил - приложение при старте само отформатирует файловую систему)
4. ткнул "Start", дождался "Finish". Нажал "Stop", после чего закрыл приложение прошивальщика
5. выдернул шнурок USB, воткнул обратно (типа - рестарт espшки).Volume, 18 Дек. 21, 11:13
Проделал тоже самое, смотрю в ноуте доступные WiFi точки - НЕ вижу точку hd_esp32
=============
Перепрошил ещё 3 раза, точки нет, подождал дольше (больше минуты) - точка появилась. Прошивал также 3 файла
2021-12-18_12-58-44.png
2021-12-18_12-58-44.png Автоматика с веб управлением на основе esp32 и pzem. Автоматика.
2021-12-18_13-03-36.png
2021-12-18_13-03-36.png Автоматика с веб управлением на основе esp32 и pzem. Автоматика.
serjrv Магистр Камышин 297 132
Отв.777  18 Дек. 21, 13:07, через 28 мин
gol_avto, попробуй прошиться просто последний выложенный мной архив "_bin_074_2.zip", именно запустив programm.cmd после распаковки архива.
sechevoy Специалист Запорожье 148 26
Отв.778  18 Дек. 21, 13:24, через 18 мин
Ничего не помогло.
Откатился на 0.7.1
Подскажите, что было исправлено в 0.7.4 в сравнении с 0.7.1? Интересно знать, что я теряю.
Остаётся ждать автора прошивки (((.
log.txt 2.3 Кб
serjrv Магистр Камышин 297 132
Отв.779  18 Дек. 21, 13:59, через 35 мин
sechevoy, К самому модулю что то подключено из внешних устройств (датчик давления, датчики температуры, дисплей)?