Release v0.4.0: complete rewrite #1

Merged
admar merged 13 commits from Plus-Claire into main 2024-09-24 21:54:12 +02:00
3 changed files with 38 additions and 11 deletions
Showing only changes of commit 60d91a5def - Show all commits

View file

@ -8,16 +8,19 @@
class Display { class Display {
public: public:
// Constructor // Constructor
Display(); Display(Adafruit_NeoPixel& p_leds);
public: public:
// Public methods // Public methods
void setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_aqi, void setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_pollen,
ArduinoJson::V710PB22::JsonArray p_pollen); ArduinoJson::V710PB22::JsonArray p_aqi);
void setPrecipitationForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_precipitation); void setPrecipitationForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_precipitation);
void setUVIForecastLed(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_uvi); void setUVIForecastLed(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_uvi);
void setLocalAirQualityLed(); void setLocalAirQualityLed();
void setWifiStatusLed(bool p_enable); void setWifiStatusLed(bool p_enable);
void setPixelColor(uint32_t p_index, uint8_t p_red, uint8_t p_green, uint8_t p_blue, uint8_t p_white);
void clear();
void show();
private: private:
// Private methods // Private methods
@ -35,7 +38,7 @@ class Display {
private: private:
// Private members // Private members
Adafruit_NeoPixel m_leds; Adafruit_NeoPixel& m_leds;
std::array<uint8_t, 12U> m_precipitation_forecast_map; std::array<uint8_t, 12U> m_precipitation_forecast_map;
std::array<uint8_t, 12U> m_air_quality_forecast_map; std::array<uint8_t, 12U> m_air_quality_forecast_map;
uint8_t m_max_pollen_map; uint8_t m_max_pollen_map;

View file

@ -1,8 +1,6 @@
#include "../include/display.hpp" #include "../include/display.hpp"
Display::Display() { Display::Display(Adafruit_NeoPixel& p_leds) : m_leds(p_leds) {
// m_leds = Adafruit_NeoPixel(m_NUM_LEDS_PROTO_V1, m_DATA_PIN_PROTO_V1, NEO_RGBW + NEO_KHZ800);
m_precipitation_forecast_map = {11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; m_precipitation_forecast_map = {11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
m_air_quality_forecast_map = {23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}; m_air_quality_forecast_map = {23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
m_max_pollen_map = 26; m_max_pollen_map = 26;
@ -13,8 +11,8 @@ Display::Display() {
return; return;
} }
void Display::setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_aqi, void Display::setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_pollen,
ArduinoJson::V710PB22::JsonArray p_pollen) { ArduinoJson::V710PB22::JsonArray p_aqi) {
uint32_t first_aqi_time = p_pollen[0]["aqi"].as<uint32_t>(); uint32_t first_aqi_time = p_pollen[0]["aqi"].as<uint32_t>();
uint32_t first_pollen_time = p_pollen[0]["time"].as<uint32_t>(); uint32_t first_pollen_time = p_pollen[0]["time"].as<uint32_t>();
@ -77,6 +75,20 @@ void Display::setLocalAirQualityLed() {}
void Display::setWifiStatusLed(bool p_enable) {} void Display::setWifiStatusLed(bool p_enable) {}
void Display::setPixelColor(uint32_t p_index, uint8_t p_red, uint8_t p_green, uint8_t p_blue, uint8_t p_white) {
m_leds.setPixelColor(p_index, m_leds.Color(p_red, p_green, p_blue, p_white));
}
void Display::clear() {
m_leds.clear();
return;
}
void Display::show() {
m_leds.show();
return;
}
float Display::findMaxValueInTwelveHourInterval(uint32_t p_time_stamp, ArduinoJson::V710PB22::JsonArray p_array) { float Display::findMaxValueInTwelveHourInterval(uint32_t p_time_stamp, ArduinoJson::V710PB22::JsonArray p_array) {
float max_value = 0.0f; float max_value = 0.0f;

View file

@ -1,3 +1,4 @@
#include <Adafruit_NeoPixel.h>
#include <dESPatch.h> #include <dESPatch.h>
#include "../include/backend_communication.hpp" #include "../include/backend_communication.hpp"
@ -15,12 +16,18 @@
#define CONNECT_BUTTON BUTTON_BUILTIN #define CONNECT_BUTTON BUTTON_BUILTIN
DESPatch dESPatch; DESPatch dESPatch;
Display display;
Adafruit_NeoPixel leds = Adafruit_NeoPixel(29, 14, NEO_GRBW + NEO_KHZ800);
Display display(leds);
WifiHandler wifi_handler(LED_BUILTIN, display); WifiHandler wifi_handler(LED_BUILTIN, display);
BackendCommunication backend_communication(wifi_handler); BackendCommunication backend_communication(wifi_handler);
void setup() { void setup() {
display.clear();
display.show();
Serial.begin(115200); Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT); pinMode(LED_BUILTIN, OUTPUT);
@ -88,7 +95,12 @@ void loop(void) {
text = String(millis()) + " time: " + std::to_string(time).c_str(); text = String(millis()) + " time: " + std::to_string(time).c_str();
Serial.println(text); Serial.println(text);
// display.setUVIForecastLed(time, backend_communication.m_weather_data["UVI"].as<JsonArray>()); // display.setPollenPlusAQIForecastLeds(time, backend_communication.m_weather_data["pollen"].as<JsonArray>(),
// backend_communication.m_weather_data["AQI"].as<JsonArray>());
// display.setPrecipitationForecastLeds(time,
// backend_communication.m_weather_data["precipitation"].as<JsonArray>());
display.setUVIForecastLed(time, backend_communication.m_weather_data["UVI"].as<JsonArray>());
display.show();
} }
dESPatch.checkForUpdate(true); dESPatch.checkForUpdate(true);
delay(2000); delay(2000);