Closed
Description
Basic Infos
- This issue complies with the issue POLICY doc.
- I have read the documentation at readthedocs and the issue is not addressed there.
- I have tested that the issue is present in current master branch (aka latest git).
- I have searched the issue tracker for a similar issue.
- If there is a stack dump, I have decoded it.
- I have filled out all fields below.
Platform
- Hardware: ESP-12F
- Core Version: 3.0.2 I guess?
- Development Env: PlatformIO
- Operating System: macOS
Settings in platformio.ini
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
framework = arduino
monitor_speed = 115200
lib_deps =
knolleary/PubSubClient@^2.8
Problem Description
In my code I have WiFiClient espClient
and WiFiClientSecure updateClient
, and they have irrelevant usage.
When updateClient
is used by ESPhttpUpdate.update
, espClient
is disconnected in ESPhttpUpdate.onProgress
, as you can test in the sketch:
MCVE Sketch
#include "Arduino.h"
#include <ESP8266WiFi.h>
#include <ESP8266httpUpdate.h>
#include <PubSubClient.h>
#define ssid "ssid" // Change this
#define password "password" // Change this
String upUrl = "https://bin.bemfa.com/b/3BcN2Q1NGY4NWFmNDI5NzZlZTNjMjY5M2U2OTJhNmJiNTk=light002.bin";
char serverName[] = "baidu.com";
WiFiClient espClient;
void onStart()
{
Serial.println("onStart");
Serial.printf("WiFiClient is %sconnected.\r\n", espClient.connected() ? "" : "NOT ");
}
void onEnd()
{
Serial.println("onEnd");
}
void onProgress(int cur, int total)
{
Serial.printf("onProgress at %d of %d bytes.\r\n", cur, total);
Serial.printf("WiFiClient is %sconnected.\r\n", espClient.connected() ? "" : "NOT ");
}
void onError(int err)
{
Serial.printf("onError, err code = %d.\r\n", err);
}
void updateBin()
{
WiFiClientSecure updateClient;
updateClient.setInsecure();
ESPhttpUpdate.onStart(onStart);
ESPhttpUpdate.onEnd(onEnd);
ESPhttpUpdate.onProgress(onProgress);
ESPhttpUpdate.onError(onError);
t_httpUpdate_return ret = ESPhttpUpdate.update(updateClient, upUrl);
switch (ret)
{
case HTTP_UPDATE_FAILED:
Serial.println("HTTP_UPDATE_FAILED");
break;
case HTTP_UPDATE_NO_UPDATES:
Serial.println("HTTP_UPDATE_NO_UPDATES");
break;
case HTTP_UPDATE_OK:
Serial.println("HTTP_UPDATE_OK");
break;
}
}
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
if (espClient.connect(serverName, 443))
{
if (espClient.connected())
{
Serial.println("Connected to https://baidu.com.");
}
updateBin();
}
}
void loop()
{
}
Log
...........
Connected to https://baidu.com.
onStart
WiFiClient is connected.
onProgress at 0 of 305120 bytes.
WiFiClient is NOT connected.
onProgress at 0 of 305120 bytes.
WiFiClient is NOT connected.
onProgress at 4096 of 305120 bytes.
WiFiClient is NOT connected.
...
Did I miss anything or this is normal?
How do I keep espClient
CONNECTED during ESPhttpUpdate.update
? Thank you.
Metadata
Metadata
Assignees
Labels
No labels