diff --git a/src/AgApiClient.cpp b/src/AgApiClient.cpp index fe582a4..5933c30 100644 --- a/src/AgApiClient.cpp +++ b/src/AgApiClient.cpp @@ -58,6 +58,7 @@ bool AgApiClient::fetchServerConfiguration(void) { } #else HTTPClient client; + client.setTimeout(timeoutMs); if (client.begin(uri) == false) { getConfigFailed = true; return false; @@ -113,14 +114,13 @@ bool AgApiClient::postToServer(String data) { return false; } - String uri = - "http://hw.airgradient.com/sensors/airgradient:" + ag->deviceId() + - "/measures"; + String uri = apiRoot + "/sensors/airgradient:" + ag->deviceId() + "/measures"; // logInfo("Post uri: " + uri); // logInfo("Post data: " + data); WiFiClient wifiClient; HTTPClient client; + client.setTimeout(timeoutMs); if (client.begin(wifiClient, uri.c_str()) == false) { logError("Init client failed"); return false; @@ -190,3 +190,12 @@ bool AgApiClient::sendPing(int rssi, int bootCount) { String AgApiClient::getApiRoot() const { return apiRoot; } void AgApiClient::setApiRoot(const String &apiRoot) { this->apiRoot = apiRoot; } + +/** + * @brief Set http request timeout. (Default: 10s) + * + * @param timeoutMs + */ +void AgApiClient::setTimeout(uint16_t timeoutMs) { + this->timeoutMs = timeoutMs; +} \ No newline at end of file diff --git a/src/AgApiClient.h b/src/AgApiClient.h index 7e6037d..7035323 100644 --- a/src/AgApiClient.h +++ b/src/AgApiClient.h @@ -25,6 +25,7 @@ private: bool getConfigFailed; bool postToServerFailed; bool notAvailableOnDashboard = false; // Device not setup on Airgradient cloud dashboard. + uint16_t timeoutMs = 10000; // Default set to 10s public: AgApiClient(Stream &stream, Configuration &config); @@ -40,6 +41,7 @@ public: bool sendPing(int rssi, int bootCount); String getApiRoot() const; void setApiRoot(const String &apiRoot); + void setTimeout(uint16_t timeoutMs); }; #endif /** _AG_API_CLIENT_H_ */