Resident
Content-Type точно правильный ?
Vlad
Твоя любимая нейросетка
нихера не работает это поделие нейросетей :) да я и не удивлен уже
Vlad
❌ Почему не работает chunked POST Библиотека HTTPClient не поддерживает полноценно чанкованную передачу данных. Метод sendRequest() можно использовать, но только если вы полностью формируете запрос самостоятельно, без вызова http.POST(). Также, даже если вы попытаетесь это сделать, не все серверы поддерживают чанковую передачу POST-данных, особенно PHP-скрипты по умолчанию. —————- но Qwen, походу, и быстрее и поумнее Дипсика
Vlad
Всё ещё не дошло что нейро тут тебя только запутают
да я сразу это понимал, пожтому и писал низкоуровнево, сам текстом запросы формирую. но вот что-то криво пока
Resident
Мой вариант пробовал?
Vlad
Результат: если заголовок пихать в коде Ардуино: http.addHeader("Transfer-Encoding", "chunked"); то мой сервер перестает подключаться разрешать :) короче, как я понял, чтобы сервак _автоматически_ чанки собирал для PHP - надо nginx настраивать обязательно. а счас скриптом НЕавтоматически - собирать чанки - таки возможно, своим PHP кодом, с дефолтными настройками. так что и успокоюсь, API все равно своё PHP-шное
Evgeniy
Это библиотеки из ардуино?
Vlad
да, но это код непосредственно с потоком, текстовое формирование запросов
Evgeniy
Интересно, где такие проблемы возникли - IDF?
Vlad
Интересно, где такие проблемы возникли - IDF?
нет, но это с дефолтным PHP 8.4 сервером. вот кстати, если бы найти РАБОЧИЙ ХОТЬ КАК-ТО ардуиновый код с PHP-сервером - это было бы вариантом минимально-рабочим. но я пока не нашел
Evgeniy
Находил такую инфу: esp_http_client_open(client, -1); When you open with a write_len of -1, it will set the "Transfer-Encoding" header to "chunked" automatically. It will also force the http method to POST. (see http_client_prepare_first_line() in the source code https://github.com/espressif/esp-idf/bl ... p_client.c)
Evgeniy
Возможно в этом и решение.
Vlad
Возможно в этом и решение.
спасибо, ща попробую. но подозреваю, что без настроек сервера - тоже не поможет
Anton
опа, продолжение моего бага подъехало: https://github.com/espressif/esp-idf/issues/7045
ㅤ
да
Да, я тоже парочку заказал, исключительно ради c5. Че-то пока не пришли. Ибо c5 отдельно в продаже не нашел
ㅤ
I3C прикольно
Живьем видел девайсы? Мне пока что не попадались
Resident
Живьем видел девайсы? Мне пока что не попадались
Я спеку почитал, тоже пока не видел Ну и интернет говорит, что встречается в мед оборудовании и в системах аи вождения
Vlad
опа, продолжение моего бага подъехало: https://github.com/espressif/esp-idf/issues/7045
а я продолжаю наблюдать свой контроллер боевой esp32, нифига трое суток не предел работы с https до ребута внезапного, и более может работать, но все равно ребутится, хоть стэк и память не меняются в логах
Vlad
Core panic ловишь?
хз, удалённый контроллер, но ребутится по Собаке. исходная причина тоже уже понятна - торможения сервера когда начинаются. раньше в коде таймаут стоял 5 секунд - буталось гораздо чаще. счас поставил 8 сек - уже реже
Vlad
опа, продолжение моего бага подъехало: https://github.com/espressif/esp-idf/issues/7045
ога, переоткрыли, мож таки докопаюццо и чего-нить поправят
Anton
ога, переоткрыли, мож таки докопаюццо и чего-нить поправят
я в своё время покопался, но там дебри mbedtls начались и я бросил. что смог отрепортил. вот, смотрю там очередной заход пошёл. я как понял, там закавыка с надёжностью канала в момент установления секурного соединения. обошёл я это ручными таймаутами на повторяющийся EAGAIN с переоткрытием соединения
Сергей
Ну вообще странно, что работало и вдруг перестало работать... Без видимых причин. Может соплей где-то при пайке нагнал?
если интересно проблема аппаратная оказалась, взял другую такую же и все ок. Вайфай 6 вроде работает, но 5 ггц поднять не сумел, ток к 2.4 смогу коннект сделать
Vlad
если интересно проблема аппаратная оказалась, взял другую такую же и все ок. Вайфай 6 вроде работает, но 5 ггц поднять не сумел, ток к 2.4 смогу коннект сделать
у меня тоже есть одна платка 30-пин esp32 - в которую всё компиляется, и работает, но пара каких-то ног - не реагируют вообще на сигналы
Сергей
а i3c это не странный мем разве? только увидел и охринел немного, реально такое задумали?
Vlad
Любопытно - помогло ли?
не смог я попробовать :) тупой ардуинщик :)
Evgeniy
Там вроде доступны эти же функции
Vlad
ну там же не просто активировать настройку приходится (типа что-то включить\выключить в idf), а все объекты для http другие
Сергей
Что?
ну типо i2c. только революция и называется i3c лучше моложе там умнее сильнее
ㅤ
ну типо i2c. только революция и называется i3c лучше моложе там умнее сильнее
Ну есть такой интерфейс. Не понимаю чего вызывает вопросы?
Vlad
Каких
не помню уже, помню, что там было много навешано датчиков, штук 7 разных, и аналоговых, и i2c, и spi, и 1wire. и я долбался что часть не работала. пока не перепаял всю мотню на другую платку
Anton
esp_http_client_config_t config = { .url = url, // .method = HTTP_METHOD_POST, // .event_handler = _http_collect_data_handle, // .user_data = &ret->body, // .timeout_ms = 10000, // .is_async = false, // .disable_auto_redirect = true, // }; esp_http_client_handle_t client = esp_http_client_init(&config); esp_http_client_set_header(client, "Content-Type", "application/x-www-form-urlencoded"); esp_http_client_set_post_field(client, post_data->data, str_length(post_data)); esp_err_t err = esp_http_client_perform(client);
Vlad
там всё просто. примеры есть
мне надо просто начинать всё с установки esp-idf :) пока ленюсь
Anton
мне надо просто начинать всё с установки esp-idf :) пока ленюсь
я однажды пробовал ардуино компонетом к есп-идф приделывать. версии не совпадали, но я запинал :) эксперимент успешно работал — можно было компилировать ардуинские проекты и при этом иметь основным есп-идф.
Vlad
я однажды пробовал ардуино компонетом к есп-идф приделывать. версии не совпадали, но я запинал :) эксперимент успешно работал — можно было компилировать ардуинские проекты и при этом иметь основным есп-идф.
ну а мне-то приходится наоборот шаманить :) но главное - видно что тут все тоже самое делается на стороне клиента. а сервак-то не меняется. а в нём и суть. если сервак отдает 400 в ответ на http.addHeader("Transfer-Encoding", "chunked"); это как бЭ намекает...
Vlad
хмм, а какую еще ерунду можно слать, если сервак отказывается чанки хавать в текущем состоянии
Anton
я вчера свои сорцы пошерстил, помню, что делал чанкед сам и даже на ардуино-фв сколько-то лет назад. не нашёл...
Anton
я по итогу на есп-идф полностью перешёл. даже драйвера под рфид-ридер свои написал вместо ардуиновских
Vlad
суть в том, что упор сделан на дешевые shared-хостинги (со стандартным php & maria db), на которых быстро разворачивается копия проекта кода & api. один такой хост - одна небольшая группа датчиков. проект отлажен, масштабирован - ну, не до переписывания всего с нуля. поэтому вот рамки ограничений таковы.
Evgeniy
Такие хостинги зачастую имеют ограничения по настройкам, рассчитаны на сайтики, на питоне backend гибче будет
Vlad
т.е. приходится плясать в означенных рамках. но к датчикам потихоньку требования растут, данные частотного анализа - большие. можно и контроллеры брать с PSRAM, и VDS-серваки плодить и башлять за них почем зря, пока нормально не продашь проект...
Vlad
Такие хостинги зачастую имеют ограничения по настройкам, рассчитаны на сайтики, на питоне backend гибче будет
именно ! в точку. Поэтому и проблемы с кастомными настройками. Но быстро, дешево и сердито. Пока не заключишь договор на большой проект с датчиками, где можно сервак купить нормальный.
ᅠDin
Привет. Помогите пожалуйста, купил esp32s3, припаял к адаптеру, подтянул ресет и гпи0 и ен к 3.3в. Плата прошивается, но он не "запускается" и как я понял он в бутлупе, постоянно выводит эти данные. Загуглив ошибку, на иностранных форумах нашел похожие проблемы, но как починить это я так и не понял. Может вы можете подсказать?
ᅠDin
ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x3 (RTC_SW_SYS_RST),boot:0x8 (SPI_FAST_FLASH_BOOT) Saved PC:0x40376a62 SPIWP:0xee mode:DIO, clock div:1 load:0x3fce2820,len:0x118c load:0x403c8700,len:0x4 load:0x403c8704,len:0xc20 load:0x403cb700,len:0x30e0 entry 0x403c88b8 ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x3 (RTC_SW_SYS_RST),boot:0x8 (SPI_FAST_FLASH_BOOT) Saved PC:0x40376a62 SPIWP:0xee mode:DIO, clock div:1 load:0x3fce2820,len:0x118c load:0x403c8700,len:0x4 load:0x403c8704,len:0xc20 load:0x403cb700,len:0x30e0 entry 0x403c88b8
Resident
с какого блока записывал ?
ᅠDin
А что записываешь туда и чем?
В начале хотел еспхоум, он нормально прошивается, но к вай фай не подключается. Сейчас пробую залить через Ардуино Иде, он так же успешно прошивается, но в выводе порта выдает что я скинул. Единственное, почитав форумы, я выбрал в флешмод и psram - OPI, и загрузил миналку светодиодом. Он работает, но как то странно и в выводе порта выдает также теже данные постоянно. Прошиваю с помощью Arduino nano. Есть ещё usb ttl (ch340) но он что-то ничего не прошивает
Vlad
а на вордпрессе дешевле :)
нет, это одно и тоже же, с точки зр. сервера. в сервере же суть, а мк просто клиент, НЕ ЛЮБЫЕ запросы которых НЕ любой сервак готов хавать
Vlad
ничо не понял. корректность мк-клиента достаточна для любого нормального сервера
но если в shared-хостинге настройки сервера - не доступны, и при этом у nginx отключена опция chunked - то PHP не получит в $_POST собранный chunked-пакет. ну и всё тут, тупичогс
Anton
давай по порядку. откуда вообще взялся чанкед?
Vlad
давай по порядку. откуда вообще взялся чанкед?
1) я сделал fft на esp32 и нужно отправлять результат на shared-хостинг PHP (глубинные настройки сервера т.е. недоступны). 2) ограниченный объем данных (после анализа полного спектра) обычным POST - уходит счас на сервер ОК (PHP api свой самописный). 3) но счас думаю про отправку полного спектра частотного анализа, RAM не хватает у обычных esp32 без extra PSRAM. Колобок подкинул идею про chunked.
Evgeniy
Вот не понятно: в приёме POST запроса чтение делается порциями заданного размера. Почему нельзя при отправке POST сделать также, собирая JSON на лету и даже без Chunked?
Evgeniy
@testtest133 что думаешь?
Vlad
Вот не понятно: в приёме POST запроса чтение делается порциями заданного размера. Почему нельзя при отправке POST сделать также, собирая JSON на лету и даже без Chunked?
потому, что нужно все данные из ОДНОГО запроса поместить в одну запись в БД, в конкретный момент времени, там много разных полей
Evgeniy
потому, что нужно все данные из ОДНОГО запроса поместить в одну запись в БД, в конкретный момент времени, там много разных полей
В этом примере приём POST погляди как сделан. Вопрос - почему нельзя также сделать отправку. Это же на уровень ниже. Генерацию массива JSON по частям можно написать самому https://github.com/Jeija/esp32-softap-ota/blob/master/main/main.c
Vlad
бл... вот смотрите чо сервак счас выдает в ответ на chunked curl, в открытом виде кидаю, это результат от php-скриптика моего приемного: c:\!>curl -v -X POST https://pmaker.ru/post_big.php -H "Transfer-Encoding: chunked" -H "Content-Type: application/x-www-form-urlencoded" -d "3\r\nfoo\r\n3\r\nbar\r\n0\r\n\r\n" Note: Unnecessary use of -X or --request, POST is already inferred. * Host pmaker.ru:443 was resolved. * IPv6: (none) * IPv4: 31.41.40.19 * Trying 31.41.40.19:443... * schannel: disabled automatic use of client certificate * ALPN: curl offers http/1.1 * ALPN: server accepted http/1.1 * Connected to pmaker.ru (31.41.40.19) port 443 * using HTTP/1.x > POST /post_big.php HTTP/1.1 > Host: pmaker.ru > User-Agent: curl/8.13.0 > Accept: */* > Transfer-Encoding: chunked > Content-Type: application/x-www-form-urlencoded > * upload completely sent off: 44 bytes < HTTP/1.1 200 OK < Server: nginx/1.23.1 < Date: Thu, 26 Jun 2025 08:33:29 GMT < Content-Type: application/json < Content-Length: 599 < Connection: keep-alive < HTTP_TRANSFER_ENCODING: Not a chunked request. ---------------------------------Сначала $_POST: Array ( [3\r\nfoo\r\n3\r\nbar\r\n0\r\n\r\n] => ) Теперь 'php://input': 3\r\nfoo\r\n3\r\nbar\r\n0\r\n\r\n ---------------------------------Теперь пробуем парсить и чистить 'php://input':{ "received": "3\\r\\nfoo\\r\\n3\\r\\nbar\\r\\n0\\r\\n\\r\\n", "cleaned": "3\\r\\nfoo\\r\\n3\\r\\nbar\\r\\n0\\r\\n\\r\\n", "parsed": { "3\\r\\nfoo\\r\\n3\\r\\nbar\\r\\n0\\r\\n\\r\\n": "" }, "timestamp": "2025-06-26T11:33:29+03:00" }* Connection #0 to host pmaker.ru left intact c:\!>