diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index ed911d5..f087079 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -226,8 +226,10 @@ void setup() { configSchedule.update(); if (apiClient.isFetchConfigureFailed()) { if (ag->isOne()) { - stateMachine.displayHandle( - AgStateMachineWiFiOkServerOkSensorConfigFailed); + if (apiClient.isNotAvailableOnDashboard()) { + stateMachine.displayHandle( + AgStateMachineWiFiOkServerOkSensorConfigFailed); + } } stateMachine.handleLeds( AgStateMachineWiFiOkServerOkSensorConfigFailed); diff --git a/src/AgApiClient.cpp b/src/AgApiClient.cpp index 699d5ae..1f7c83b 100644 --- a/src/AgApiClient.cpp +++ b/src/AgApiClient.cpp @@ -69,11 +69,17 @@ bool AgApiClient::fetchServerConfiguration(void) { if (retCode != 200) { client.end(); getConfigFailed = true; + + /** Return code 400 mean device not setup on cloud. */ + if (retCode == 400) { + notAvailableOnDashboard = true; + } return false; } /** clear failed */ getConfigFailed = false; + notAvailableOnDashboard = false; /** Get response string */ String respContent = client.getString(); @@ -144,6 +150,17 @@ bool AgApiClient::isFetchConfigureFailed(void) { return getConfigFailed; } */ bool AgApiClient::isPostToServerFailed(void) { return postToServerFailed; } +/** + * @brief Get status device has available on dashboard or not. should get after + * fetch configuration return failed + * + * @return true + * @return false + */ +bool AgApiClient::isNotAvailableOnDashboard(void) { + return notAvailableOnDashboard; +} + void AgApiClient::setAirGradient(AirGradient *ag) { this->ag = ag; } /** diff --git a/src/AgApiClient.h b/src/AgApiClient.h index 44ca691..4b37bf3 100644 --- a/src/AgApiClient.h +++ b/src/AgApiClient.h @@ -23,6 +23,7 @@ private: bool getConfigFailed; bool postToServerFailed; + bool notAvailableOnDashboard = false; // Device not setup on Airgradient cloud dashboard. public: AgApiClient(Stream &stream, Configuration &config); @@ -33,6 +34,7 @@ public: bool postToServer(String data); bool isFetchConfigureFailed(void); bool isPostToServerFailed(void); + bool isNotAvailableOnDashboard(void); void setAirGradient(AirGradient *ag); bool sendPing(int rssi, int bootCount); };