From 20557e019c249824f9fff1e73321bdbf74480574 Mon Sep 17 00:00:00 2001 From: admar Date: Sun, 15 May 2022 07:45:31 +0200 Subject: [PATCH] Use AQI_max and pollen_max (untested) --- Claire.ino | 85 +++++++++++------------------------------------------- 1 file changed, 17 insertions(+), 68 deletions(-) diff --git a/Claire.ino b/Claire.ino index d378a9c..4edc701 100644 --- a/Claire.ino +++ b/Claire.ino @@ -75,9 +75,7 @@ unsigned long CCS811_new_state_time = 0; Adafruit_NeoPixel leds(NUM_LEDS, DATA_PIN, NEO_GRB + NEO_KHZ800); static HTTPClient http; -//static const String baseUrlAQI = "http://luon.net:2355/forecast?formula=[\"PAQI\",\"AQI\",\"pollen\",\"UVI\"]"; -static const String baseUrlAQI = "http://target.luon.net:2356//forecast?&metrics=PAQI&metrics=AQI&metrics=pollen&metrics=UVI"; -//static const String baseUrlPrecipitation = "http://luon.net:2355/forecast?formula=[\"precipitation\"]"; +static const String baseUrlAQI = "http://target.luon.net:2356//forecast?&metrics=PAQI&metrics=UVI"; static const String baseUrlPrecipitation = "http://target.luon.net:2356//forecast?metrics=precipitation"; @@ -121,27 +119,26 @@ typedef struct RainPickerDataArray24 { float value[24]; } RainPickerDataArray24; -typedef struct RainPickerDataArray12 { - const int len = 12; - long time[12]; - float value[12]; -} RainPickerDataArray12; - typedef struct RainPickerDataArray5 { const int len = 5; long time[5]; float value[5]; } RainPickerDataArray5; +typedef struct RainPickerDataArray1 { + const int len = 1; + long time[1]; + float value[1]; +} RainPickerDataArray1; typedef struct RainpickerData { float lat; float lon; - float time; + long time; RainPickerDataArray24 PAQI; - RainPickerDataArray24 AQI; - RainPickerDataArray24 pollen; + RainPickerDataArray1 AQI_max; + RainPickerDataArray1 pollen_max; RainPickerDataArray5 UVI; RainPickerDataArray24 precipitation; } RainpickerData; @@ -176,26 +173,12 @@ void parseJson(String * payload) n = n + 1; } - n = 0; - for (JsonObject elem : doc["AQI"].as()) { - if (n >= rainpickerData.AQI.len) { - break; - } - rainpickerData.AQI.time[n] = elem["time"]; - rainpickerData.AQI.value[n] = elem["value"]; - n = n + 1; - } - - n = 0; - for (JsonObject elem : doc["pollen"].as()) { - if (n >= rainpickerData.pollen.len) { - break; - } - rainpickerData.pollen.time[n] = elem["time"]; - rainpickerData.pollen.value[n] = elem["value"]; - n = n + 1; - } - + rainpickerData.AQI_max.time[0] = doc["AQI_max"]["time"]; + rainpickerData.AQI_max.value[0] = doc["AQI_max"]["value"]; + + rainpickerData.pollen_max.time[0] = doc["pollen"]["time"]; + rainpickerData.pollen_max.value[0] = doc["pollen"]["value"]; + n = 0; for (JsonObject elem : doc["UVI"].as()) { if (n >= rainpickerData.UVI.len) { @@ -767,27 +750,7 @@ static void updateLeds(void) { } #ifdef SHOW_AQI_LED - // calculate AQI max value for next 12 hours - uint32_t AQI_max_value = 0; - //Serial.println("AQI:"); - for (n = 0; n < rainpickerData.AQI.len; n++) { - /*Serial.print(" "); - Serial.print(rainpickerData.AQI.time[n]); - Serial.print(": "); - Serial.println(rainpickerData.AQI.value[n]);*/ - if (rainpickerData.time - rainpickerData.AQI.time[n] >= 60 * 60) { - continue; - } - if (rainpickerData.AQI.time[n] >= rainpickerData.time + PAQI_NUM_LEDS * 60 * 60) { - break; - } - if (rainpickerData.AQI.value[n] > AQI_max_value) { - AQI_max_value = rainpickerData.AQI.value[n]; - } - } - //Serial.print("AQI max value: "); - //Serial.println(AQI_max_value); - color = colormap(AQI_max_value); + color = colormap(rainpickerData.AQI_max.value[0]); r = (color & 0xFF0000) >> 16; g = (color & 0x00FF00) >> 8; @@ -797,21 +760,7 @@ static void updateLeds(void) { #endif #ifdef SHOW_POLLEN_LED - // calculate pollen max value for next 12 hours - uint32_t pollen_max_value = rainpickerData.pollen.value[0]; - for (n = 0; n < rainpickerData.pollen.len; n++) { - if (rainpickerData.time - rainpickerData.pollen.time[n] >= 60 * 60) { - continue; - } - if (rainpickerData.pollen.time[n] >= rainpickerData.time + PAQI_NUM_LEDS * 60 * 60) { - break; - } - if (rainpickerData.pollen.value[n] > pollen_max_value) { - pollen_max_value = rainpickerData.pollen.value[n]; - } - } - - color = colormap(pollen_max_value); + color = colormap(rainpickerData.pollen_max.value[0]); r = (color & 0xFF0000) >> 16; g = (color & 0x00FF00) >> 8;