mirror of
https://github.com/airgradienthq/arduino.git
synced 2026-04-29 10:23:19 +02:00
[temporary commit]
This commit is contained in:
+140
-844
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
||||
#include "AgOledDisplay.h"
|
||||
// #include "Libraries/U8g2/src/U8g2lib.h"
|
||||
#include <U8g2lib.h>
|
||||
|
||||
#define DISP() ((U8G2_SH1106_128X64_NONAME_F_HW_I2C *)(this->u8g2))
|
||||
@@ -36,9 +35,13 @@ void AgOledDisplay::showTempHum(void) {
|
||||
}
|
||||
}
|
||||
|
||||
AgOledDisplay::AgOledDisplay(AirGradient &ag, AgConfigure &config,
|
||||
AgOledDisplay::AgOledDisplay(AgConfigure &config,
|
||||
AgValue &value, Stream &log)
|
||||
: PrintLog(log, "AgOledDisplay"), ag(ag), config(config), value(value) {}
|
||||
: PrintLog(log, "AgOledDisplay"), config(config), value(value) {}
|
||||
|
||||
void AgOledDisplay::setAirGradient(AirGradient *ag) {
|
||||
this->ag = ag;
|
||||
}
|
||||
|
||||
AgOledDisplay::~AgOledDisplay() {}
|
||||
|
||||
@@ -185,7 +188,7 @@ void AgOledDisplay::showDashboard(const char *status) {
|
||||
DISP()->setFont(u8g2_font_t0_22b_tf);
|
||||
if (config.isPmStandardInUSAQI()) {
|
||||
if (value.PM25 >= 0) {
|
||||
sprintf(strBuf, "%d", ag.pms5003.convertPm25ToUsAqi(value.PM25));
|
||||
sprintf(strBuf, "%d", ag->pms5003.convertPm25ToUsAqi(value.PM25));
|
||||
} else {
|
||||
sprintf(strBuf, "%s", "-");
|
||||
}
|
||||
|
||||
+4
-3
@@ -10,7 +10,7 @@
|
||||
class AgOledDisplay : public PrintLog {
|
||||
private:
|
||||
AgConfigure &config;
|
||||
AirGradient &ag;
|
||||
AirGradient *ag;
|
||||
bool isBegin = false;
|
||||
void *u8g2 = NULL;
|
||||
AgValue &value;
|
||||
@@ -18,11 +18,12 @@ private:
|
||||
void showTempHum(void);
|
||||
|
||||
public:
|
||||
AgOledDisplay(AirGradient &ag, AgConfigure &config, AgValue &value,
|
||||
AgOledDisplay(AgConfigure &config, AgValue &value,
|
||||
Stream &log);
|
||||
~AgOledDisplay();
|
||||
|
||||
bool begin(void);
|
||||
void setAirGradient(AirGradient *ag);
|
||||
bool begin(void);
|
||||
void end(void);
|
||||
void setStatus(String &status);
|
||||
void setStatus(const char *status);
|
||||
|
||||
+171
-175
@@ -8,20 +8,20 @@
|
||||
void AgStateMachine::ledBarSingleLedAnimation(uint8_t r, uint8_t g, uint8_t b) {
|
||||
if (ledBarAnimationCount < 0) {
|
||||
ledBarAnimationCount = 0;
|
||||
ag.ledBar.setColor(r, g, b, ledBarAnimationCount);
|
||||
ag->ledBar.setColor(r, g, b, ledBarAnimationCount);
|
||||
} else {
|
||||
ledBarAnimationCount++;
|
||||
if (ledBarAnimationCount >= ag.ledBar.getNumberOfLeds()) {
|
||||
if (ledBarAnimationCount >= ag->ledBar.getNumberOfLeds()) {
|
||||
ledBarAnimationCount = 0;
|
||||
}
|
||||
ag.ledBar.setColor(r, g, b, ledBarAnimationCount);
|
||||
ag->ledBar.setColor(r, g, b, ledBarAnimationCount);
|
||||
}
|
||||
}
|
||||
|
||||
void AgStateMachine::ledStatusBlinkDelay(uint32_t ms) {
|
||||
ag.statusLed.setOn();
|
||||
ag->statusLed.setOn();
|
||||
delay(ms);
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
delay(ms);
|
||||
}
|
||||
|
||||
@@ -34,91 +34,87 @@ void AgStateMachine::sensorLedHandle(void) {
|
||||
pm25LedHandle();
|
||||
break;
|
||||
default:
|
||||
ag.ledBar.clear();
|
||||
ag->ledBar.clear();
|
||||
break;
|
||||
}
|
||||
|
||||
// if (config.getLedBarMode() == LedBarMode::LedBarModeCO2) {
|
||||
// co2LedHandle();
|
||||
// }
|
||||
}
|
||||
|
||||
void AgStateMachine::co2LedHandle(void) {
|
||||
int co2Value = value.CO2;
|
||||
if (co2Value <= 400) {
|
||||
/** G; 1 */
|
||||
ag.ledBar.setColor(0, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(0, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
} else if (co2Value <= 700) {
|
||||
/** GG; 2 */
|
||||
ag.ledBar.setColor(0, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(0, 255, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(0, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(0, 255, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
} else if (co2Value <= 1000) {
|
||||
/** YYY; 3 */
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
} else if (co2Value <= 1333) {
|
||||
/** YYYY; 4 */
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
} else if (co2Value <= 1666) {
|
||||
/** YYYYY; 5 */
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
} else if (co2Value <= 2000) {
|
||||
/** RRRRRR; 6 */
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
} else if (co2Value <= 2666) {
|
||||
/** RRRRRRR; 7 */
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 7);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 7);
|
||||
} else if (co2Value <= 3333) {
|
||||
/** RRRRRRRR; 8 */
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 7);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 8);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 7);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 8);
|
||||
} else if (co2Value <= 4000) {
|
||||
/** RRRRRRRRR; 9 */
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 7);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 8);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 9);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 7);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 8);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 9);
|
||||
} else { /** > 4000 */
|
||||
/* PRPRPRPRP; 9 */
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 7);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 8);
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 9);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 7);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 8);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,89 +122,94 @@ void AgStateMachine::pm25LedHandle(void) {
|
||||
int pm25Value = value.PM25;
|
||||
if (pm25Value <= 5) {
|
||||
/** G; 1 */
|
||||
ag.ledBar.setColor(0, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(0, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
} else if (pm25Value <= 10) {
|
||||
/** GG; 2 */
|
||||
ag.ledBar.setColor(0, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(0, 255, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(0, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(0, 255, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
} else if (pm25Value <= 20) {
|
||||
/** YYY; 3 */
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
} else if (pm25Value <= 35) {
|
||||
/** YYYY; 4 */
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
} else if (pm25Value <= 45) {
|
||||
/** YYYYY; 5 */
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 255, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 255, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
} else if (pm25Value <= 55) {
|
||||
/** RRRRRR; 6 */
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
} else if (pm25Value <= 65) {
|
||||
/** RRRRRRR; 7 */
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 7);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 7);
|
||||
} else if (pm25Value <= 150) {
|
||||
/** RRRRRRRR; 8 */
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 7);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 8);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 7);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 8);
|
||||
} else if (pm25Value <= 250) {
|
||||
/** RRRRRRRRR; 9 */
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 7);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 8);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 9);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 7);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 8);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 9);
|
||||
} else { /** > 250 */
|
||||
/* PRPRPRPRP; 9 */
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 1);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 2);
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 3);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 4);
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 5);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 6);
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 7);
|
||||
ag.ledBar.setColor(255, 0, 0, ag.ledBar.getNumberOfLeds() - 8);
|
||||
ag.ledBar.setColor(153, 153, 0, ag.ledBar.getNumberOfLeds() - 9);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 1);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 2);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 3);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 4);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 5);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 6);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 7);
|
||||
ag->ledBar.setColor(255, 0, 0, ag->ledBar.getNumberOfLeds() - 8);
|
||||
ag->ledBar.setColor(153, 153, 0, ag->ledBar.getNumberOfLeds() - 9);
|
||||
}
|
||||
}
|
||||
|
||||
AgStateMachine::AgStateMachine(AirGradient &ag, AgOledDisplay &disp,
|
||||
Stream &log, AgValue &value, AgConfigure &config)
|
||||
: PrintLog(log, "AgStateMachine"), ag(ag), disp(disp), value(value),
|
||||
AgStateMachine::AgStateMachine(AgOledDisplay &disp, Stream &log, AgValue &value,
|
||||
AgConfigure &config)
|
||||
: PrintLog(log, "AgStateMachine"), disp(disp), value(value),
|
||||
config(config) {}
|
||||
|
||||
AgStateMachine::~AgStateMachine() {}
|
||||
|
||||
void AgStateMachine::displayHandle(AgStateMachineState state) {
|
||||
// Ignore handle if not ONE_INDOOR board
|
||||
if (!ag->isOneIndoor()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (state > AgStateMachineNormal) {
|
||||
logError("displayHandle: State invalid");
|
||||
return;
|
||||
@@ -223,7 +224,7 @@ void AgStateMachine::displayHandle(AgStateMachineState state) {
|
||||
String line1 = String(wifiConnectCountDown) + "s to connect";
|
||||
String line2 = "to WiFi hotspot:";
|
||||
String line3 = "\"airgradient-";
|
||||
String line4 = ag.deviceId() + "\"";
|
||||
String line4 = ag->deviceId() + "\"";
|
||||
disp.setText(line1, line2, line3, line4);
|
||||
// displayShowWifiText(String(wifiConnectCountDown) + "s to connect",
|
||||
// "to WiFi hotspot:", "\"airgradient-",
|
||||
@@ -285,7 +286,7 @@ void AgStateMachine::displayHandle(AgStateMachineState state) {
|
||||
disp.showDashboard("Add to Dashboard");
|
||||
} else {
|
||||
// displayshowDashboard(getDevId());
|
||||
disp.showDashboard(ag.deviceId().c_str());
|
||||
disp.showDashboard(ag->deviceId().c_str());
|
||||
}
|
||||
addToDashBoard = !addToDashBoard;
|
||||
}
|
||||
@@ -324,80 +325,80 @@ void AgStateMachine::ledHandle(AgStateMachineState state) {
|
||||
}
|
||||
|
||||
ledState = state;
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.clear(); // Set all LED OFF
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.clear(); // Set all LED OFF
|
||||
}
|
||||
switch (state) {
|
||||
case AgStateMachineWiFiManagerMode: {
|
||||
/** In WiFi Manager Mode */
|
||||
/** Turn LED OFF */
|
||||
/** Turn midle LED Color */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(0, 0, 255, ag.ledBar.getNumberOfLeds() / 2);
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(0, 0, 255, ag->ledBar.getNumberOfLeds() / 2);
|
||||
} else {
|
||||
ag.statusLed.setToggle();
|
||||
ag->statusLed.setToggle();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiManagerPortalActive: {
|
||||
/** WiFi Manager has connected to mobile phone */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(0, 0, 255);
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(0, 0, 255);
|
||||
} else {
|
||||
ag.statusLed.setOn();
|
||||
ag->statusLed.setOn();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiManagerStaConnecting: {
|
||||
/** after SSID and PW entered and OK clicked, connection to WiFI network is
|
||||
* attempted */
|
||||
if (ag.isOneIndoor()) {
|
||||
if (ag->isOneIndoor()) {
|
||||
ledBarSingleLedAnimation(255, 255, 255);
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiManagerStaConnected: {
|
||||
/** Connecting to WiFi worked */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(255, 255, 255);
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(255, 255, 255);
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiOkServerConnecting: {
|
||||
/** once connected to WiFi an attempt to reach the server is performed */
|
||||
if (ag.isOneIndoor()) {
|
||||
if (ag->isOneIndoor()) {
|
||||
ledBarSingleLedAnimation(0, 255, 0);
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiOkServerConnected: {
|
||||
/** Server is reachable, all fine */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(0, 255, 0);
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(0, 255, 0);
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
|
||||
/** two time slow blink, then off */
|
||||
for (int i = 0; i < 2; i++) {
|
||||
ledStatusBlinkDelay(LED_SLOW_BLINK_DELAY);
|
||||
}
|
||||
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiManagerConnectFailed: {
|
||||
/** Cannot connect to WiFi (e.g. wrong password, WPA Enterprise etc.) */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(255, 0, 0);
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(255, 0, 0);
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
|
||||
for (int j = 0; j < 3; j++) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
@@ -405,91 +406,89 @@ void AgStateMachine::ledHandle(AgStateMachineState state) {
|
||||
}
|
||||
delay(2000);
|
||||
}
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiOkServerConnectFailed: {
|
||||
/** Connected to WiFi but server not reachable, e.g. firewall block/
|
||||
* whitelisting needed etc. */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(233, 183, 54); /** orange */
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(233, 183, 54); /** orange */
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
for (int j = 0; j < 3; j++) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
ledStatusBlinkDelay(LED_FAST_BLINK_DELAY);
|
||||
}
|
||||
delay(2000);
|
||||
}
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiOkServerOkSensorConfigFailed: {
|
||||
/** Server reachable but sensor not configured correctly */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(139, 24, 248); /** violet */
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(139, 24, 248); /** violet */
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
for (int j = 0; j < 3; j++) {
|
||||
for (int i = 0; i < 5; i++) {
|
||||
ledStatusBlinkDelay(LED_FAST_BLINK_DELAY);
|
||||
}
|
||||
delay(2000);
|
||||
}
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineWiFiLost: {
|
||||
/** Connection to WiFi network failed credentials incorrect encryption not
|
||||
* supported etc. */
|
||||
if (ag.isOneIndoor()) {
|
||||
if (ag->isOneIndoor()) {
|
||||
/** WIFI failed status LED color */
|
||||
ag.ledBar.setColor(255, 0, 0, 0);
|
||||
ag->ledBar.setColor(255, 0, 0, 0);
|
||||
/** Show CO2 or PM color status */
|
||||
// sensorLedColorHandler();
|
||||
sensorLedHandle();
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineServerLost: {
|
||||
/** Connected to WiFi network but the server cannot be reached through the
|
||||
* internet, e.g. blocked by firewall */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(233, 183, 54, 0);
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(233, 183, 54, 0);
|
||||
|
||||
/** Show CO2 or PM color status */
|
||||
sensorLedHandle();
|
||||
// sensorLedColorHandler();
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineSensorConfigFailed: {
|
||||
/** Server is reachable but there is some configuration issue to be fixed on
|
||||
* the server side */
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.setColor(139, 24, 248, 0);
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.setColor(139, 24, 248, 0);
|
||||
|
||||
/** Show CO2 or PM color status */
|
||||
// sensorLedColorHandler();
|
||||
sensorLedHandle();
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AgStateMachineNormal: {
|
||||
if (ag.isOneIndoor()) {
|
||||
// sensorLedColorHandler();
|
||||
if (ag->isOneIndoor()) {
|
||||
sensorLedHandle();
|
||||
} else {
|
||||
ag.statusLed.setOff();
|
||||
ag->statusLed.setOff();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -497,21 +496,18 @@ void AgStateMachine::ledHandle(AgStateMachineState state) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (ag.isOneIndoor()) {
|
||||
ag.ledBar.show();
|
||||
// Show LED bar color
|
||||
if (ag->isOneIndoor()) {
|
||||
ag->ledBar.show();
|
||||
}
|
||||
}
|
||||
|
||||
void AgStateMachine::ledHandle(void) { ledHandle(ledState); }
|
||||
|
||||
// void AgStateMachine::setState(AgStateMachineState state) {
|
||||
// this->state = state;
|
||||
// }
|
||||
|
||||
// AgStateMachineState AgStateMachine::getState(void) { return state; }
|
||||
|
||||
void AgStateMachine::setDisplayState(AgStateMachineState state) {
|
||||
dispState = state;
|
||||
}
|
||||
|
||||
AgStateMachineState AgStateMachine::getDisplayState(void) { return dispState; }
|
||||
|
||||
void AgStateMachine::setAirGradient(AirGradient *ag) { this->ag = ag; }
|
||||
|
||||
@@ -12,7 +12,7 @@ private:
|
||||
// AgStateMachineState state;
|
||||
AgStateMachineState ledState;
|
||||
AgStateMachineState dispState;
|
||||
AirGradient &ag;
|
||||
AirGradient *ag;
|
||||
AgOledDisplay &disp;
|
||||
AgValue &value;
|
||||
AgConfigure &config;
|
||||
@@ -29,9 +29,10 @@ private:
|
||||
void pm25LedHandle(void);
|
||||
|
||||
public:
|
||||
AgStateMachine(AirGradient &ag, AgOledDisplay &disp, Stream &log,
|
||||
AgStateMachine(AgOledDisplay &disp, Stream &log,
|
||||
AgValue &value, AgConfigure& config);
|
||||
~AgStateMachine();
|
||||
void setAirGradient(AirGradient* ag);
|
||||
void displayHandle(AgStateMachineState state);
|
||||
void displayHandle(void);
|
||||
void displaySetAddToDashBoard(void);
|
||||
@@ -41,7 +42,6 @@ public:
|
||||
void ledHandle(AgStateMachineState state);
|
||||
void ledHandle(void);
|
||||
void setDisplayState(AgStateMachineState state);
|
||||
// AgStateMachineState getState(void);
|
||||
AgStateMachineState getDisplayState(void);
|
||||
};
|
||||
|
||||
|
||||
+47
-26
@@ -1,5 +1,4 @@
|
||||
#include "AgWiFiConnector.h"
|
||||
// #include "Libraries/WiFiManager/WiFiManager.h"
|
||||
#include <WiFiManager.h>
|
||||
|
||||
#define WIFI_CONNECT_COUNTDOWN_MAX 180
|
||||
@@ -7,16 +6,15 @@
|
||||
|
||||
#define WIFI() ((WiFiManager *)(this->wifi))
|
||||
|
||||
AgWiFiConnector::AgWiFiConnector(AirGradient &ag, AgOledDisplay &disp,
|
||||
String ssid, Stream &log, AgStateMachine &sm)
|
||||
: PrintLog(log, "AgWiFiConnector"), ag(ag), disp(disp), ssid(ssid), sm(sm) {
|
||||
}
|
||||
AgWiFiConnector::AgWiFiConnector(AgOledDisplay &disp, Stream &log,
|
||||
AgStateMachine &sm)
|
||||
: PrintLog(log, "AgWiFiConnector"), disp(disp), sm(sm) {}
|
||||
|
||||
AgWiFiConnector::~AgWiFiConnector() {}
|
||||
|
||||
void AgWiFiConnector::setHotspotSSID(String ssid) { this->ssid = ssid; }
|
||||
void AgWiFiConnector::setAirGradient(AirGradient *ag) { this->ag = ag; }
|
||||
|
||||
bool AgWiFiConnector::connect(uint32_t timeout) {
|
||||
bool AgWiFiConnector::connect(void) {
|
||||
if (wifi == NULL) {
|
||||
wifi = new WiFiManager();
|
||||
if (wifi == NULL) {
|
||||
@@ -26,19 +24,21 @@ bool AgWiFiConnector::connect(uint32_t timeout) {
|
||||
}
|
||||
|
||||
WIFI()->setConfigPortalBlocking(false);
|
||||
WIFI()->setTimeout(timeout);
|
||||
WIFI()->setTimeout(WIFI_CONNECT_COUNTDOWN_MAX);
|
||||
|
||||
WIFI()->setAPCallback([this](WiFiManager *obj) { _wifiApCallback(); });
|
||||
WIFI()->setSaveConfigCallback([this]() { _wifiSaveConfig(); });
|
||||
WIFI()->setSaveParamsCallback([this]() { _wifiSaveParamCallback(); });
|
||||
|
||||
if (ag.isOneIndoor()) {
|
||||
if (ag->isOneIndoor()) {
|
||||
disp.setText("Connecting to", "WiFi", "...");
|
||||
} else {
|
||||
logInfo("Connecting to WiFi...");
|
||||
}
|
||||
|
||||
WIFI()->autoConnect(ssid.c_str(), WIFI_HOTSPOT_PASSWORD_DEFAULT);
|
||||
|
||||
// Task handle WiFi connection.
|
||||
xTaskCreate(
|
||||
[](void *obj) {
|
||||
AgWiFiConnector *connector = (AgWiFiConnector *)obj;
|
||||
@@ -56,11 +56,12 @@ bool AgWiFiConnector::connect(uint32_t timeout) {
|
||||
|
||||
AgStateMachineState stateOld = sm.getDisplayState();
|
||||
while (WIFI()->getConfigPortalActive()) {
|
||||
/** LED and display animation */
|
||||
/** LED animatoin and display update content */
|
||||
if (WiFi.isConnected() == false) {
|
||||
/** Display countdown */
|
||||
uint32_t ms = (uint32_t)(millis() - dispPeriod);
|
||||
if (ag.isOneIndoor()) {
|
||||
uint32_t ms;
|
||||
if (ag->isOneIndoor()) {
|
||||
ms = (uint32_t)(millis() - dispPeriod);
|
||||
if (ms >= 1000) {
|
||||
dispPeriod = millis();
|
||||
sm.displayHandle();
|
||||
@@ -85,36 +86,31 @@ bool AgWiFiConnector::connect(uint32_t timeout) {
|
||||
clientConnectChanged = clientConnected;
|
||||
if (clientConnectChanged) {
|
||||
sm.ledHandle(AgStateMachineWiFiManagerPortalActive);
|
||||
// ledSmHandler(AgStateMachineWiFiManagerPortalActive);
|
||||
} else {
|
||||
// ledCount = LED_BAR_COUNT_INIT_VALUE;
|
||||
sm.ledAnimationInit();
|
||||
// ledSmHandler(AgStateMachineWiFiManagerMode);
|
||||
sm.ledHandle(AgStateMachineWiFiManagerMode);
|
||||
if (ag.isOneIndoor()) {
|
||||
// dispSmHandler(AgStateMachineWiFiManagerMode);
|
||||
if (ag->isOneIndoor()) {
|
||||
sm.displayHandle(AgStateMachineWiFiManagerMode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delay(1); // avoid watchdog timer reset.
|
||||
}
|
||||
|
||||
/** Show display wifi connect result failed */
|
||||
if (WiFi.isConnected() == false) {
|
||||
sm.ledHandle(AgStateMachineWiFiManagerConnectFailed);
|
||||
// ledSmHandler(AgStateMachineWiFiManagerConnectFailed);
|
||||
if (ag.isOneIndoor()) {
|
||||
// dispSmHandler(AgStateMachineWiFiManagerConnectFailed);
|
||||
if (ag->isOneIndoor()) {
|
||||
sm.displayHandle(AgStateMachineWiFiManagerConnectFailed);
|
||||
}
|
||||
delay(6000);
|
||||
} else {
|
||||
wifiHasConfig = true;
|
||||
hasConfig = true;
|
||||
}
|
||||
|
||||
/** Update LED bar color */
|
||||
appLedHandler();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AgWiFiConnector::wifiClientConnected(void) {
|
||||
@@ -123,18 +119,19 @@ bool AgWiFiConnector::wifiClientConnected(void) {
|
||||
|
||||
void AgWiFiConnector::_wifiApCallback(void) {
|
||||
sm.displayWiFiConnectCountDown(WIFI_CONNECT_COUNTDOWN_MAX);
|
||||
sm.ledAnimationInit();
|
||||
sm.setDisplayState(AgStateMachineWiFiManagerMode);
|
||||
sm.ledAnimationInit();
|
||||
sm.ledHandle(AgStateMachineWiFiManagerMode);
|
||||
}
|
||||
|
||||
void AgWiFiConnector::_wifiSaveConfig(void) {
|
||||
sm.setDisplayState(AgStateMachineWiFiManagerStaConnected);
|
||||
sm.ledHandle();
|
||||
// sm.displayHandle();
|
||||
sm.ledHandle(AgStateMachineWiFiManagerStaConnected);
|
||||
}
|
||||
|
||||
void AgWiFiConnector::_wifiSaveParamCallback(void) {
|
||||
sm.ledAnimationInit();
|
||||
sm.ledHandle(AgStateMachineWiFiManagerStaConnecting);
|
||||
sm.setDisplayState(AgStateMachineWiFiManagerStaConnecting);
|
||||
}
|
||||
|
||||
@@ -143,3 +140,27 @@ bool AgWiFiConnector::_wifiConfigPortalActive(void) {
|
||||
}
|
||||
|
||||
void AgWiFiConnector::_wifiProcess() { WIFI()->process(); }
|
||||
|
||||
void AgWiFiConnector::handle(void) {
|
||||
// Ignore if WiFi is not configured
|
||||
if (hasConfig == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (WiFi.isConnected()) {
|
||||
lastRetry = millis();
|
||||
return;
|
||||
}
|
||||
|
||||
/** Retry connect WiFi each 10sec */
|
||||
uint32_t ms = (uint32_t)(millis() - lastRetry);
|
||||
if (ms >= 10000) {
|
||||
lastRetry = millis();
|
||||
WiFi.reconnect();
|
||||
|
||||
// Serial.printf("Re-Connect WiFi\r\n");
|
||||
logInfo("Re-Connect WiFi");
|
||||
}
|
||||
}
|
||||
|
||||
bool AgWiFiConnector::isConnected(void) { return WiFi.isConnected(); }
|
||||
|
||||
+10
-6
@@ -2,33 +2,37 @@
|
||||
#define _AG_WIFI_CONNECTOR_H_
|
||||
|
||||
#include "AgOledDisplay.h"
|
||||
#include "AirGradient.h"
|
||||
#include "AgStateMachine.h"
|
||||
#include "AirGradient.h"
|
||||
#include "Main/PrintLog.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
class AgWiFiConnector : public PrintLog {
|
||||
private:
|
||||
AirGradient &ag;
|
||||
AirGradient *ag;
|
||||
AgOledDisplay &disp;
|
||||
AgStateMachine &sm;
|
||||
String ssid;
|
||||
void *wifi = NULL;
|
||||
bool hasConfig;
|
||||
uint32_t lastRetry;
|
||||
|
||||
bool wifiClientConnected(void);
|
||||
|
||||
public:
|
||||
AgWiFiConnector(AirGradient &ag, AgOledDisplay &disp, String ssid,
|
||||
Stream &log, AgStateMachine &sm);
|
||||
AgWiFiConnector(AgOledDisplay &disp, Stream &log, AgStateMachine &sm);
|
||||
~AgWiFiConnector();
|
||||
|
||||
void setHotspotSSID(String ssid);
|
||||
bool connect(uint32_t timeout);
|
||||
void setAirGradient(AirGradient *ag);
|
||||
bool connect(void);
|
||||
void handle(void);
|
||||
void _wifiApCallback(void);
|
||||
void _wifiSaveConfig(void);
|
||||
void _wifiSaveParamCallback(void);
|
||||
bool _wifiConfigPortalActive(void);
|
||||
void _wifiProcess();
|
||||
bool isConnected(void);
|
||||
};
|
||||
|
||||
#endif /** _AG_WIFI_CONNECTOR_H_ */
|
||||
|
||||
Reference in New Issue
Block a user