فهرست منبع

feat(core): implemented temp and graphic switch

sezuisa 10 ماه پیش
والد
کامیت
55405a055e
1فایلهای تغییر یافته به همراه370 افزوده شده و 65 حذف شده
  1. 370 65
      WeatherMatrix/WeatherMatrix.ino

+ 370 - 65
WeatherMatrix/WeatherMatrix.ino

@@ -4,6 +4,7 @@
 #include <ESP8266WiFi.h>
 #include <ESP8266WiFiMulti.h>
 #include <WiFiClient.h>
+#include <Array.h>
 
 #define LED_PIN  0
 
@@ -19,7 +20,7 @@
 
 const char* ssid = STASSID;
 const char* password = STAPSK;
- 
+
 // networking and json
 String apiUrl;
 int status = WL_IDLE_STATUS;
@@ -27,12 +28,17 @@ int status = WL_IDLE_STATUS;
 ESP8266WiFiMulti WiFiMulti;
 WiFiClient client;
 HTTPClient http;
+boolean tempView = false;
+int respCode = 0;
 
-unsigned long millisTime;
+unsigned long startMillis1; 
+unsigned long currentMillis1;
+unsigned long startMillis2; 
+unsigned long currentMillis2;
 boolean firstIteration = true;
 
 void connectWiFi() {
-  
+
   // We start by connecting to a WiFi network
   WiFi.mode(WIFI_STA);
   WiFiMulti.addAP(ssid, password);
@@ -58,7 +64,7 @@ String buildAPIUrl (double lat, double lon, const String& apiKey) {
   const String latStr(lat, 4);
   const String lonStr(lon, 4);
   return String("http://api.openweathermap.org/data/2.5/weather?lat=" +
-                latStr + "&lon=" + lonStr + "&appid=" + apiKey);
+                latStr + "&lon=" + lonStr + "&appid=" + apiKey + "&units=metric");
 }
 
 // Params for width and height
@@ -126,44 +132,209 @@ uint8_t cloud_yx[16][16] = {
 };
 
 uint8_t rain_yx[16][16] = {
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  {0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0},
-  {0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0},
-  {0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0},
-  {0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0},
-  {0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0},
-  {0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0},
-  {0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0},
-  {0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0},
-  {0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0},
-  {0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  {0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0},
-  {0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0},
-  {0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0},
-  {0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0}
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0},
+  {0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}
 };
 
 uint8_t cloudSun_yx[16][16] = {
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  {0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0},
-  {0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0},
-  {0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0},
-  {0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0},
-  {0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0},
-  {0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0},
-  {0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0},
-  {0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0},
-  {0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0},
-  {0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0},
-  {0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0},
-  {0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0},
-  {0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0},
-  {0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+};
+uint8_t celsius[5][16] = {
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+};
+
+uint8_t empty[11][8] = {
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 0, 0, 0, 0, 0, 0}
+};
+
+uint8_t zero[11][8] = {
+  {0, 0, 1, 1, 1, 1, 0, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 0, 0}
+};
+
+uint8_t one[11][8]  = {
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 1, 1, 0, 0, 0, 0},
+  {0, 1, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 1, 1, 1, 0, 0, 0}
+};
+
+uint8_t two[11][8] = {
+  {0, 0, 0, 0, 0, 0, 0, 0},
+  {0, 0, 1, 1, 1, 1, 0, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 0, 1, 1, 0, 0, 0},
+  {0, 0, 1, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 1, 1, 1, 1, 1, 0}
+};
+
+uint8_t three[11][8] = {
+  {0, 0, 1, 1, 1, 0, 0, 0},
+  {0, 1, 0, 0, 0, 1, 0, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 0, 1, 1, 0, 0, 0},
+  {0, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 1, 0, 0},
+  {0, 0, 1, 1, 1, 0, 0, 0}
+};
+
+uint8_t four[11][8] = {
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 1, 0, 0, 0},
+  {0, 1, 0, 0, 1, 0, 0, 0},
+  {0, 1, 0, 0, 1, 0, 0, 0},
+  {0, 1, 1, 1, 1, 1, 1, 0},
+  {0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 0, 0, 1, 0, 0, 0}
+};
+
+uint8_t five[11][8] = {
+  {0, 1, 1, 1, 1, 1, 1, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 0, 1, 1, 1, 1, 0, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 0, 0}
+};
+
+uint8_t six[11][8] = {
+  {0, 0, 1, 1, 1, 1, 0, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0},
+  {0, 1, 1, 1, 1, 1, 0, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 0, 0}
+};
+
+uint8_t seven[11][8] = {
+  {0, 1, 1, 1, 1, 1, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 0, 0, 0, 1, 0, 0},
+  {0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 0, 0, 1, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 0, 1, 0, 0, 0, 0},
+  {0, 0, 1, 0, 0, 0, 0, 0},
+  {0, 0, 1, 0, 0, 0, 0, 0},
+  {0, 1, 0, 0, 0, 0, 0, 0}
+};
+
+uint8_t eight[11][8] = {
+  {0, 0, 1, 1, 1, 1, 0, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 0, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 0, 0}
+};
+
+uint8_t nine[11][8] = {
+  {0, 0, 1, 1, 1, 1, 0, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 0, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 1, 0, 0, 0, 0, 1, 0},
+  {0, 0, 1, 1, 1, 1, 0, 0}
 };
 
-void DrawFrame(uint8_t arr[][16], String identifier)
+uint8_t (*digitOne)[8];
+
+uint8_t (*digitTwo)[8];
+
+void drawFrame(uint8_t arr[][16], String identifier)
 {
   FastLED.clear();
   FastLED.show();
@@ -182,18 +353,18 @@ void DrawFrame(uint8_t arr[][16], String identifier)
         } else if (identifier == "Sun") {
           leds[ XYsafe(i, j)]  = CRGB::Yellow;
         } else if (identifier == "CloudSun") {
-          if ((((i >= 0) && (i <= 8)) 
-          && ((j >= 0) && (j <= 2))) 
-          || 
-          (((i >= 0) && (i <= 4)) 
-          && ((j >= 0) && (j <= 15)))) {
+          if ((((i >= 0) && (i <= 8))
+               && ((j >= 0) && (j <= 2)))
+              ||
+              (((i >= 0) && (i <= 4))
+               && ((j >= 0) && (j <= 15)))) {
             leds[ XYsafe(i, j)]  = CRGB::Yellow;
             Serial.println("Yellow!");
           } else {
             leds[ XYsafe(i, j)]  = CRGB::WhiteSmoke;
             Serial.println("White!");
           }
-          
+
         }
       }
     }
@@ -201,39 +372,171 @@ void DrawFrame(uint8_t arr[][16], String identifier)
   FastLED.show();
 }
 
+void drawTemp()
+{
+  FastLED.clear();
+  FastLED.show();
+  for (int i = 0; i < 5; i++) {
+    for (int j = 0; j < 16; j++) {
+      // Celsius Symbol
+      uint8_t elemCelsius = celsius[i][j];
+      if (elemCelsius == 1) {
+        leds[ XYsafe(i, j)]  = CRGB::WhiteSmoke;
+      }
+    }
+  }
+}
+
+void drawFirstDigit(int num) {
+  for (int i = 0; i < 11; i++) {
+    for (int j = 0; j < 8; j++) {
+      uint8_t elem;
+      switch (num) {
+        case 1:
+          elem = one[i][j];
+          break;
+        case 2:
+          elem = two[i][j];
+          break;
+        case 3:
+          elem = three[i][j];
+          break;
+        case 4:
+          elem = four[i][j];
+          break;
+        case 5:
+          elem = five[i][j];
+          break;
+        case 6:
+          elem = six[i][j];
+          break;
+        case 7:
+          elem = seven[i][j];
+          break;
+        case 8:
+          elem = eight[i][j];
+          break;
+        case 9:
+          elem = nine[i][j];
+          break;
+        default:
+          elem = 0;
+          break;
+      }
+      if (elem == 1) {
+        leds[ XYsafe(i + 5, j)]  = CRGB::WhiteSmoke;
+      }
+    }
+  }
+}
+
+void drawSecondDigit(int num) {
+  for (int i = 0; i < 11; i++) {
+    for (int j = 0; j < 8; j++) {
+      uint8_t elem;
+      switch (num) {
+        case 1:
+          elem = one[i][j];
+          break;
+        case 2:
+          elem = two[i][j];
+          break;
+        case 3:
+          elem = three[i][j];
+          break;
+        case 4:
+          elem = four[i][j];
+          break;
+        case 5:
+          elem = five[i][j];
+          break;
+        case 6:
+          elem = six[i][j];
+          break;
+        case 7:
+          elem = seven[i][j];
+          break;
+        case 8:
+          elem = eight[i][j];
+          break;
+        case 9:
+          elem = nine[i][j];
+          break;
+        default:
+          elem = zero[i][j];
+          break;
+      }
+      if (elem == 1) {
+        leds[ XYsafe(i + 5, j + 8)]  = CRGB::WhiteSmoke;
+      }
+    }
+  }
+  FastLED.show();
+}
 
+int extractDigit(int num, int i)
+{
+  return num / i % 10 ;
+}
 
 void loop()
 {
-  millisTime = millis();
+  currentMillis1 = millis();
+  currentMillis2 = millis();
 
-  if (firstIteration || millisTime % 60000 == 0) {
-    int respCode = http.GET();
+  if (firstIteration || (currentMillis1 - startMillis1 >= 10000)) {
+    respCode = http.GET();
+    firstIteration = false;
+    startMillis1 = currentMillis1;
+  }
 
+  if (respCode > 0) {
     JsonDocument payload;
+    const String response = http.getString();
+    deserializeJson(payload, response);
+    if (currentMillis2 - startMillis2 >= 3000) {
+      if (tempView) {
+        Serial.print("Response: ");
+        Serial.println(response);
+
+        int temp = (int) payload["main"]["temp"];
+
+        Serial.print("Temp: ");
+        Serial.println(temp);
 
-    if(respCode > 0){
-      const String response = http.getString();
-      deserializeJson(payload, response);
+        int firstDigit = extractDigit(temp, 10);
+        int secondDigit = extractDigit(temp, 1);
 
-      if (String("Clouds") == String(payload["weather"][0]["main"])) {
-        if (payload["weather"][0]["id"] >= 803) {
-          DrawFrame(cloud_yx, "Clouds");
+        Serial.print("First digit: ");
+        Serial.println(firstDigit);
+        Serial.print("Second digit: ");
+        Serial.println(secondDigit);
+
+        drawTemp();
+        drawFirstDigit(firstDigit);
+        drawSecondDigit(secondDigit);
+      } else {
+
+        if (String("Clouds") == String(payload["weather"][0]["main"])) {
+          if (payload["weather"][0]["id"] >= 803) {
+            drawFrame(cloud_yx, "Clouds");
+          } else {
+            drawFrame(cloudSun_yx, "CloudSun");
+          }
+        } else if (String("Rain") == String(payload["weather"][0]["main"]) || String("Drizzle") == String(payload["weather"][0]["main"])) {
+          drawFrame(rain_yx, "Rain");
+        } else if (String("Clear") == String(payload["weather"][0]["main"])) {
+          drawFrame(sun_yx, "Sun");
         } else {
-          DrawFrame(cloudSun_yx, "CloudSun");
+          drawFrame(cloudSun_yx, "CloudSun");
         }
-      } else if (String("Rain") == String(payload["weather"][0]["main"]) || String("Drizzle") == String(payload["weather"][0]["main"])) {
-        DrawFrame(rain_yx, "Rain");
-      } else if (String("Clear") == String(payload["weather"][0]["main"])) {
-        DrawFrame(sun_yx, "Sun");
-      } else {
-        DrawFrame(cloudSun_yx, "CloudSun");
       }
-    } else {
-      Serial.print("error ");
-      Serial.println(respCode);
+      tempView = !tempView;
+      startMillis2 = currentMillis2;
     }
-    firstIteration = false;
+  } else {
+    Serial.print("error ");
+    Serial.println(respCode);
   }
 }
 
@@ -241,6 +544,8 @@ void loop()
 
 
 void setup() {
+  startMillis1 = millis();
+  startMillis2 = millis();
   Serial.begin(115200);
 
   // weather api
@@ -249,12 +554,12 @@ void setup() {
   const String apiKey = "e471293b25fdb6697c0a862f2695df5f";
   apiUrl = buildAPIUrl(lat, lon, apiKey);
   connectWiFi();
-  
+
   if (WiFi.status() != WL_CONNECTED) {
     Serial.println(WiFi.status());
   }
   http.begin(client, apiUrl);
-  
+
   FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalSMD5050);
   FastLED.setBrightness( BRIGHTNESS );
 }