From ade4378653c2b77b4f4645b4312c39537827b69a Mon Sep 17 00:00:00 2001 From: Eric Duminil <eric.duminil@gmail.com> Date: Sun, 13 Feb 2022 09:26:17 +0100 Subject: [PATCH] Cool. Rainbow wheel is back! --- ampel-firmware/ampel-firmware.h | 6 +++ ampel-firmware/ampel-firmware.ino | 71 +++++++++++++++---------------- ampel-firmware/wifi_util.cpp | 8 ++++ ampel-firmware/wifi_util.h | 1 + 4 files changed, 49 insertions(+), 37 deletions(-) diff --git a/ampel-firmware/ampel-firmware.h b/ampel-firmware/ampel-firmware.h index 06ccf22..e60b3a7 100644 --- a/ampel-firmware/ampel-firmware.h +++ b/ampel-firmware/ampel-firmware.h @@ -21,4 +21,10 @@ #include "co2_sensor.h" #include "led_effects.h" +void wifiConnected(); +void wifiFailed(); +void keepServicesAlive(); +void checkFlashButton(); +void checkSerialInput(); + #endif diff --git a/ampel-firmware/ampel-firmware.ino b/ampel-firmware/ampel-firmware.ino index 1591903..8b4bb2a 100644 --- a/ampel-firmware/ampel-firmware.ino +++ b/ampel-firmware/ampel-firmware.ino @@ -56,36 +56,6 @@ * and define your credentials and parameters in 'config.h'. */ -//void failedConnection() { -// Serial.println("Seriously. What???"); -// led_effects::showKITTWheel(color::red); -//} -// -void wifiConnected() { - led_effects::showKITTWheel(color::green); - Serial.println(); - Serial.print(F("WiFi - Connected! IP address: ")); - IPAddress address = WiFi.localIP(); - snprintf(wifi::local_ip, sizeof(wifi::local_ip), "%d.%d.%d.%d", address[0], address[1], address[2], address[3]); - Serial.println(wifi::local_ip); - - ntp::initialize(); - - if (config::mqtt_active()) { - mqtt::initialize(ampel.sensorId); - } - - Serial.print(F("You can access this sensor via http://")); - Serial.print(ampel.sensorId); - Serial.print(F(".local (might be unstable) or http://")); - Serial.println(WiFi.localIP()); -} - -void wifiFailed() { - Serial.print(F("WiFi - Could not connect to ")); - Serial.println(config::selected_ssid()); //TODO: Rename - led_effects::showKITTWheel(color::red); -} /***************************************************************** * Setup * *****************************************************************/ @@ -122,6 +92,7 @@ void setup() { if (config::wifi_active) { wifi::defineCommands(); web_server::definePages(); + wifi::tryConnection(); } #if defined(ESP32) @@ -131,13 +102,6 @@ void setup() { #endif } -/***************************************************************** - * Helper functions * - *****************************************************************/ -void keepServicesAlive(); -void checkFlashButton(); -void checkSerialInput(); - /***************************************************************** * Main loop * *****************************************************************/ @@ -189,6 +153,39 @@ void loop() { } } +/***************************************************************** + * Callbacks * + *****************************************************************/ +void wifiConnected() { + led_effects::showKITTWheel(color::green); + Serial.println(); + Serial.print(F("WiFi - Connected! IP address: ")); + IPAddress address = WiFi.localIP(); + snprintf(wifi::local_ip, sizeof(wifi::local_ip), "%d.%d.%d.%d", address[0], address[1], address[2], address[3]); + Serial.println(wifi::local_ip); + + ntp::initialize(); + + if (config::mqtt_active()) { + mqtt::initialize(ampel.sensorId); + } + + Serial.print(F("You can access this sensor via http://")); + Serial.print(ampel.sensorId); + Serial.print(F(".local (might be unstable) or http://")); + Serial.println(WiFi.localIP()); +} + +void wifiFailed() { + Serial.print(F("WiFi - Could not connect to ")); + Serial.println(config::selected_ssid()); //TODO: Rename + led_effects::showKITTWheel(color::red); +} + +/***************************************************************** + * Helper functions * + *****************************************************************/ + void checkSerialInput() { while (Serial.available() > 0) { sensor_console::processSerialInput(Serial.read()); diff --git a/ampel-firmware/wifi_util.cpp b/ampel-firmware/wifi_util.cpp index ddf12a1..5dcacfb 100644 --- a/ampel-firmware/wifi_util.cpp +++ b/ampel-firmware/wifi_util.cpp @@ -19,6 +19,14 @@ namespace wifi { return WiFi.status() == WL_CONNECTED; } + void tryConnection() { + for (int i = 0; i <= 30 && !connected(); i++) { + led_effects::showRainbowWheel(); + web_config::update(); + Serial.print("."); + } + } + void scanNetworks() { Serial.println(); Serial.println(F("WiFi - Scanning...")); diff --git a/ampel-firmware/wifi_util.h b/ampel-firmware/wifi_util.h index cfe47bb..5b9f719 100644 --- a/ampel-firmware/wifi_util.h +++ b/ampel-firmware/wifi_util.h @@ -5,6 +5,7 @@ namespace wifi { extern char local_ip[16]; void defineCommands(); bool connected(); + void tryConnection(); } #endif -- GitLab