Здравствуйте. Помогите пожалуйста разобраться с “Визуализируем показания датчиков на веб-сервере (ESP32 / ESP8266 + MySQL + PHP)“.
При компиляции скетча для esp, первая ошибка была на строчку 147 http.begin(serverName); требуется 2 аргумента. Вышел из ситуации WiFiClient wifiClient; и http.begin(wifiClient,serverName); соответственно. Остальное скомпилировалось без проблем. Но при передаче данных на сервер, возникает ошибка Error code: -1
Хотя запрос передается нормально “httpRequestData api_key=tPmAT5Ab3j7F9&temper_houm_ant=24.75&temper_street_ant=49.54&hymidity_ant=1005.14”.
3 Ответы
Здравствуйте!
Ошибка, которую вы описали, связана с тем, что вы используете устаревший метод http.begin(serverName)
вместо более современного http.begin(wifiClient, serverName)
. Метод http.begin()
требует два аргумента: объект WiFiClient
и URL-адрес сервера.
В вашем случае, чтобы избежать ошибки, вы правильно добавили объект WiFiClient wifiClient
, который передается в http.begin()
вместе с URL-адресом сервера.
Однако, поскольку у вас возникает ошибка при передаче данных на сервер, я рекомендую вам проверить следующее:
- Убедитесь, что вы используете правильный URL-адрес сервера. Ваш код должен содержать что-то вроде
http://yourserver.com/yourphpfile.php
. - Убедитесь, что ваш сервер MySQL настроен правильно и доступен из вашей программы.
- Проверьте свой код на наличие ошибок в передаче данных. Возможно, вы передаете неправильный тип данных или нарушаете формат передачи данных.
- Проверьте логи вашего сервера на наличие ошибок.
- const char* serverName = \”http://192.168.0.118:443/post-data.php\”; При переходе в браузере по этому адресу получаю сообщение \”No data posted with HTTP POST.\”
- Тут бы подробнее что проверить. В php myadmin через браузер захожу, настройки как в ваше статье \”Визуализируем показания датчиков на веб-сервере….\”
- Тут то же все в соответствии с вашей статьей делал.
- Это в error.log севера апачи
\”Thu Mar 23 21:06:23.512218 2023] [ssl:warn] [pid 7796:tid 244] AH01909: denwer.192.168.0.118:443:0 server certificate does NOT include an ID which matches the server name
[Thu Mar 23 21:06:23.512218 2023] [ssl:warn] [pid 7796:tid 244] AH01909: custom:443:0 server certificate does NOT include an ID which matches the server name
[Thu Mar 23 21:06:23.522218 2023] [ssl:warn] [pid 7796:tid 244] AH01909: 192.168.0.118:443:0 server certificate does NOT include an ID which matches the server name
[Thu Mar 23 21:06:23.532218 2023] [ssl:warn] [pid 7796:tid 244] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
Failed loading /usr/local/php5/ext\\\\usr\\local\\php5\\ext\\php_xdebug-2.4.1-7.0-vc14-nts.dll
[Thu Mar 23 21:06:23.584219 2023] [mpm_winnt:notice] [pid 7796:tid 244] AH00354: Child: Starting 64 worker threads.
[Thu Mar 23 21:06:31.792254 2023] [authz_core:error] [pid 7796:tid 932] [client 192.168.0.118:52310] AH01630: client denied by server configuration: Z:/denwer/www/denwer/errors/404.php, referer: https://192.168.0.118/post-data.php
[Thu Mar 23 21:35:07.886706 2023] [authz_core:error] [pid 7796:tid 932] [client 192.168.0.118:52511] AH01630: client denied by server configuration: Z:/denwer/www/denwer/errors/404.php, referer: https://192.168.0.118/esp-chart.php
[Thu Mar 23 21:35:12.800921 2023] [authz_core:error] [pid 7796:tid 932] [client 192.168.0.118:52515] AH01630: client denied by server configuration: Z:/denwer/www/denwer/errors/404.php, referer: https://192.168.0.118/post-data.php \”
Это часть access лог апачи.
192.168.0.171 – – [23/Mar/2023:21:48:50 +0300] \”GET / HTTP/1.0\” 400 362
192.168.0.171 – – [23/Mar/2023:21:49:20 +0300] \”GET / HTTP/1.0\” 400 362
192.168.0.171 – – [23/Mar/2023:21:49:50 +0300] \”GET / HTTP/1.0\” 400 362
192.168.0.171 – – [23/Mar/2023:21:50:20 +0300] \”GET / HTTP/1.0\” 400 362
Это в мониторе порта esp \”HTTP Response code: 400\”
Похоже, что проблема заключается в некорректной конфигурации вашего веб-сервера. Некоторые из сообщений в вашем логе указывают на проблемы с настройкой SSL-сертификата и настройками доступа к файлам на сервере Apache.
Вот несколько вариантов того, что вы можете попробовать, чтобы решить эту проблему:
Проверьте настройки SSL-сертификата. В логах Apache есть предупреждение, что ваш сертификат не содержит идентификатора, который совпадает с именем сервера. Убедитесь, что ваш сертификат был правильно установлен и что имя сервера в конфигурации SSL соответствует имени сервера, используемому в вашем коде.
Убедитесь, что правильно настроены настройки доступа к файлам на сервере Apache. Сообщения в логах Apache указывают на ошибки доступа, поэтому это может быть проблемой. Убедитесь, что вы правильно настроили разрешения для файлов, используемых в вашем скрипте PHP.
Попробуйте выполнить запрос к вашему серверу напрямую из браузера, используя параметры, которые вы передаете из ESP. В этом случае вы можете легко проверить, что ваш сервер работает корректно и правильно обрабатывает запросы.
Надеюсь, это поможет вам найти решение проблемы.