mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-01-13 15:37:03 +00:00
Implemented blinking for red LED on error
This commit is contained in:
parent
a63e6962d3
commit
e90a30bfde
@ -89,7 +89,6 @@ void setup() {
|
||||
pinMode(LEDPIN_RGB_RED, OUTPUT);
|
||||
#endif
|
||||
|
||||
// Flash the LED, to indicate we can boot as AP now
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
pinMode(AP_BUTTON_PIN, INPUT_PULLUP);
|
||||
|
||||
@ -168,6 +167,9 @@ bool even = true;
|
||||
unsigned long lastRead = 0;
|
||||
unsigned long lastSuccessfulRead = 0;
|
||||
|
||||
unsigned long lastErrorBlink = 0;
|
||||
int lastError = 0;
|
||||
|
||||
void loop() {
|
||||
unsigned long now = millis();
|
||||
if (digitalRead(AP_BUTTON_PIN) == LOW) {
|
||||
@ -196,6 +198,10 @@ void loop() {
|
||||
lastTemperatureRead = now;
|
||||
}
|
||||
|
||||
if(now > 10000 && now - lastErrorBlink > 3000) {
|
||||
errorBlink();
|
||||
}
|
||||
|
||||
// Only do normal stuff if we're not booted as AP
|
||||
if (WiFi.getMode() != WIFI_AP) {
|
||||
led_off();
|
||||
@ -228,7 +234,7 @@ void loop() {
|
||||
else led_off();
|
||||
|
||||
}
|
||||
if(lastRead-now > 100) {
|
||||
if(now - lastRead > 150) {
|
||||
yield();
|
||||
readHanPort();
|
||||
lastRead = now;
|
||||
@ -257,6 +263,34 @@ void led_off()
|
||||
#endif
|
||||
}
|
||||
|
||||
void errorBlink() {
|
||||
if(lastError == 3)
|
||||
lastError = 0;
|
||||
lastErrorBlink = millis();
|
||||
for(;lastError < 3;lastError++) {
|
||||
switch(lastError) {
|
||||
case 0:
|
||||
if(lastErrorBlink - lastSuccessfulRead > 30000) {
|
||||
rgb_led(RGB_RED, 2); // If no message received from AMS in 30 sec, blink once
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(!config.getMqttHost().isEmpty() && mqtt.lastError() != 0) {
|
||||
rgb_led(RGB_RED, 3); // If MQTT error, blink twice
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if(WiFi.getMode() != WIFI_AP && WiFi.status() != WL_CONNECTED) {
|
||||
rgb_led(RGB_RED, 4); // If WiFi not connected, blink three times
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void swapWifiMode() {
|
||||
led_on();
|
||||
WiFiMode_t mode = WiFi.getMode();
|
||||
@ -529,10 +563,14 @@ void rgb_led(int color, int mode) {
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2: //Blink
|
||||
rgb_led(color, 1);
|
||||
delay(blinkduration);
|
||||
rgb_led(color, 0);
|
||||
default: // Blink
|
||||
for(int i = 1; i < mode; i++) {
|
||||
rgb_led(color, 1);
|
||||
delay(blinkduration);
|
||||
rgb_led(color, 0);
|
||||
if(i != mode)
|
||||
delay(blinkduration);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user