mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 07:06:36 +01:00
small improvements
- added short date format definition in language.json - changed english date format to mm/dd - added lightgrey (4)/darkgrey (5)/pink (6) colors in jsontemplate (uses pattern dither) - fixed ntp init timing
This commit is contained in:
@@ -1,65 +1,65 @@
|
||||
{
|
||||
"0": {
|
||||
"language": "en",
|
||||
"daysShort": ["SU", "MO", "TU", "WE", "TH", "FR", "SA"],
|
||||
"days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
||||
"months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
|
||||
"date_format": "%d-%m-%Y"
|
||||
"daysShort": [ "SU", "MO", "TU", "WE", "TH", "FR", "SA" ],
|
||||
"days": [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
|
||||
"months": [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ],
|
||||
"date_format": [ "%m/%d/%Y", "%m/%d" ]
|
||||
},
|
||||
"1": {
|
||||
"language": "nl",
|
||||
"daysShort": ["ZO", "MA", "DI", "WO", "DO", "VR", "ZA"],
|
||||
"days": ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"],
|
||||
"months": ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
|
||||
"date_format": "%d-%m-%Y"
|
||||
"daysShort": [ "ZO", "MA", "DI", "WO", "DO", "VR", "ZA" ],
|
||||
"days": [ "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" ],
|
||||
"months": [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ],
|
||||
"date_format": [ "%d-%m-%Y", "%d-%m" ]
|
||||
},
|
||||
"2": {
|
||||
"language": "de",
|
||||
"daysShort": ["SO", "MO", "DI", "MI", "DO", "FR", "SA"],
|
||||
"days": ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
|
||||
"months": ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
|
||||
"date_format": "%d.%m.%Y"
|
||||
"daysShort": [ "SO", "MO", "DI", "MI", "DO", "FR", "SA" ],
|
||||
"days": [ "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" ],
|
||||
"months": [ "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ],
|
||||
"date_format": [ "%d.%m.%Y", "%d.%m" ]
|
||||
},
|
||||
"3": {
|
||||
"language": "no",
|
||||
"daysShort": ["SØ", "MA", "TI", "ON", "TO", "FR", "LØ"],
|
||||
"days": ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"],
|
||||
"months": ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
|
||||
"date_format": "%d-%m-%Y"
|
||||
"daysShort": [ "SØ", "MA", "TI", "ON", "TO", "FR", "LØ" ],
|
||||
"days": [ "Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag" ],
|
||||
"months": [ "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember" ],
|
||||
"date_format": [ "%d-%m-%Y", "%d-%m" ]
|
||||
},
|
||||
"5": {
|
||||
"language": "cz",
|
||||
"daysShort": ["NE", "PO", "ÚT", "ST", "ČT", "PÁ", "SO"],
|
||||
"days": ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"],
|
||||
"months": ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
|
||||
"date_format": "%d-%m-%Y"
|
||||
"daysShort": [ "NE", "PO", "ÚT", "ST", "ČT", "PÁ", "SO" ],
|
||||
"days": [ "Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota" ],
|
||||
"months": [ "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" ],
|
||||
"date_format": [ "%d-%m-%Y", "%d-%m" ]
|
||||
},
|
||||
"6": {
|
||||
"language": "sk",
|
||||
"daysShort": ["NE", "PO", "UT", "ST", "ŠT", "PI", "SO"],
|
||||
"days": ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"],
|
||||
"months": ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Oktober", "November", "December"],
|
||||
"date_format": "%d-%m-%Y"
|
||||
"daysShort": [ "NE", "PO", "UT", "ST", "ŠT", "PI", "SO" ],
|
||||
"days": [ "Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota" ],
|
||||
"months": [ "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Oktober", "November", "December" ],
|
||||
"date_format": [ "%d-%m-%Y", "%d-%m" ]
|
||||
},
|
||||
"7": {
|
||||
"language": "pl",
|
||||
"daysShort": ["Ni", "Po", "Wt", "Śr", "Cz", "Pt", "So"],
|
||||
"days": ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"],
|
||||
"months": ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
|
||||
"date_format": "%d-%m-%Y"
|
||||
"daysShort": [ "Ni", "Po", "Wt", "Śr", "Cz", "Pt", "So" ],
|
||||
"days": [ "Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota" ],
|
||||
"months": [ "Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień" ],
|
||||
"date_format": [ "%d-%m-%Y", "%d-%m" ]
|
||||
},
|
||||
"8": {
|
||||
"language": "es",
|
||||
"daysShort": ["D", "L", "MA", "MI", "J", "V", "S"],
|
||||
"days": ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"],
|
||||
"months": ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
|
||||
"date_format": "%d-%m-%Y"
|
||||
"daysShort": [ "D", "L", "MA", "MI", "J", "V", "S" ],
|
||||
"days": [ "Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado" ],
|
||||
"months": [ "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" ],
|
||||
"date_format": [ "%d-%m-%Y", "%d-%m" ]
|
||||
},
|
||||
"4": {
|
||||
"language": "fr",
|
||||
"daysShort": ["DI", "LU", "MA", "ME", "JE", "VE", "SA"],
|
||||
"days": ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
|
||||
"months": ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"],
|
||||
"date_format": "%d-%m-%Y"
|
||||
"daysShort": [ "DI", "LU", "MA", "ME", "JE", "VE", "SA" ],
|
||||
"days": [ "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" ],
|
||||
"months": [ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre" ],
|
||||
"date_format": [ "%d-%m-%Y", "%d-%m" ]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
extern String languageDaysShort[7];
|
||||
extern String languageDays[7];
|
||||
extern String languageMonth[12];
|
||||
extern String languageDateFormat;
|
||||
extern String languageDateFormat[5];
|
||||
|
||||
extern void updateLanguageFromConfig();
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ extern TFT_eSPI tft;
|
||||
struct imgParam {
|
||||
bool hasRed;
|
||||
uint8_t dataType;
|
||||
bool dither;
|
||||
uint8_t dither;
|
||||
bool grayLut = false;
|
||||
uint8_t bufferbpp = 8;
|
||||
uint8_t rotate = 0;
|
||||
|
||||
@@ -197,7 +197,7 @@ void drawNew(const uint8_t mac[8], tagRecord *&taginfo) {
|
||||
|
||||
imageParams.hasRed = false;
|
||||
imageParams.dataType = DATATYPE_IMG_RAW_1BPP;
|
||||
imageParams.dither = false;
|
||||
imageParams.dither = 0;
|
||||
if (taginfo->hasCustomLUT && taginfo->lut != 1) imageParams.grayLut = true;
|
||||
|
||||
imageParams.invert = taginfo->invert;
|
||||
@@ -232,7 +232,7 @@ void drawNew(const uint8_t mac[8], tagRecord *&taginfo) {
|
||||
configFilename = "/" + configFilename;
|
||||
}
|
||||
if (contentFS->exists(configFilename)) {
|
||||
imageParams.dither = cfgobj["dither"] && cfgobj["dither"] == "1";
|
||||
imageParams.dither = cfgobj["dither"];
|
||||
|
||||
imageParams.preload = cfgobj["preload"] && cfgobj["preload"] == "1";
|
||||
imageParams.preloadlut = cfgobj["preload_lut"];
|
||||
@@ -637,16 +637,12 @@ void drawTextBox(TFT_eSprite &spr, String &content, int16_t &posx, int16_t &posy
|
||||
bool hasspace = false;
|
||||
|
||||
while (endPos < length && spr.textWidth(content.substring(startPos, endPos + 1).c_str()) <= boxwidth && content.charAt(endPos) != '\n') {
|
||||
// Serial.println("try: " + String(startPos) + "-" + String(endPos) + " " + content.substring(startPos, endPos + 1));
|
||||
if (content.charAt(endPos) == ' ' || content.charAt(endPos) == '-') hasspace = true;
|
||||
endPos++;
|
||||
}
|
||||
while (endPos < length && endPos > startPos && hasspace == true && content.charAt(endPos - 1) != ' ' && content.charAt(endPos - 1) != '-' && content.charAt(endPos) != '\n') {
|
||||
endPos--;
|
||||
// Serial.println("backtrack: " + String(startPos) + "-" + String(endPos) + " " + content.substring(startPos, endPos));
|
||||
}
|
||||
// Serial.println("result: " + String(startPos) + "-" + String(endPos) + " " + content.substring(startPos, endPos));
|
||||
// delay(1000);
|
||||
spr.drawString(content.substring(startPos, endPos), posx, posy);
|
||||
posy += spr.gFont.yAdvance * lineheight;
|
||||
|
||||
@@ -1089,7 +1085,7 @@ char *epoch_to_display(time_t utc) {
|
||||
(local_tm.tm_year == now_tm.tm_year && local_tm.tm_mon == now_tm.tm_mon && local_tm.tm_mday < now_tm.tm_mday) ||
|
||||
(local_tm.tm_hour == 0 && local_tm.tm_min == 0) ||
|
||||
difftime(utc, now) >= 86400) {
|
||||
strftime(display, sizeof(display), "%d-%m", &local_tm);
|
||||
strftime(display, sizeof(display), languageDateFormat[1].c_str(), &local_tm);
|
||||
} else {
|
||||
strftime(display, sizeof(display), "%H:%M", &local_tm);
|
||||
}
|
||||
@@ -1113,7 +1109,7 @@ bool getCalFeed(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, imgPa
|
||||
struct tm timeinfo;
|
||||
localtime_r(&now, &timeinfo);
|
||||
char dateString[40];
|
||||
strftime(dateString, sizeof(dateString), languageDateFormat.c_str(), &timeinfo);
|
||||
strftime(dateString, sizeof(dateString), languageDateFormat[0].c_str(), &timeinfo);
|
||||
|
||||
HTTPClient http;
|
||||
// logLine("http getCalFeed " + URL);
|
||||
@@ -1200,6 +1196,8 @@ bool getCalFeed(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, imgPa
|
||||
int calYOffset = loc["gridparam"][1].as<int>();
|
||||
int lineHeight = loc["gridparam"][5].as<int>();
|
||||
|
||||
imageParams.dither = 2;
|
||||
|
||||
// drawString(spr, String(timeinfo.tm_mday), calWidth / 2, -calHeight/5, "Signika-SB.ttf", TC_DATUM, TFT_RED, calHeight * 1.2);
|
||||
|
||||
for (int i = 0; i < calDays; i++) {
|
||||
@@ -1212,19 +1210,10 @@ bool getCalFeed(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, imgPa
|
||||
spr.drawLine(colStart, calTop, colStart, calBottom, TFT_BLACK);
|
||||
drawString(spr, String(languageDaysShort[dayInfo->tm_wday]) + " " + String(dayInfo->tm_mday), colStart + colWidth / 2, calTop, loc["gridparam"][3], TC_DATUM, TFT_BLACK);
|
||||
|
||||
int grid = 3;
|
||||
if (dayInfo->tm_wday == 0 || dayInfo->tm_wday == 6) {
|
||||
for (int y = calTop + calYOffset; y < calHeight; y += 1) {
|
||||
for (int x = colStart + (y % 2); x < colStart + colWidth; x += 2) {
|
||||
spr.drawPixel(x, y, TFT_BLACK);
|
||||
}
|
||||
}
|
||||
spr.fillRect(colStart + 1, calTop + calYOffset, colWidth - 1, calHeight - 1, TFT_DARKGREY);
|
||||
} else {
|
||||
for (int y = calTop + calYOffset; y < calHeight; y += 2) {
|
||||
for (int x = colStart; x < colStart + colWidth; x += 2) {
|
||||
spr.drawPixel(x, y, TFT_BLACK);
|
||||
}
|
||||
}
|
||||
spr.fillRect(colStart + 1, calTop + calYOffset, colWidth - 1, calHeight - 1, TFT_LIGHTGREY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1268,7 +1257,6 @@ bool getCalFeed(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, imgPa
|
||||
const time_t enddatetime2 = obj2["end"];
|
||||
if (startdatetime < enddatetime2 && enddatetime > startdatetime2 &&
|
||||
line == block[j] && isallday2) {
|
||||
Serial.printf("overlap %d met %d, %d-%d met %d-%d, block[j]=%d", i, j, startdatetime, enddatetime, startdatetime2, enddatetime2, block[j]);
|
||||
overlap == true;
|
||||
line++;
|
||||
}
|
||||
@@ -1339,8 +1327,6 @@ bool getCalFeed(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, imgPa
|
||||
const time_t enddatetime2 = obj2["end"];
|
||||
if (startdatetime < enddatetime2 && enddatetime > startdatetime2 &&
|
||||
indent == block[j] && isallday2 == false) {
|
||||
Serial.println("overlap met " + String(j) + " (indent " + String(indent) + ")");
|
||||
Serial.printf("overlap %d met %d, %d-%d met %d-%d, block[j]=%d", i, j, startdatetime, enddatetime, startdatetime2, enddatetime2, block[j]);
|
||||
overlap == true;
|
||||
indent++;
|
||||
}
|
||||
@@ -1449,7 +1435,6 @@ uint8_t drawBuienradar(String &filename, JsonObject &cfgobj, tagRecord *&taginfo
|
||||
const int bars2 = bars[2].as<int>();
|
||||
|
||||
float factor = (float)bars1 / 111;
|
||||
Serial.println(factor);
|
||||
for (int i = 0; i < imageParams.width; i += 4) {
|
||||
int yCoordinates[] = {1, 20, 29, 39, 49, 55, 59};
|
||||
for (int y : yCoordinates) {
|
||||
@@ -1710,6 +1695,7 @@ void drawJsonStream(Stream &stream, String &filename, tagRecord *&taginfo, imgPa
|
||||
TFT_eSprite spr = TFT_eSprite(&tft);
|
||||
initSprite(spr, imageParams.width, imageParams.height, imageParams);
|
||||
uint8_t screenCurrentOrientation = 0;
|
||||
imageParams.dither = 2;
|
||||
DynamicJsonDocument doc(500);
|
||||
if (stream.find("[")) {
|
||||
do {
|
||||
@@ -1799,6 +1785,10 @@ uint16_t getColor(const String &color) {
|
||||
if (color == "0" || color == "white") return TFT_WHITE;
|
||||
if (color == "1" || color == "" || color == "black") return TFT_BLACK;
|
||||
if (color == "2" || color == "red") return TFT_RED;
|
||||
if (color == "3" || color == "yellow") return TFT_YELLOW;
|
||||
if (color == "4" || color == "lightgray") return TFT_LIGHTGREY;
|
||||
if (color == "5" || color == "darkgray") return TFT_DARKGREY;
|
||||
if (color == "6" || color == "pink") return TFT_PINK;
|
||||
uint16_t r, g, b;
|
||||
if (color.length() == 7 && color[0] == '#' &&
|
||||
sscanf(color.c_str(), "#%2hx%2hx%2hx", &r, &g, &b) == 3) {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
String languageDaysShort[7];
|
||||
String languageDays[7];
|
||||
String languageMonth[12];
|
||||
String languageDateFormat;
|
||||
String languageDateFormat[5];
|
||||
|
||||
int currentLanguage = 0;
|
||||
|
||||
@@ -47,6 +47,8 @@ void updateLanguageFromConfig() {
|
||||
for (int i = 0; i < 12; ++i) {
|
||||
languageMonth[i] = languageObject["months"][i].as<String>();
|
||||
}
|
||||
languageDateFormat = languageObject["date_format"].as<String>();
|
||||
for (int i = 0; i < languageObject["date_format"].size(); i++) {
|
||||
languageDateFormat[i] = languageObject["date_format"][i].as<String>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -118,11 +118,11 @@ void setup() {
|
||||
|
||||
initAPconfig();
|
||||
|
||||
xTaskCreate(initTime, "init time", 5000, NULL, 2, NULL);
|
||||
updateLanguageFromConfig();
|
||||
updateBrightnessFromConfig();
|
||||
|
||||
init_web();
|
||||
xTaskCreate(initTime, "init time", 5000, NULL, 2, NULL);
|
||||
|
||||
#ifdef HAS_RGB_LED
|
||||
rgbIdle();
|
||||
|
||||
@@ -100,14 +100,21 @@ void spr2color(TFT_eSprite &spr, imgParam &imageParams, uint8_t *buffer, size_t
|
||||
if (imageParams.invert == 1) {
|
||||
std::swap(palette[0], palette[1]);
|
||||
}
|
||||
if (imageParams.grayLut) {
|
||||
Color newColor = {160, 160, 160};
|
||||
palette.push_back(newColor);
|
||||
Color color;
|
||||
if (imageParams.dither == 2) {
|
||||
color = {128, 128, 128};
|
||||
palette.push_back(color);
|
||||
color = {211, 211, 211};
|
||||
palette.push_back(color);
|
||||
color = {255, 192, 203};
|
||||
palette.push_back(color);
|
||||
} else if (imageParams.grayLut) {
|
||||
color = {160, 160, 160};
|
||||
palette.push_back(color);
|
||||
Serial.println("rendering with gray");
|
||||
}
|
||||
int num_colors = palette.size();
|
||||
if (imageParams.bufferbpp == 1) num_colors = 2;
|
||||
Color color;
|
||||
Error *error_bufferold = new Error[bufw + 4];
|
||||
Error *error_buffernew = new Error[bufw + 4];
|
||||
|
||||
@@ -156,12 +163,22 @@ void spr2color(TFT_eSprite &spr, imgParam &imageParams, uint8_t *buffer, size_t
|
||||
buffer[byteIndex] |= (1 << bitIndex);
|
||||
break;
|
||||
case 3:
|
||||
buffer[byteIndex] |= (1 << bitIndex);
|
||||
imageParams.hasRed = true;
|
||||
if (imageParams.grayLut) {
|
||||
buffer[byteIndex] |= (1 << bitIndex);
|
||||
imageParams.hasRed = true;
|
||||
} else {
|
||||
if (!is_red && (x + y) % 2) buffer[byteIndex] |= (1 << bitIndex);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (!is_red && (x % 2 == 0) && (y % 2 == 0)) buffer[byteIndex] |= (1 << bitIndex);
|
||||
break;
|
||||
case 5:
|
||||
if (is_red && (x + y) % 2) buffer[byteIndex] |= (1 << bitIndex);
|
||||
break;
|
||||
}
|
||||
|
||||
if (imageParams.dither) {
|
||||
if (imageParams.dither == 1) {
|
||||
Error error = {
|
||||
color.r + error_bufferold[x].r - palette[best_color_index].r,
|
||||
color.g + error_bufferold[x].g - palette[best_color_index].g,
|
||||
|
||||
@@ -7,15 +7,18 @@
|
||||
|
||||
#include "storage.h"
|
||||
#include "tag_db.h"
|
||||
#include "wifimanager.h"
|
||||
|
||||
void timeSyncCallback(struct timeval* tv) {
|
||||
Serial.println("time succesfully synced");
|
||||
}
|
||||
|
||||
void initTime(void* parameter) {
|
||||
sntp_set_time_sync_notification_cb(timeSyncCallback);
|
||||
sntp_set_sync_interval(300 * 1000);
|
||||
configTzTime(config.timeZone, "nl.pool.ntp.org", "europe.pool.ntp.org", "time.nist.gov");
|
||||
if (WiFi.status() == WL_CONNECTED) {
|
||||
sntp_set_time_sync_notification_cb(timeSyncCallback);
|
||||
sntp_set_sync_interval(300 * 1000);
|
||||
configTzTime(config.timeZone, "nl.pool.ntp.org", "europe.pool.ntp.org", "time.nist.gov");
|
||||
}
|
||||
logStartUp();
|
||||
struct tm timeinfo;
|
||||
while (millis() < 30000) {
|
||||
|
||||
@@ -100,7 +100,7 @@ void wsSendSysteminfo() {
|
||||
if (day != timeinfo.tm_mday) {
|
||||
day = timeinfo.tm_mday;
|
||||
char timeBuffer[80];
|
||||
strftime(timeBuffer, sizeof(timeBuffer), languageDateFormat.c_str(), &timeinfo);
|
||||
strftime(timeBuffer, sizeof(timeBuffer), languageDateFormat[0].c_str(), &timeinfo);
|
||||
setVarDB("ap_date", timeBuffer);
|
||||
}
|
||||
setVarDB("ap_ip", WiFi.localIP().toString());
|
||||
@@ -721,9 +721,9 @@ void doImageUpload(AsyncWebServerRequest *request, String filename, size_t index
|
||||
if (hex2mac(dst, mac)) {
|
||||
tagRecord *taginfo = tagRecord::findByMAC(mac);
|
||||
if (taginfo != nullptr) {
|
||||
bool dither = true;
|
||||
uint8_t dither = 1;
|
||||
if (request->hasParam("dither", true)) {
|
||||
if (request->getParam("dither", true)->value() == "0") dither = false;
|
||||
dither = request->getParam("dither", true)->value().toInt();
|
||||
}
|
||||
uint32_t ttl = 0;
|
||||
if (request->hasParam("ttl", true)) {
|
||||
|
||||
Reference in New Issue
Block a user