Refactor code to use OpenWeatherMap
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/**The MIT License (MIT)
|
||||
Copyright (c) 2017 by Daniel Eichhorn
|
||||
Copyright (c) 2018 by Daniel Eichhorn
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
@@ -41,9 +41,9 @@ See more at https://blog.squix.org
|
||||
***/
|
||||
|
||||
#include <JsonListener.h>
|
||||
#include <WundergroundConditions.h>
|
||||
#include <WundergroundForecast.h>
|
||||
#include <WundergroundAstronomy.h>
|
||||
#include <OpenWeatherMapCurrent.h>
|
||||
#include <OpenWeatherMapForecast.h>
|
||||
#include <Astronomy.h>
|
||||
#include <MiniGrafx.h>
|
||||
#include <Carousel.h>
|
||||
#include <ILI9341_SPI.h>
|
||||
@@ -91,13 +91,10 @@ void calibrationCallback(int16_t x, int16_t y);
|
||||
CalibrationCallback calibration = &calibrationCallback;
|
||||
|
||||
|
||||
|
||||
WGConditions conditions;
|
||||
WGForecast forecasts[MAX_FORECASTS];
|
||||
WGAstronomy astronomy;
|
||||
|
||||
// Setup simpleDSTadjust Library rules
|
||||
OpenWeatherMapCurrentData currentWeather;
|
||||
OpenWeatherMapForecastData forecasts[MAX_FORECASTS];
|
||||
simpleDSTadjust dstAdjusted(StartRule, EndRule);
|
||||
Astronomy::MoonData moonData;
|
||||
|
||||
void updateData();
|
||||
void drawProgress(uint8_t percentage, String text);
|
||||
@@ -112,12 +109,14 @@ void drawLabelValue(uint8_t line, String label, String value);
|
||||
void drawForecastTable(uint8_t start);
|
||||
void drawAbout();
|
||||
void drawSeparator(uint16_t y);
|
||||
String getTime(time_t *timestamp);
|
||||
const char* getMeteoconIconFromProgmem(String iconText);
|
||||
const char* getMiniMeteoconIconFromProgmem(String iconText);
|
||||
void drawForecast1(MiniGrafx *display, CarouselState* state, int16_t x, int16_t y);
|
||||
void drawForecast2(MiniGrafx *display, CarouselState* state, int16_t x, int16_t y);
|
||||
FrameCallback frames[] = { drawForecast1, drawForecast2 };
|
||||
int frameCount = 2;
|
||||
void drawForecast3(MiniGrafx *display, CarouselState* state, int16_t x, int16_t y);
|
||||
FrameCallback frames[] = { drawForecast1, drawForecast2, drawForecast3 };
|
||||
int frameCount = 3;
|
||||
|
||||
// how many different screens do we have?
|
||||
int screenCount = 5;
|
||||
@@ -127,6 +126,7 @@ String moonAgeImage = "";
|
||||
uint16_t screen = 0;
|
||||
long timerPress;
|
||||
bool canBtnPress;
|
||||
time_t dstOffset = 0;
|
||||
|
||||
void connectWifi() {
|
||||
if (WiFi.status() == WL_CONNECTED) return;
|
||||
@@ -146,6 +146,8 @@ void connectWifi() {
|
||||
i+=10;
|
||||
Serial.print(".");
|
||||
}
|
||||
drawProgress(100,"Connected to WiFi '" + String(WIFI_SSID) + "'");
|
||||
Serial.print("Connected...");
|
||||
}
|
||||
|
||||
void setup() {
|
||||
@@ -165,12 +167,17 @@ void setup() {
|
||||
|
||||
connectWifi();
|
||||
|
||||
Serial.println("Initializing touch screen...");
|
||||
ts.begin();
|
||||
|
||||
|
||||
Serial.println("Mounting file system...");
|
||||
bool isFSMounted = SPIFFS.begin();
|
||||
if (!isFSMounted) {
|
||||
Serial.println("Formatting file system...");
|
||||
drawProgress(50,"Formatting file system");
|
||||
SPIFFS.format();
|
||||
}
|
||||
drawProgress(100,"Formatting done");
|
||||
//SPIFFS.remove("/calibration.txt");
|
||||
boolean isCalibrationAvailable = touchController.loadCalibration();
|
||||
if (!isCalibrationAvailable) {
|
||||
@@ -200,19 +207,28 @@ void setup() {
|
||||
|
||||
long lastDrew = 0;
|
||||
bool btnClick;
|
||||
|
||||
uint8_t MAX_TOUCHPOINTS = 10;
|
||||
TS_Point points[10];
|
||||
uint8_t currentTouchPoint = 0;
|
||||
void loop() {
|
||||
|
||||
if (touchController.isTouched(500)) {
|
||||
gfx.fillBuffer(MINI_BLACK);
|
||||
if (touchController.isTouched(0)) {
|
||||
TS_Point p = touchController.getPoint();
|
||||
|
||||
if (p.y < 80) {
|
||||
IS_STYLE_12HR = !IS_STYLE_12HR;
|
||||
} else {
|
||||
screen = (screen + 1) % screenCount;
|
||||
}
|
||||
/*points[currentTouchPoint] = p;
|
||||
currentTouchPoint = (currentTouchPoint+1) % MAX_TOUCHPOINTS;
|
||||
for (uint8_t i = 0; i < MAX_TOUCHPOINTS; i++) {
|
||||
TS_Point tsp = points[i];
|
||||
gfx.drawCircle(tsp.x -5 , tsp.y - 5, 10);
|
||||
}*/
|
||||
}
|
||||
|
||||
gfx.fillBuffer(MINI_BLACK);
|
||||
|
||||
if (screen == 0) {
|
||||
drawTime();
|
||||
drawWifiQuality();
|
||||
@@ -230,7 +246,7 @@ void loop() {
|
||||
} else if (screen == 2) {
|
||||
drawForecastTable(0);
|
||||
} else if (screen == 3) {
|
||||
drawForecastTable(6);
|
||||
drawForecastTable(4);
|
||||
} else if (screen == 4) {
|
||||
drawAbout();
|
||||
}
|
||||
@@ -263,37 +279,49 @@ void updateData() {
|
||||
|
||||
drawProgress(10, "Updating time...");
|
||||
configTime(UTC_OFFSET * 3600, 0, NTP_SERVERS);
|
||||
while(!time(nullptr)) {
|
||||
Serial.print("#");
|
||||
delay(100);
|
||||
}
|
||||
// calculate for time calculation how much the dst class adds.
|
||||
dstOffset = UTC_OFFSET * 3600 + dstAdjusted.time(nullptr) - time(nullptr);
|
||||
Serial.printf("Time difference for DST: %d", dstOffset);
|
||||
|
||||
drawProgress(50, "Updating conditions...");
|
||||
WundergroundConditions *conditionsClient = new WundergroundConditions(IS_METRIC);
|
||||
conditionsClient->updateConditions(&conditions, WUNDERGRROUND_API_KEY, WUNDERGRROUND_LANGUAGE, WUNDERGROUND_COUNTRY, WUNDERGROUND_CITY);
|
||||
delete conditionsClient;
|
||||
conditionsClient = nullptr;
|
||||
OpenWeatherMapCurrent *currentWeatherClient = new OpenWeatherMapCurrent();
|
||||
currentWeatherClient->setMetric(IS_METRIC);
|
||||
currentWeatherClient->setLanguage(OPEN_WEATHER_MAP_LANGUAGE);
|
||||
currentWeatherClient->updateCurrent(¤tWeather, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION);
|
||||
delete currentWeatherClient;
|
||||
currentWeatherClient = nullptr;
|
||||
|
||||
drawProgress(70, "Updating forecasts...");
|
||||
WundergroundForecast *forecastClient = new WundergroundForecast(IS_METRIC);
|
||||
forecastClient->updateForecast(forecasts, MAX_FORECASTS, WUNDERGRROUND_API_KEY, WUNDERGRROUND_LANGUAGE, WUNDERGROUND_COUNTRY, WUNDERGROUND_CITY);
|
||||
OpenWeatherMapForecast *forecastClient = new OpenWeatherMapForecast();
|
||||
forecastClient->setMetric(IS_METRIC);
|
||||
forecastClient->setLanguage(OPEN_WEATHER_MAP_LANGUAGE);
|
||||
uint8_t allowedHours[] = {12, 0};
|
||||
forecastClient->setAllowedHours(allowedHours, sizeof(allowedHours));
|
||||
forecastClient->updateForecasts(forecasts, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION, MAX_FORECASTS);
|
||||
delete forecastClient;
|
||||
forecastClient = nullptr;
|
||||
|
||||
drawProgress(80, "Updating astronomy...");
|
||||
WundergroundAstronomy *astronomyClient = new WundergroundAstronomy(IS_STYLE_12HR);
|
||||
astronomyClient->updateAstronomy(&astronomy, WUNDERGRROUND_API_KEY, WUNDERGRROUND_LANGUAGE, WUNDERGROUND_COUNTRY, WUNDERGROUND_CITY);
|
||||
delete astronomyClient;
|
||||
astronomyClient = nullptr;
|
||||
moonAgeImage = String((char) (65 + 26 * (((15 + astronomy.moonAge.toInt()) % 30) / 30.0)));
|
||||
|
||||
Astronomy *astronomy = new Astronomy();
|
||||
moonData = astronomy->calculateMoonData(time(nullptr));
|
||||
moonAgeImage = String((char) (65 + ((uint8_t) (26 * moonData.illumination)) % 26 ));
|
||||
delete astronomy;
|
||||
astronomy = nullptr;
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
// Progress bar helper
|
||||
void drawProgress(uint8_t percentage, String text) {
|
||||
gfx.fillBuffer(MINI_BLACK);
|
||||
gfx.drawPalettedBitmapFromPgm(23, 30, SquixLogo);
|
||||
gfx.drawPalettedBitmapFromPgm(20, 5, ThingPulseLogo);
|
||||
gfx.setFont(ArialRoundedMTBold_14);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(120, 80, "https://thingpulse.com");
|
||||
gfx.drawString(120, 90, "https://thingpulse.com");
|
||||
gfx.setColor(MINI_YELLOW);
|
||||
|
||||
gfx.drawString(120, 146, text);
|
||||
@@ -308,8 +336,8 @@ void drawProgress(uint8_t percentage, String text) {
|
||||
// draws the clock
|
||||
void drawTime() {
|
||||
|
||||
char *dstAbbrev;
|
||||
char time_str[11];
|
||||
char *dstAbbrev;
|
||||
time_t now = dstAdjusted.time(&dstAbbrev);
|
||||
struct tm * timeinfo = localtime (&now);
|
||||
|
||||
@@ -346,61 +374,60 @@ void drawTime() {
|
||||
// draws current weather information
|
||||
void drawCurrentWeather() {
|
||||
gfx.setTransparentColor(MINI_BLACK);
|
||||
gfx.drawPalettedBitmapFromPgm(0, 55, getMeteoconIconFromProgmem(conditions.weatherIcon));
|
||||
gfx.drawPalettedBitmapFromPgm(0, 55, getMeteoconIconFromProgmem(currentWeather.icon));
|
||||
// Weather Text
|
||||
|
||||
gfx.setFont(ArialRoundedMTBold_14);
|
||||
gfx.setColor(MINI_BLUE);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_RIGHT);
|
||||
gfx.drawString(220, 65, DISPLAYED_CITY_NAME);
|
||||
gfx.drawString(220, 65, currentWeather.cityName);
|
||||
|
||||
gfx.setFont(ArialRoundedMTBold_36);
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_RIGHT);
|
||||
String degreeSign = "°F";
|
||||
if (IS_METRIC) {
|
||||
degreeSign = "°C";
|
||||
}
|
||||
|
||||
String temp = conditions.currentTemp + degreeSign;
|
||||
|
||||
gfx.drawString(220, 78, temp);
|
||||
|
||||
gfx.drawString(220, 78, String(currentWeather.temp, 1) + (IS_METRIC ? "°C" : "°F"));
|
||||
|
||||
gfx.setFont(ArialRoundedMTBold_14);
|
||||
gfx.setColor(MINI_YELLOW);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_RIGHT);
|
||||
gfx.drawString(220, 118, conditions.weatherText);
|
||||
gfx.drawString(220, 118, currentWeather.description);
|
||||
|
||||
}
|
||||
|
||||
void drawForecast1(MiniGrafx *display, CarouselState* state, int16_t x, int16_t y) {
|
||||
drawForecastDetail(x + 10, y + 165, 0);
|
||||
drawForecastDetail(x + 95, y + 165, 2);
|
||||
drawForecastDetail(x + 180, y + 165, 4);
|
||||
drawForecastDetail(x + 95, y + 165, 1);
|
||||
drawForecastDetail(x + 180, y + 165, 2);
|
||||
}
|
||||
|
||||
void drawForecast2(MiniGrafx *display, CarouselState* state, int16_t x, int16_t y) {
|
||||
drawForecastDetail(x + 10, y + 165, 6);
|
||||
drawForecastDetail(x + 95, y + 165, 8);
|
||||
drawForecastDetail(x + 180, y + 165, 10);
|
||||
drawForecastDetail(x + 10, y + 165, 3);
|
||||
drawForecastDetail(x + 95, y + 165, 4);
|
||||
drawForecastDetail(x + 180, y + 165, 5);
|
||||
}
|
||||
|
||||
void drawForecast3(MiniGrafx *display, CarouselState* state, int16_t x, int16_t y) {
|
||||
drawForecastDetail(x + 10, y + 165, 6);
|
||||
drawForecastDetail(x + 95, y + 165, 7);
|
||||
drawForecastDetail(x + 180, y + 165, 8);
|
||||
}
|
||||
|
||||
// helper for the forecast columns
|
||||
void drawForecastDetail(uint16_t x, uint16_t y, uint8_t dayIndex) {
|
||||
gfx.setColor(MINI_YELLOW);
|
||||
gfx.setFont(ArialRoundedMTBold_14);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
String day = forecasts[dayIndex].forecastTitle.substring(0, 3);
|
||||
day.toUpperCase();
|
||||
gfx.drawString(x + 25, y - 15, day);
|
||||
time_t time = forecasts[dayIndex].observationTime + dstOffset;
|
||||
struct tm * timeinfo = localtime (&time);
|
||||
gfx.drawString(x + 25, y - 15, WDAY_NAMES[timeinfo->tm_wday] + " " + String(timeinfo->tm_hour) + ":00");
|
||||
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(x + 25, y, forecasts[dayIndex].forecastLowTemp + "|" + forecasts[dayIndex].forecastHighTemp);
|
||||
gfx.drawString(x + 25, y, String(forecasts[dayIndex].temp, 1) + (IS_METRIC ? "°C" : "°F"));
|
||||
|
||||
gfx.drawPalettedBitmapFromPgm(x, y + 15, getMiniMeteoconIconFromProgmem(forecasts[dayIndex].forecastIcon));
|
||||
gfx.drawPalettedBitmapFromPgm(x, y + 15, getMiniMeteoconIconFromProgmem(forecasts[dayIndex].icon));
|
||||
gfx.setColor(MINI_BLUE);
|
||||
gfx.drawString(x + 25, y + 60, forecasts[dayIndex].PoP + "%");
|
||||
gfx.drawString(x + 25, y + 60, String(forecasts[dayIndex].rain, 1) + (IS_METRIC ? "mm" : "in"));
|
||||
}
|
||||
|
||||
// draw moonphase and sunrise/set and moonrise/set
|
||||
@@ -415,20 +442,23 @@ void drawAstronomy() {
|
||||
gfx.setFont(ArialRoundedMTBold_14);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
gfx.setColor(MINI_YELLOW);
|
||||
gfx.drawString(120, 250, astronomy.moonPhase);
|
||||
gfx.drawString(120, 250, MOON_PHASES[moonData.phase]);
|
||||
|
||||
gfx.setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
gfx.setColor(MINI_YELLOW);
|
||||
gfx.drawString(5, 250, "Sun");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(5, 276, astronomy.sunriseTime);
|
||||
gfx.drawString(5, 291, astronomy.sunsetTime);
|
||||
time_t time = currentWeather.sunrise + dstOffset;
|
||||
gfx.drawString(5, 276, getTime(&time));
|
||||
time = currentWeather.sunset + dstOffset;
|
||||
gfx.drawString(5, 291, getTime(&time));
|
||||
|
||||
gfx.setTextAlignment(TEXT_ALIGN_RIGHT);
|
||||
/*gfx.setTextAlignment(TEXT_ALIGN_RIGHT);
|
||||
gfx.setColor(MINI_YELLOW);
|
||||
gfx.drawString(235, 250, "Moon");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(235, 276, astronomy.moonriseTime);
|
||||
gfx.drawString(235, 291, astronomy.moonsetTime);
|
||||
gfx.drawString(235, 291, astronomy.moonsetTime);*/
|
||||
|
||||
}
|
||||
|
||||
@@ -447,21 +477,20 @@ void drawCurrentWeatherDetail() {
|
||||
}
|
||||
// String weatherIcon;
|
||||
// String weatherText;
|
||||
drawLabelValue(0, "Temperature:", conditions.currentTemp + degreeSign);
|
||||
drawLabelValue(1, "Feels Like:", conditions.feelslike + degreeSign);
|
||||
drawLabelValue(2, "Dew Point:", conditions.dewPoint + degreeSign);
|
||||
drawLabelValue(3, "Wind Speed:", conditions.windSpeed);
|
||||
drawLabelValue(4, "Wind Dir:", conditions.windDir);
|
||||
drawLabelValue(5, "Humidity:", conditions.humidity);
|
||||
drawLabelValue(6, "Pressure:", conditions.pressure);
|
||||
drawLabelValue(7, "Precipitation:", conditions.precipitationToday);
|
||||
drawLabelValue(8, "UV:", conditions.UV);
|
||||
drawLabelValue(0, "Temperature:", currentWeather.temp + degreeSign);
|
||||
drawLabelValue(1, "Wind Speed:", String(currentWeather.windSpeed, 1) + (IS_METRIC ? "m/s" : "mph") );
|
||||
drawLabelValue(2, "Wind Dir:", String(currentWeather.windDeg, 1) + "°");
|
||||
drawLabelValue(3, "Humidity:", String(currentWeather.humidity) + "%");
|
||||
drawLabelValue(4, "Pressure:", String(currentWeather.pressure) + "hPa");
|
||||
drawLabelValue(5, "Clouds:", String(currentWeather.clouds) + "%");
|
||||
drawLabelValue(6, "Visibility:", String(currentWeather.visibility) + "m");
|
||||
|
||||
gfx.setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
|
||||
/*gfx.setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
gfx.setColor(MINI_YELLOW);
|
||||
gfx.drawString(15, 185, "Description: ");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawStringMaxWidth(15, 200, 240 - 2 * 15, forecasts[0].forecastText);
|
||||
gfx.drawStringMaxWidth(15, 200, 240 - 2 * 15, forecasts[0].forecastText);*/
|
||||
}
|
||||
|
||||
void drawLabelValue(uint8_t line, String label, String value) {
|
||||
@@ -511,48 +540,67 @@ void drawForecastTable(uint8_t start) {
|
||||
if (IS_METRIC) {
|
||||
degreeSign = "°C";
|
||||
}
|
||||
for (uint8_t i = start; i < start + 6; i++) {
|
||||
for (uint8_t i = start; i < start + 4; i++) {
|
||||
gfx.setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
y = 30 + (i - start) * 45;
|
||||
y = 45 + (i - start) * 75;
|
||||
if (y > 320) {
|
||||
break;
|
||||
}
|
||||
gfx.drawPalettedBitmapFromPgm(0, y, getMiniMeteoconIconFromProgmem(forecasts[i].forecastIcon));
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
time_t time = forecasts[i].observationTime + dstOffset;
|
||||
struct tm * timeinfo = localtime (&time);
|
||||
gfx.drawString(120, y - 15, WDAY_NAMES[timeinfo->tm_wday] + " " + String(timeinfo->tm_hour) + ":00");
|
||||
|
||||
|
||||
gfx.drawPalettedBitmapFromPgm(0, 15 + y, getMiniMeteoconIconFromProgmem(forecasts[i].icon));
|
||||
gfx.setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
gfx.setColor(MINI_YELLOW);
|
||||
gfx.setFont(ArialRoundedMTBold_14);
|
||||
|
||||
gfx.drawString(50, y, forecasts[i].forecastTitle);
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(50, y + 15, getShortText(forecasts[i].forecastIcon));
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_RIGHT);
|
||||
|
||||
String temp = "";
|
||||
if (i % 2 == 0) {
|
||||
temp = forecasts[i].forecastHighTemp;
|
||||
} else {
|
||||
temp = forecasts[i - 1].forecastLowTemp;
|
||||
}
|
||||
gfx.drawString(235, y, temp + degreeSign);
|
||||
/*gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(x + 25, y, forecasts[dayIndex].forecastLowTemp + "|" + forecasts[dayIndex].forecastHighTemp);
|
||||
|
||||
gfx.drawPalettedBitmapFromPgm(x, y + 15, getMiniMeteoconIconFromProgmem(forecasts[dayIndex].forecastIcon));*/
|
||||
gfx.drawString(10, y, forecasts[i].main);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
|
||||
gfx.setColor(MINI_BLUE);
|
||||
gfx.drawString(235, y + 15, forecasts[i].PoP + "%");
|
||||
gfx.drawString(50, y, "T:");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(70, y, String(forecasts[i].temp, 0) + degreeSign);
|
||||
|
||||
gfx.setColor(MINI_BLUE);
|
||||
gfx.drawString(50, y + 15, "H:");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(70, y + 15, String(forecasts[i].humidity) + "%");
|
||||
|
||||
gfx.setColor(MINI_BLUE);
|
||||
gfx.drawString(50, y + 30, "P: ");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(70, y + 30, String(forecasts[i].rain, 2) + (IS_METRIC ? "mm" : "in"));
|
||||
|
||||
gfx.setColor(MINI_BLUE);
|
||||
gfx.drawString(130, y, "Pr:");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(170, y, String(forecasts[i].pressure, 0) + "hPa");
|
||||
|
||||
gfx.setColor(MINI_BLUE);
|
||||
gfx.drawString(130, y + 15, "WSp:");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(170, y + 15, String(forecasts[i].windSpeed, 0) + (IS_METRIC ? "m/s" : "mph") );
|
||||
|
||||
gfx.setColor(MINI_BLUE);
|
||||
gfx.drawString(130, y + 30, "WDi: ");
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(170, y + 30, String(forecasts[i].windDeg, 0) + "°");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void drawAbout() {
|
||||
gfx.fillBuffer(MINI_BLACK);
|
||||
gfx.drawPalettedBitmapFromPgm(23, 30, SquixLogo);
|
||||
gfx.drawPalettedBitmapFromPgm(20, 5, ThingPulseLogo);
|
||||
|
||||
gfx.setFont(ArialRoundedMTBold_14);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
gfx.setColor(MINI_WHITE);
|
||||
gfx.drawString(120, 80, "https://thingpulse.com");
|
||||
gfx.drawString(120, 90, "https://thingpulse.com");
|
||||
|
||||
gfx.setFont(ArialRoundedMTBold_14);
|
||||
gfx.setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
@@ -583,3 +631,11 @@ void calibrationCallback(int16_t x, int16_t y) {
|
||||
gfx.fillCircle(x, y, 10);
|
||||
}
|
||||
|
||||
String getTime(time_t *timestamp) {
|
||||
struct tm *timeInfo = gmtime(timestamp);
|
||||
|
||||
char buf[6];
|
||||
sprintf(buf, "%02d:%02d", timeInfo->tm_hour, timeInfo->tm_min);
|
||||
return String(buf);
|
||||
}
|
||||
|
||||
|
||||
40
settings.h
40
settings.h
@@ -40,22 +40,32 @@ const int SLEEP_INTERVAL_SECS = 0; // Going to Sleep after idle times, set 0 f
|
||||
|
||||
|
||||
|
||||
// Wunderground Settings
|
||||
// To check your settings first try them out in your browser:
|
||||
// http://api.wunderground.com/api/WUNDERGROUND_API_KEY/conditions/q/WUNDERGROUND_COUNTTRY/WUNDERGROUND_CITY.json
|
||||
// e.g. http://api.wunderground.com/api/808ba87ed77c4511/conditions/q/CH/Zurich.json
|
||||
// e.g. http://api.wunderground.com/api/808ba87ed77c4511/conditions/q/CA/SAN_FRANCISCO.json <- note that in the US you use the state instead of country code
|
||||
// If you want to have control over the exact weather station ("observation location") that WU uses you need to replace
|
||||
// the city with "pws:STATION_ID". So, for the Aquatic Park in San Francisco you'd use "pws:KCASANFR359".
|
||||
// Alternative query options are documented at https://www.wunderground.com/weather/api/d/docs?d=data/index&MR=1#standard_request_url_format
|
||||
// OpenWeatherMap Settings
|
||||
// Sign up here to get an API key:
|
||||
// https://home.openweathermap.org/users/sign_up
|
||||
const boolean IS_METRIC = true;
|
||||
String OPEN_WEATHER_MAP_APP_ID = "6bdd4d9d45a97d690103477a4c67c38f";
|
||||
String OPEN_WEATHER_MAP_LOCATION = "Zurich,CH";
|
||||
|
||||
const String DISPLAYED_CITY_NAME = "Zurich";
|
||||
const String WUNDERGRROUND_API_KEY = "<YOUR_WUNDERGROUND_API_KEY>";
|
||||
const String WUNDERGRROUND_LANGUAGE = "EN"; // as per https://www.wunderground.com/weather/api/d/docs?d=resources/country-to-iso-matching
|
||||
const String WUNDERGROUND_COUNTRY = "CH";
|
||||
const String WUNDERGROUND_CITY = "Zurich";
|
||||
// Pick a language code from this list:
|
||||
// Arabic - ar, Bulgarian - bg, Catalan - ca, Czech - cz, German - de, Greek - el,
|
||||
// English - en, Persian (Farsi) - fa, Finnish - fi, French - fr, Galician - gl,
|
||||
// Croatian - hr, Hungarian - hu, Italian - it, Japanese - ja, Korean - kr,
|
||||
// Latvian - la, Lithuanian - lt, Macedonian - mk, Dutch - nl, Polish - pl,
|
||||
// Portuguese - pt, Romanian - ro, Russian - ru, Swedish - se, Slovak - sk,
|
||||
// Slovenian - sl, Spanish - es, Turkish - tr, Ukrainian - ua, Vietnamese - vi,
|
||||
// Chinese Simplified - zh_cn, Chinese Traditional - zh_tw.
|
||||
|
||||
#define UTC_OFFSET + 1
|
||||
String OPEN_WEATHER_MAP_LANGUAGE = "en";
|
||||
const uint8_t MAX_FORECASTS = 10;
|
||||
|
||||
// Adjust according to your language
|
||||
const String WDAY_NAMES[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
|
||||
const String MONTH_NAMES[] = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
|
||||
const String MOON_PHASES[] = {"New Moon", "Waxing Crescent", "First Quarter", "Waxing Gibbous",
|
||||
"Full Moon", "Waning Gibbous", "Third quarter", "Waning Crescent"};
|
||||
|
||||
#define UTC_OFFSET +1
|
||||
struct dstRule StartRule = {"CEST", Last, Sun, Mar, 2, 3600}; // Central European Summer Time = UTC/GMT +2 hours
|
||||
struct dstRule EndRule = {"CET", Last, Sun, Oct, 2, 0}; // Central European Time = UTC/GMT +1 hour
|
||||
|
||||
@@ -64,8 +74,6 @@ struct dstRule EndRule = {"CET", Last, Sun, Oct, 2, 0}; // Central Europea
|
||||
// struct dstRule StartRule = {"EDT", Second, Sun, Mar, 2, 3600}; // Eastern Daylight time = UTC/GMT -4 hours
|
||||
// struct dstRule EndRule = {"EST", First, Sun, Nov, 1, 0}; // Eastern Standard time = UTC/GMT -5 hour
|
||||
|
||||
// values in metric or imperial system?
|
||||
bool IS_METRIC = true;
|
||||
|
||||
// Change for 12 Hour/ 24 hour style clock
|
||||
bool IS_STYLE_12HR = false;
|
||||
|
||||
379
weathericons.h
379
weathericons.h
@@ -1,10 +1,141 @@
|
||||
|
||||
const char SquixLogo[] PROGMEM = {
|
||||
const char ThingPulseLogo[] PROGMEM = {
|
||||
0x01, // Version: 1
|
||||
0x02, // BitDepth: 2
|
||||
0x00, 0xC1, // Width: 193
|
||||
0x00, 0x38, // Height: 56
|
||||
0x00, 0xC8, // Width: 200
|
||||
0x00, 0x50, // Height: 80
|
||||
// Round width to next byte: 200
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA,
|
||||
0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA0,
|
||||
0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xA0, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0,
|
||||
0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xA0, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xA0,
|
||||
0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xA0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xA0,
|
||||
0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xA0, 0x00,
|
||||
0x0A, 0xAA, 0xAA, 0xAA, 0x80, 0x02, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xA0, 0x0A, 0xAA, 0xAA, 0xAA, 0x00,
|
||||
0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0x80, 0x00, 0x00,
|
||||
0x00, 0x02, 0xAA, 0xAA, 0xA0, 0x2A, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xA0, 0x2A, 0xAA, 0xAA, 0x00, 0x00,
|
||||
0x0F, 0xF0, 0x00, 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x0A, 0xAA, 0x80, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0x82, 0xAA, 0xAA, 0xA0, 0x00, 0x00,
|
||||
0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xAA, 0x02, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x0A, 0xAA, 0xAA, 0x00, 0x00, 0x00,
|
||||
0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x28, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0xAA, 0xA0, 0x00, 0x00, 0x00,
|
||||
0x0F, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x2A, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x3F, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x03,
|
||||
0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x0F,
|
||||
0xFF, 0xF0, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x03,
|
||||
0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x02, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x2A, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA0, 0x28, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xA0, 0xAA, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x02, 0xAA, 0xAA, 0x80, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0x82, 0xAA, 0xA0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x2A, 0xAA, 0xAA, 0x02, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xA8, 0x0A, 0xAA, 0xAA, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xA0, 0x00, 0x00,
|
||||
0x00, 0x0A, 0xAA, 0xAA, 0xA8, 0x0A, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xA0, 0x02, 0xAA, 0xAA, 0xAA, 0x80,
|
||||
0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA,
|
||||
0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -22,118 +153,6 @@ const char SquixLogo[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50,
|
||||
0x15, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x15, 0x55, 0x50, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x05, 0x55, 0x55, 0x40, 0x00, 0x00, 0x01, 0x55, 0x55, 0x50, 0x00,
|
||||
0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x01, 0x55,
|
||||
0x55, 0x50, 0x00, 0x00, 0x05, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x55, 0x55, 0x50, 0x00, 0x00, 0x15, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x00, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x15, 0x55, 0x54,
|
||||
0x00, 0x00, 0x15, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
|
||||
0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x05, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40,
|
||||
0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x05, 0x55, 0x55, 0x40, 0x01,
|
||||
0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54,
|
||||
0x05, 0x55, 0x50, 0x00, 0x01, 0x55, 0x55, 0x50, 0x05, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x40, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x50, 0x15, 0x55,
|
||||
0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x55, 0x55, 0x54, 0x15, 0x55, 0x55,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55,
|
||||
0x50, 0x00, 0x00, 0x15, 0x55, 0x54, 0x15, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x40, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x15, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00,
|
||||
0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x55, 0x00, 0x01, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x55, 0x40,
|
||||
0x01, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x00,
|
||||
0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40,
|
||||
0x00, 0x55, 0x55, 0x00, 0x15, 0x05, 0x55, 0x55, 0x50, 0x01, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x00, 0x14, 0x01, 0x55, 0x55, 0x54, 0x01, 0x55,
|
||||
0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x00, 0x05, 0x55,
|
||||
0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x55,
|
||||
0x55, 0x00, 0x14, 0x01, 0x55, 0x55, 0x55, 0x01, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55,
|
||||
0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x15, 0x05, 0x55, 0x55, 0x55, 0x41, 0x55, 0x50, 0x15,
|
||||
0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x50,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00,
|
||||
0x15, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05,
|
||||
0x55, 0x50, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x55, 0x55, 0x00, 0x15, 0x54, 0x15, 0x55, 0x55, 0x54, 0x15, 0x50, 0x15, 0x55, 0x50,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x55, 0x55, 0x00, 0x15, 0x51,
|
||||
0x40, 0x00, 0x00, 0x00, 0x05, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50,
|
||||
0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x15, 0x55, 0x40, 0x55, 0x55, 0x00, 0x15, 0x51, 0x45, 0x55, 0x55, 0x55, 0x41, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x40, 0x55, 0x55, 0x00, 0x15, 0x54, 0x14, 0x15,
|
||||
0x55, 0x55, 0x50, 0x50, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00,
|
||||
0x05, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
|
||||
0x55, 0x40, 0x55, 0x55, 0x00, 0x15, 0x55, 0x51, 0x40, 0x00, 0x00, 0x00, 0x10, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x40, 0x55, 0x55, 0x40, 0x15, 0x55, 0x51, 0x45, 0x55, 0x55,
|
||||
0x55, 0x00, 0x05, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x00, 0x55, 0x55,
|
||||
0x54, 0x15, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x40,
|
||||
0x15, 0x55, 0x50, 0x15, 0x55, 0x54, 0x15, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
|
||||
0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x01, 0x55, 0x55, 0x50, 0x05, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x15, 0x55, 0x54, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50,
|
||||
0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x00, 0x05, 0x55, 0x55, 0x40, 0x01,
|
||||
0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55,
|
||||
0x54, 0x15, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50,
|
||||
0x05, 0x55, 0x50, 0x00, 0x05, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x05, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x15, 0x55, 0x55, 0x55, 0x01, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x05, 0x55, 0x50, 0x00, 0x15, 0x55, 0x54, 0x00, 0x00, 0x15, 0x55,
|
||||
0x54, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x01, 0x55, 0x55, 0x41,
|
||||
0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55,
|
||||
0x50, 0x00, 0x55, 0x55, 0x54, 0x00, 0x00, 0x15, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x55, 0x55, 0x50, 0x55, 0x54, 0x11, 0x41, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x50, 0x01, 0x55, 0x55, 0x50, 0x00, 0x00, 0x05, 0x55, 0x55, 0x40,
|
||||
0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x15, 0x55, 0x54, 0x15, 0x51,
|
||||
0x45, 0x14, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x05, 0x55, 0x50, 0x05,
|
||||
0x55, 0x55, 0x40, 0x00, 0x00, 0x01, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x05, 0x51, 0x45, 0x14, 0x55, 0x05, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x50, 0x00, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x54, 0x00, 0x00,
|
||||
0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x01, 0x54, 0x15, 0x41,
|
||||
0x54, 0x50, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x01, 0x55, 0x50, 0x15, 0x55, 0x54,
|
||||
0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x54, 0x51, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x05,
|
||||
0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x05, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x40,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -145,6 +164,46 @@ const char SquixLogo[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF,
|
||||
0xFF, 0xFF, 0xFC, 0x0A, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x0A, 0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x3F,
|
||||
0xC0, 0x3F, 0xC0, 0xFF, 0xC0, 0x00, 0x3F, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, 0xFC, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x0A,
|
||||
0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, 0xFF, 0xF0, 0x00, 0x3F, 0xC0, 0x0F, 0xFF,
|
||||
0xFF, 0xFF, 0xFC, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x0A, 0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00,
|
||||
0x2A, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x3F,
|
||||
0xC0, 0x3F, 0xC0, 0xFF, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFC, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x0A,
|
||||
0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, 0xFF, 0xFF, 0x00, 0x3F, 0xC0, 0x3F, 0xC0,
|
||||
0x00, 0x00, 0x00, 0x0A, 0xA0, 0x00, 0x00, 0x0A, 0xA0, 0x0A, 0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00,
|
||||
0x2A, 0x80, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F,
|
||||
0xC0, 0x3F, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x0A, 0xA0, 0x00, 0x00, 0x0A, 0xA0, 0x0A,
|
||||
0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xC0, 0xFF, 0x3F, 0xF0, 0x3F, 0xC0, 0x3F, 0xC0,
|
||||
0x0F, 0xFF, 0xF0, 0x0A, 0xA0, 0x00, 0x00, 0x0A, 0xA0, 0x0A, 0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00,
|
||||
0x2A, 0xAA, 0xAA, 0xAA, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xC0, 0x3F, 0xC0, 0xFF, 0x0F, 0xFC, 0x3F, 0xC0, 0x3F, 0xC0, 0x0F, 0xFF, 0xFC, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x0A,
|
||||
0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0xA0, 0x02, 0xAA, 0xAA, 0xAA, 0xA8,
|
||||
0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0x3F, 0xC0, 0x3F, 0xC0,
|
||||
0x0F, 0xFF, 0xFC, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x0A, 0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00,
|
||||
0x0A, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xC0, 0x3F, 0xC0, 0xFF, 0x00, 0xFF, 0x3F, 0xC0, 0x3F, 0xC0, 0x0F, 0xFF, 0xFC, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x0A,
|
||||
0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xA8,
|
||||
0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0x3F, 0xC0,
|
||||
0x00, 0x03, 0xFC, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x0A, 0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x02, 0xA8, 0x02, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F,
|
||||
0xC0, 0x3F, 0xC0, 0xFF, 0x00, 0x3F, 0xFF, 0xC0, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x0A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A,
|
||||
0xA0, 0x00, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x02, 0xA8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF,
|
||||
0xFF, 0xFF, 0xFC, 0x0A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x2A, 0xAA, 0xAA, 0xAA, 0x80,
|
||||
0x0A, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F,
|
||||
0xC0, 0x3F, 0xC0, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFC, 0x0A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A,
|
||||
0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x2A, 0xAA, 0xAA, 0xAA, 0x80, 0x2A, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x0F, 0xFF,
|
||||
0xFF, 0xFF, 0xFC, 0x0A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0x80,
|
||||
0x2A, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F,
|
||||
0xC0, 0x3F, 0xC0, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x0A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0x80, 0x2A, 0xAA, 0xAA, 0xAA, 0x80, 0x02, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
};
|
||||
const char chanceflurries[] PROGMEM = {
|
||||
0x01, // Version: 1
|
||||
@@ -3710,80 +3769,30 @@ const char miniunknown[] PROGMEM = {
|
||||
|
||||
// Helper function, should be part of the weather station library and should disappear soon
|
||||
const char* getMeteoconIconFromProgmem(String iconText) {
|
||||
|
||||
if (iconText == "chanceflurries") return chanceflurries;
|
||||
if (iconText == "chancerain") return chancerain;
|
||||
if (iconText == "chancesleet") return chancesleet;
|
||||
if (iconText == "chancesnow") return chancesnow;
|
||||
if (iconText == "chancetstorms") return chancestorms;
|
||||
if (iconText == "clear") return clear;
|
||||
if (iconText == "cloudy") return cloudy;
|
||||
if (iconText == "flurries") return flurries;
|
||||
if (iconText == "fog") return fog;
|
||||
if (iconText == "hazy") return hazy;
|
||||
if (iconText == "mostlycloudy") return mostlycloudy;
|
||||
if (iconText == "mostlysunny") return mostlysunny;
|
||||
if (iconText == "partlycloudy") return partlycloudy;
|
||||
if (iconText == "partlysunny") return partlysunny;
|
||||
if (iconText == "sleet") return sleet;
|
||||
if (iconText == "rain") return rain;
|
||||
if (iconText == "snow") return snow;
|
||||
if (iconText == "sunny") return sunny;
|
||||
if (iconText == "tstorms") return tstorms;
|
||||
|
||||
|
||||
if (iconText == "01d" || iconText == "01n") return sunny;
|
||||
if (iconText == "02d" || iconText == "02n") return partlysunny;
|
||||
if (iconText == "03d" || iconText == "03n") return partlycloudy;
|
||||
if (iconText == "04d" || iconText == "04n") return mostlycloudy;
|
||||
if (iconText == "09d" || iconText == "09n") return rain;
|
||||
if (iconText == "10d" || iconText == "10n") return rain;
|
||||
if (iconText == "11d" || iconText == "11n") return tstorms;
|
||||
if (iconText == "13d" || iconText == "13n") return snow;
|
||||
if (iconText == "50d" || iconText == "50n") return fog;
|
||||
return unknown;
|
||||
}
|
||||
const char* getMiniMeteoconIconFromProgmem(String iconText) {
|
||||
if (iconText == "chanceflurries") return minichanceflurries;
|
||||
if (iconText == "chancerain") return minichancerain;
|
||||
if (iconText == "chancesleet") return minichancesleet;
|
||||
if (iconText == "chancesnow") return minichancesnow;
|
||||
if (iconText == "chancetstorms") return minichancestorms;
|
||||
if (iconText == "clear") return miniclear;
|
||||
if (iconText == "cloudy") return minicloudy;
|
||||
if (iconText == "flurries") return miniflurries;
|
||||
if (iconText == "fog") return minifog;
|
||||
if (iconText == "hazy") return minihazy;
|
||||
if (iconText == "mostlycloudy") return minimostlycloudy;
|
||||
if (iconText == "mostlysunny") return minimostlysunny;
|
||||
if (iconText == "partlycloudy") return minipartlycloudy;
|
||||
if (iconText == "partlysunny") return minipartlysunny;
|
||||
if (iconText == "sleet") return minisleet;
|
||||
if (iconText == "rain") return minirain;
|
||||
if (iconText == "snow") return minisnow;
|
||||
if (iconText == "sunny") return minisunny;
|
||||
if (iconText == "tstorms") return minitstorms;
|
||||
|
||||
|
||||
if (iconText == "01d" || iconText == "01n") return minisunny;
|
||||
if (iconText == "02d" || iconText == "02n") return minipartlysunny;
|
||||
if (iconText == "03d" || iconText == "03n") return minipartlycloudy;
|
||||
if (iconText == "04d" || iconText == "04n") return minimostlycloudy;
|
||||
if (iconText == "09d" || iconText == "09n") return minirain;
|
||||
if (iconText == "10d" || iconText == "10n") return minirain;
|
||||
if (iconText == "11d" || iconText == "11n") return minitstorms;
|
||||
if (iconText == "13d" || iconText == "13n") return minisleet;
|
||||
if (iconText == "50d" || iconText == "50n") return minifog;
|
||||
return miniunknown;
|
||||
}
|
||||
// Helper function, should be part of the weather station library and should disappear soon
|
||||
const String getShortText(String iconText) {
|
||||
|
||||
if (iconText == "chanceflurries") return "Chance of Flurries";
|
||||
if (iconText == "chancerain") return "Chance of Rain";
|
||||
if (iconText == "chancesleet") return "Chance of Sleet";
|
||||
if (iconText == "chancesnow") return "Chance of Snow";
|
||||
if (iconText == "chancetstorms") return "Chance of Storms";
|
||||
if (iconText == "clear") return "Clear";
|
||||
if (iconText == "cloudy") return "Cloudy";
|
||||
if (iconText == "flurries") return "Flurries";
|
||||
if (iconText == "fog") return "Fog";
|
||||
if (iconText == "hazy") return "Hazy";
|
||||
if (iconText == "mostlycloudy") return "Mostly Cloudy";
|
||||
if (iconText == "mostlysunny") return "Mostly Sunny";
|
||||
if (iconText == "partlycloudy") return "Partly Couldy";
|
||||
if (iconText == "partlysunny") return "Partly Sunny";
|
||||
if (iconText == "sleet") return "Sleet";
|
||||
if (iconText == "rain") return "Rain";
|
||||
if (iconText == "snow") return "Snow";
|
||||
if (iconText == "sunny") return "Sunny";
|
||||
if (iconText == "tstorms") return "Storms";
|
||||
|
||||
|
||||
return "-";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user