diff --git a/esp32_fw/data/fonts/bahnschrift20.vlw b/esp32_fw/data/fonts/bahnschrift20.vlw
new file mode 100644
index 00000000..8a8ea9df
Binary files /dev/null and b/esp32_fw/data/fonts/bahnschrift20.vlw differ
diff --git a/esp32_fw/data/www/main.js b/esp32_fw/data/www/main.js
index efeb6282..5d0276da 100644
--- a/esp32_fw/data/www/main.js
+++ b/esp32_fw/data/www/main.js
@@ -122,6 +122,7 @@ function processTags(tagArray) {
div.dataset.lastseen = element.lastseen;
div.dataset.hash = element.hash;
$('#tag' + tagmac + ' .warningicon').style.display = 'none';
+ $('#tag' + tagmac).style.background = "inherit";
$('#tag' + tagmac + ' .pendingicon').style.display = (element.pending ? 'inline-block' : 'none');
div.classList.add("tagflash");
(function(tagmac) {
@@ -138,7 +139,10 @@ function updatecards() {
if (item.dataset.lastseen && item.dataset.lastseen > 1672531200) {
let idletime = (Date.now() / 1000) + servertimediff - item.dataset.lastseen;
$('#tag' + tagmac + ' .lastseen').innerHTML = "last seen"+displayTime(Math.floor(idletime))+" ago";
- if ((Date.now() / 1000) + servertimediff > item.dataset.nextcheckin) $('#tag' + tagmac + ' .warningicon').style.display='inline-block';
+ if ((Date.now() / 1000) + servertimediff > item.dataset.nextcheckin) {
+ $('#tag' + tagmac + ' .warningicon').style.display='inline-block';
+ $('#tag' + tagmac).style.background = '#ffffcc';
+ }
if (idletime > 24*3600) {
$('#tag' + tagmac).style.opacity = '.5';
$('#tag' + tagmac + ' .lastseen').style.color = "red";
diff --git a/esp32_fw/include/contentmanager.h b/esp32_fw/include/contentmanager.h
index df034aeb..02b58235 100644
--- a/esp32_fw/include/contentmanager.h
+++ b/esp32_fw/include/contentmanager.h
@@ -9,7 +9,7 @@
void contentRunner();
void drawNew(uint8_t mac[8], bool buttonPressed, tagRecord *&taginfo);
bool updateTagImage(String &filename, uint8_t *dst, uint16_t nextCheckin);
-void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, String font, uint16_t color = TFT_BLACK);
+void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, String font, byte align = 0, uint16_t color = TFT_BLACK);
void initSprite(TFT_eSprite &spr, int w, int h);
void drawDate(String &filename, tagRecord *&taginfo);
void drawNumber(String &filename, int32_t count, int32_t thresholdred, tagRecord *&taginfo);
diff --git a/esp32_fw/src/contentmanager.cpp b/esp32_fw/src/contentmanager.cpp
index 1d15f902..a4c08405 100644
--- a/esp32_fw/src/contentmanager.cpp
+++ b/esp32_fw/src/contentmanager.cpp
@@ -20,14 +20,14 @@ void contentRunner() {
tagRecord* taginfo = nullptr;
taginfo = tagDB.at(c);
- if (now >= taginfo->nextupdate || taginfo->wakeupReason == WAKEUP_REASON_GPIO) {
+ if (taginfo->RSSI && (now >= taginfo->nextupdate || taginfo->wakeupReason == WAKEUP_REASON_GPIO)) {
uint8_t mac8[8] = {0, 0, 0, 0, 0, 0, 0, 0};
memcpy(mac8 + 2, taginfo->mac, 6);
uint8_t src[8];
*((uint64_t *)src) = swap64(*((uint64_t *)mac8));
drawNew(src, (taginfo->wakeupReason == WAKEUP_REASON_GPIO), taginfo);
- taginfo->wakeupReason == 0;
+ taginfo->wakeupReason = 0;
}
}
}
@@ -56,9 +56,9 @@ void drawNew(uint8_t mac[8], bool buttonPressed, tagRecord *&taginfo) {
deserializeJson(doc, taginfo->modeConfigJson);
JsonObject cfgobj = doc.as();
- wsLog("Updating " + dst + " mode " + String(taginfo->contentMode));
+ wsLog("Updating " + dst);
taginfo->nextupdate = now + 600;
-
+
switch (taginfo->contentMode) {
case Image:
@@ -77,7 +77,7 @@ void drawNew(uint8_t mac[8], bool buttonPressed, tagRecord *&taginfo) {
drawDate(filename, taginfo);
// updateTagImage(filename, mac, (midnight - now) / 60 - 10);
- updateTagImage(filename, mac, 0);
+ updateTagImage(filename, mac, 600);
taginfo->nextupdate = midnight;
break;
@@ -85,7 +85,7 @@ void drawNew(uint8_t mac[8], bool buttonPressed, tagRecord *&taginfo) {
if (buttonPressed) cfgobj["counter"] = 0;
drawNumber(filename, (int32_t)cfgobj["counter"], (int32_t)cfgobj["thresholdred"], taginfo);
- updateTagImage(filename, mac, (buttonPressed?0:60));
+ updateTagImage(filename, mac, (buttonPressed?0:600));
cfgobj["counter"] = (int32_t)cfgobj["counter"] + 1;
taginfo->nextupdate = midnight;
break;
@@ -96,7 +96,7 @@ void drawNew(uint8_t mac[8], bool buttonPressed, tagRecord *&taginfo) {
drawNumber(filename, (int32_t)cfgobj["counter"], (int32_t)cfgobj["thresholdred"], taginfo);
// updateTagImage(&filename, mac, (3600 - now % 3600) / 60);
// taginfo->nextupdate = now + 3600 - (now % 3600);
- updateTagImage(filename, mac, (buttonPressed?0:3));
+ updateTagImage(filename, mac, (buttonPressed?0:600));
cfgobj["counter"] = (int32_t)cfgobj["counter"] + 1;
taginfo->nextupdate = now + 3600;
break;
@@ -109,8 +109,8 @@ void drawNew(uint8_t mac[8], bool buttonPressed, tagRecord *&taginfo) {
// https://github.com/erikflowers/weather-icons
drawWeather(filename, cfgobj["location"], taginfo);
- updateTagImage(filename, mac, 0);
- taginfo->nextupdate = now + 1800;
+ updateTagImage(filename, mac, 600);
+ taginfo->nextupdate = now + 3600;
break;
case Firmware:
@@ -134,7 +134,7 @@ void drawNew(uint8_t mac[8], bool buttonPressed, tagRecord *&taginfo) {
drawIdentify(filename, taginfo);
updateTagImage(filename, mac, 0);
- taginfo->nextupdate = now + 600;
+ taginfo->nextupdate = now + 24*3600;
break;
case ImageUrl:
@@ -155,12 +155,12 @@ bool updateTagImage(String &filename, uint8_t *dst, uint16_t nextCheckin) {
return true;
}
-void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, String font, uint16_t color) {
- // drawString(spr,"test",100,10,"bahnschrift30",TFT_RED);
+void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, String font, byte align,uint16_t color) {
+ // drawString(spr,"test",100,10,"bahnschrift30",TC_DATUM,TFT_RED);
+ spr.setTextDatum(align);
spr.loadFont(font, LittleFS);
spr.setTextColor(color, TFT_WHITE);
- spr.setCursor(posx, posy);
- spr.printToSprite(content);
+ spr.drawString(content, posx, posy);
spr.unloadFont();
}
@@ -192,18 +192,15 @@ void drawDate(String &filename, tagRecord *&taginfo) {
if (taginfo->hwType == SOLUM_29_033) {
initSprite(spr,296,128);
- spr.setTextDatum(TC_DATUM);
- drawString(spr, Dag[timeinfo.tm_wday], 296 / 2, 10, "fonts/calibrib62", TFT_RED);
- drawString(spr, String(timeinfo.tm_mday) + " " + Maand[timeinfo.tm_mon], 296 / 2, 73, "fonts/calibrib50");
+ drawString(spr, Dag[timeinfo.tm_wday], 296 / 2, 10, "fonts/calibrib62", TC_DATUM, TFT_RED);
+ drawString(spr, String(timeinfo.tm_mday) + " " + Maand[timeinfo.tm_mon], 296 / 2, 73, "fonts/calibrib50", TC_DATUM);
} else if (taginfo->hwType == SOLUM_154_033) {
initSprite(spr, 154, 154);
- spr.setTextDatum(TC_DATUM);
- drawString(spr, Dag[timeinfo.tm_wday], 154 / 2, 10, "fonts/calibrib30");
- drawString(spr, String(Maand[timeinfo.tm_mon]), 154 / 2, 120, "fonts/calibrib30");
- drawString(spr, String(timeinfo.tm_mday), 154 / 2, 42, "fonts/numbers2-1", TFT_RED);
-
+ drawString(spr, Dag[timeinfo.tm_wday], 154 / 2, 10, "fonts/calibrib30", TC_DATUM);
+ drawString(spr, String(Maand[timeinfo.tm_mon]), 154 / 2, 120, "fonts/calibrib30", TC_DATUM);
+ drawString(spr, String(timeinfo.tm_mday), 154 / 2, 42, "fonts/numbers2-1", TC_DATUM, TFT_RED);
}
spr2grays(spr, spr.width(), spr.height(), filename);
@@ -318,13 +315,12 @@ void drawWeather(String &filename, String location, tagRecord *&taginfo) {
if (taginfo->hwType == SOLUM_29_033) {
initSprite(spr, 296, 128);
- spr.setTextDatum(TL_DATUM);
drawString(spr, location, 10, 10, "fonts/bahnschrift30");
char tmpOutput[5];
dtostrf(temperature, 2, 1, tmpOutput);
- drawString(spr, String(tmpOutput), 5, 65, "fonts/bahnschrift70",(temperature<0 ? TFT_RED : TFT_BLACK));
+ drawString(spr, String(tmpOutput), 5, 65, "fonts/bahnschrift70", TL_DATUM, (temperature < 0 ? TFT_RED : TFT_BLACK));
spr.loadFont("fonts/weathericons78", LittleFS);
if (weathercode == 55 || weathercode == 65 || weathercode == 75 || weathercode == 82 || weathercode == 86 || weathercode == 95 || weathercode == 99) {
@@ -366,7 +362,7 @@ void drawWeather(String &filename, String location, tagRecord *&taginfo) {
char tmpOutput[5];
dtostrf(temperature, 2, 1, tmpOutput);
- drawString(spr, String(tmpOutput), 10, 10, "fonts/bahnschrift30", (temperature < 0 ? TFT_RED : TFT_BLACK));
+ drawString(spr, String(tmpOutput), 10, 10, "fonts/bahnschrift30", TL_DATUM, (temperature < 0 ? TFT_RED : TFT_BLACK));
spr.loadFont("fonts/weathericons78", LittleFS);
if (weathercode == 55 || weathercode == 65 || weathercode == 75 || weathercode == 82 || weathercode == 86 || weathercode == 95 || weathercode == 99) {
@@ -414,15 +410,13 @@ void drawIdentify(String &filename, tagRecord *&taginfo) {
if (taginfo->hwType == SOLUM_29_033) {
initSprite(spr, 296, 128);
- spr.setTextDatum(TL_DATUM);
- drawString(spr, "TEST", 10, 10, "fonts/bahnschrift30");
- drawString(spr, mac62hex(taginfo->mac), 10, 50, "fonts/bahnschrift30", TFT_RED);
+ drawString(spr, taginfo->alias, 10, 10, "fonts/bahnschrift20");
+ drawString(spr, mac62hex(taginfo->mac), 10, 50, "fonts/bahnschrift20", TL_DATUM, TFT_RED);
} else if (taginfo->hwType == SOLUM_154_033) {
initSprite(spr, 154, 154);
- spr.setTextDatum(TL_DATUM);
- drawString(spr, "TEST", 5, 5, "fonts/bahnschrift30");
- drawString(spr, mac62hex(taginfo->mac), 10, 50, "fonts/bahnschrift30", TFT_RED);
+ drawString(spr, taginfo->alias, 5, 5, "fonts/bahnschrift20");
+ drawString(spr, mac62hex(taginfo->mac), 10, 50, "fonts/bahnschrift20", TL_DATUM, TFT_RED);
}
spr2grays(spr, spr.width(), spr.height(), filename);
diff --git a/esp32_fw/src/newproto.cpp b/esp32_fw/src/newproto.cpp
index ec9047a1..a69acb13 100644
--- a/esp32_fw/src/newproto.cpp
+++ b/esp32_fw/src/newproto.cpp
@@ -271,7 +271,7 @@ void processDataReq(struct espAvailDataReq* eadr) {
time(&now);
taginfo->lastseen = now;
taginfo->expectedNextCheckin = now + 300;
- if (taginfo->RSSI) {
+ if (eadr->adr.lastPacketRSSI != 0) {
taginfo->LQI = eadr->adr.lastPacketLQI;
taginfo->hwType = eadr->adr.hwType;
taginfo->RSSI = eadr->adr.lastPacketRSSI;