mirror of
https://github.com/airgradienthq/arduino.git
synced 2025-07-30 00:47:17 +02:00
Attempt connect to default wifi on boot
notify led when new measurement inserted to local storage
This commit is contained in:
@ -120,14 +120,14 @@ static void offlineStorageUpdate();
|
|||||||
|
|
||||||
AgSchedule dispLedSchedule(DISP_UPDATE_INTERVAL, updateDisplayAndLedBar);
|
AgSchedule dispLedSchedule(DISP_UPDATE_INTERVAL, updateDisplayAndLedBar);
|
||||||
// AgSchedule configSchedule(SERVER_CONFIG_SYNC_INTERVAL,
|
// AgSchedule configSchedule(SERVER_CONFIG_SYNC_INTERVAL,
|
||||||
// configurationUpdateSchedule);
|
// configurationUpdateSchedule);
|
||||||
// AgSchedule agApiPostSchedule(SERVER_SYNC_INTERVAL, sendDataToServer);
|
// AgSchedule agApiPostSchedule(SERVER_SYNC_INTERVAL, sendDataToServer);
|
||||||
AgSchedule co2Schedule(SENSOR_CO2_UPDATE_INTERVAL, co2Update);
|
AgSchedule co2Schedule(SENSOR_CO2_UPDATE_INTERVAL, co2Update);
|
||||||
AgSchedule pmsSchedule(SENSOR_PM_UPDATE_INTERVAL, updatePm);
|
AgSchedule pmsSchedule(SENSOR_PM_UPDATE_INTERVAL, updatePm);
|
||||||
AgSchedule tempHumSchedule(SENSOR_TEMP_HUM_UPDATE_INTERVAL, tempHumUpdate);
|
AgSchedule tempHumSchedule(SENSOR_TEMP_HUM_UPDATE_INTERVAL, tempHumUpdate);
|
||||||
AgSchedule tvocSchedule(SENSOR_TVOC_UPDATE_INTERVAL, updateTvoc);
|
AgSchedule tvocSchedule(SENSOR_TVOC_UPDATE_INTERVAL, updateTvoc);
|
||||||
AgSchedule watchdogFeedSchedule(60000, wdgFeedUpdate);
|
AgSchedule watchdogFeedSchedule(60000, wdgFeedUpdate);
|
||||||
AgSchedule offlineStorage(60000, offlineStorageUpdate);
|
AgSchedule offlineStorage((2 * 60000), offlineStorageUpdate);
|
||||||
// AgSchedule checkForUpdateSchedule(FIRMWARE_CHECK_FOR_UPDATE_MS, firmwareCheckForUpdate);
|
// AgSchedule checkForUpdateSchedule(FIRMWARE_CHECK_FOR_UPDATE_MS, firmwareCheckForUpdate);
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
@ -175,101 +175,51 @@ void setup() {
|
|||||||
setMeasurementMaxPeriod();
|
setMeasurementMaxPeriod();
|
||||||
|
|
||||||
// Comment below line to disable debug measurement readings
|
// Comment below line to disable debug measurement readings
|
||||||
measurements.setDebug(true);
|
measurements.setDebug(false);
|
||||||
|
|
||||||
/** Connecting wifi */
|
// Force to offline mode
|
||||||
bool connectToWifi = false;
|
configuration.setOfflineMode(true);
|
||||||
if (ag->isOne()) {
|
|
||||||
/** Show message confirm offline mode, should me perform if LED bar button
|
|
||||||
* test pressed */
|
|
||||||
if (ledBarButtonTest == false) {
|
|
||||||
oledDisplay.setText(
|
|
||||||
"Press now for",
|
|
||||||
configuration.isOfflineMode() ? "online mode" : "offline mode", "");
|
|
||||||
uint32_t startTime = millis();
|
|
||||||
while (true) {
|
|
||||||
if (ag->button.getState() == ag->button.BUTTON_PRESSED) {
|
|
||||||
configuration.setOfflineMode(!configuration.isOfflineMode());
|
|
||||||
|
|
||||||
oledDisplay.setText(
|
|
||||||
"Offline Mode",
|
|
||||||
configuration.isOfflineMode() ? " = True" : " = False", "");
|
|
||||||
delay(1000);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
uint32_t periodMs = (uint32_t)(millis() - startTime);
|
|
||||||
if (periodMs >= 3000) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
connectToWifi = !configuration.isOfflineMode();
|
|
||||||
} else {
|
|
||||||
configuration.setOfflineModeWithoutSave(true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
connectToWifi = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (connectToWifi) {
|
|
||||||
apiClient.begin();
|
|
||||||
|
|
||||||
if (wifiConnector.connect()) {
|
|
||||||
if (wifiConnector.isConnected()) {
|
|
||||||
mdnsInit();
|
|
||||||
localServer.begin();
|
|
||||||
initMqtt();
|
|
||||||
sendDataToAg();
|
|
||||||
|
|
||||||
#ifdef ESP8266
|
|
||||||
// ota not supported
|
|
||||||
#else
|
|
||||||
firmwareCheckForUpdate();
|
|
||||||
// checkForUpdateSchedule.update();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
apiClient.fetchServerConfiguration();
|
|
||||||
// configSchedule.update();
|
|
||||||
if (apiClient.isFetchConfigureFailed()) {
|
|
||||||
if (ag->isOne()) {
|
|
||||||
if (apiClient.isNotAvailableOnDashboard()) {
|
|
||||||
stateMachine.displaySetAddToDashBoard();
|
|
||||||
stateMachine.displayHandle(
|
|
||||||
AgStateMachineWiFiOkServerOkSensorConfigFailed);
|
|
||||||
} else {
|
|
||||||
stateMachine.displayClearAddToDashBoard();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stateMachine.handleLeds(
|
|
||||||
AgStateMachineWiFiOkServerOkSensorConfigFailed);
|
|
||||||
delay(DISPLAY_DELAY_SHOW_CONTENT_MS);
|
|
||||||
} else {
|
|
||||||
ledBarEnabledUpdate();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (wifiConnector.isConfigurePorttalTimeout()) {
|
|
||||||
oledDisplay.showRebooting();
|
|
||||||
delay(2500);
|
|
||||||
oledDisplay.setText("", "", "");
|
|
||||||
ESP.restart();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/** Set offline mode without saving, cause wifi is not configured */
|
|
||||||
if (wifiConnector.hasConfigurated() == false) {
|
|
||||||
Serial.println("Set offline mode cause wifi is not configurated");
|
|
||||||
configuration.setOfflineModeWithoutSave(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Show display Warning up */
|
/** Show display Warning up */
|
||||||
if (ag->isOne()) {
|
if (ag->isOne()) {
|
||||||
oledDisplay.setText("Warming Up", "Serial Number:", ag->deviceId().c_str());
|
oledDisplay.setText("Warming Up", "Serial Number:", ag->deviceId().c_str());
|
||||||
delay(DISPLAY_DELAY_SHOW_CONTENT_MS);
|
delay(DISPLAY_DELAY_SHOW_CONTENT_MS);
|
||||||
|
|
||||||
Serial.println("Display brightness: " + String(configuration.getDisplayBrightness()));
|
// Serial.println("Display brightness: " + String(configuration.getDisplayBrightness()));
|
||||||
oledDisplay.setBrightness(configuration.getDisplayBrightness());
|
// oledDisplay.setBrightness(configuration.getDisplayBrightness());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oledDisplay.setText("Offline Storage Mode", "Connecting to", "default WiFi");
|
||||||
|
|
||||||
|
// Attempt connect to default wifi
|
||||||
|
Serial.println("Connecting to default wifi " + String(wifiConnector.defaultSsid));
|
||||||
|
WiFi.begin();
|
||||||
|
/** Set wifi connect */
|
||||||
|
WiFi.begin(wifiConnector.defaultSsid, wifiConnector.defaultPassword);
|
||||||
|
|
||||||
|
/** Wait for wifi connect to AP */
|
||||||
|
int count = 0;
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
delay(1000);
|
||||||
|
count++;
|
||||||
|
if (count >= 15) {
|
||||||
|
Serial.println("Try connect to default wifi \"" + String(wifiConnector.defaultSsid) +
|
||||||
|
"\"failed, ignore");
|
||||||
|
Serial.println();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Notify and wait
|
||||||
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
|
oledDisplay.setText("WiFi connected", "", "");
|
||||||
|
mdnsInit();
|
||||||
|
localServer.begin();
|
||||||
|
} else {
|
||||||
|
oledDisplay.setText("WiFi not connect", "", "");
|
||||||
|
}
|
||||||
|
delay(3000);
|
||||||
|
|
||||||
// Update display and led bar after finishing setup to show dashboard
|
// Update display and led bar after finishing setup to show dashboard
|
||||||
updateDisplayAndLedBar();
|
updateDisplayAndLedBar();
|
||||||
}
|
}
|
||||||
@ -277,7 +227,7 @@ void setup() {
|
|||||||
void loop() {
|
void loop() {
|
||||||
/** Handle schedule */
|
/** Handle schedule */
|
||||||
dispLedSchedule.run();
|
dispLedSchedule.run();
|
||||||
// configSchedule.run();
|
// configSchedule.run();
|
||||||
// agApiPostSchedule.run();
|
// agApiPostSchedule.run();
|
||||||
offlineStorage.run();
|
offlineStorage.run();
|
||||||
|
|
||||||
@ -477,6 +427,8 @@ static void factoryConfigReset(void) {
|
|||||||
static void wdgFeedUpdate(void) {
|
static void wdgFeedUpdate(void) {
|
||||||
ag->watchdog.reset();
|
ag->watchdog.reset();
|
||||||
Serial.println("External watchdog feed!");
|
Serial.println("External watchdog feed!");
|
||||||
|
/** Log current free heap size */
|
||||||
|
Serial.printf("Free heap: %u\n", ESP.getFreeHeap());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ledBarEnabledUpdate(void) {
|
static void ledBarEnabledUpdate(void) {
|
||||||
@ -1227,4 +1179,17 @@ int calculateMaxPeriod(int updateInterval) {
|
|||||||
return (SERVER_SYNC_INTERVAL - (SERVER_SYNC_INTERVAL * 0.8)) / updateInterval;
|
return (SERVER_SYNC_INTERVAL - (SERVER_SYNC_INTERVAL * 0.8)) / updateInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void offlineStorageUpdate() { measurements.saveLocalStorage(*ag); }
|
void offlineStorageUpdate() {
|
||||||
|
measurements.saveLocalStorage(*ag);
|
||||||
|
ag->ledBar.setColor(0, 0, 255, 0);
|
||||||
|
ag->ledBar.show();
|
||||||
|
delay(250);
|
||||||
|
ag->ledBar.setColor(0, 0, 0, 0);
|
||||||
|
ag->ledBar.show();
|
||||||
|
delay(250);
|
||||||
|
ag->ledBar.setColor(0, 0, 255, 0);
|
||||||
|
ag->ledBar.show();
|
||||||
|
delay(250);
|
||||||
|
ag->ledBar.setColor(0, 0, 0, 0);
|
||||||
|
ag->ledBar.show();
|
||||||
|
}
|
Reference in New Issue
Block a user