Я ведь не делал ПРАВИЛЬНЫЙ вариант, я написал временный способ узнать CHIP_ID (не проверяя последствия).
Если у вас заработало - хорошо. Сохраните свой рабочий код, чтобы можно было перепроверить, если вдруг после новых изменений снова что-то не будет работать. (Таким образом, по-шагово внося изменения, можно определить после каких действий все ломается и выяснить причину "почему")
По пробовал построить сервер на rtos, результат тот же, сервер перестает отвечать.
В тесте сервер принимает запрос на соединение от клиента и строит новый таск,
в таске для сокета клиента выполняет чтение http запроса и всегда отправляется ответ с 404-м кодом, если от клиента получаю разрывает соединения, закрываю сокет клиента и прекращаю таск клиента.
Для проверки использовал простенький скрипт, в котором в цикле выполнял тестовый запрос
#!/bin/bash
test_no=1
while [ $test_no -le 100000 ]
do
curl http://192.168.4.1/test && echo ' '$test_no
((test_no++))
done
Очень интересный результат получил, иногда после 80-90 запросов сервер перестает отвечать, иногда и после 15-ти не отвечает, запросы выполняются без каких либо задержек, после получения ответа на один запрос сразу выполняется следующий запрос.
С стороны сервера вижу что разрыв соединения со стороны клиента не всегда приходит, несмотря на то что FIN от клиента при разрыве соединения уходит, сервер его не обрабатывает, а поскольку сокеты клиентов на сервере я закрываю только в случае получения разрыва соединения от клиента, не получив разрыв соединения от клиента сокет остается открытым. В результате таблица файловых дескрипторов переполняется, сервер при попытке выполнить accept для очередного соединения получает ENFILE (File table overflow).
PS:
На ESP32 сначала поймал такое, после решил проверить на ESP8266, а там тоже самое.
Наткнулся на эту тему с похожей проблемой. Но так и не понял причину.
Датчик BMP280 отдает температуру -134 градуса. А сам вебсервер доступен. Зависает где-то через минут 40-60. Перезапуск восстанавливает датчик и все снова работает в штатном режиме. Есть ощущение что значение какой-то конкретной переменной выходит за рамки доступной памяти.