From 9c4cd9ab46f9e8c9f136966a507bce13a137733b Mon Sep 17 00:00:00 2001 From: Nic Limper Date: Wed, 8 Feb 2023 00:20:08 +0100 Subject: [PATCH] bugfixes --- esp32_fw/data/fonts/bahnschrift20.vlw | Bin 0 -> 12083 bytes esp32_fw/data/www/main.js | 6 ++- esp32_fw/include/contentmanager.h | 2 +- esp32_fw/src/contentmanager.cpp | 56 ++++++++++++-------------- esp32_fw/src/newproto.cpp | 2 +- 5 files changed, 32 insertions(+), 34 deletions(-) create mode 100644 esp32_fw/data/fonts/bahnschrift20.vlw diff --git a/esp32_fw/data/fonts/bahnschrift20.vlw b/esp32_fw/data/fonts/bahnschrift20.vlw new file mode 100644 index 0000000000000000000000000000000000000000..8a8ea9dfa9d667587ae475aa222fd32be3c6a5fa GIT binary patch literal 12083 zcmcgu2fHmr5xiy;6DU8xoB?yhfH?;Ym_-yG29#h9e_gxMOz)gIH$2e&-tKgFbye5Q zo^$TIxVZS)#l^*)b-%uDT(7SC#dW{I@e6BxNsBAIc%y5m-%&R>FQ^;Wo9adm%~v`O z_U6j(uKVT2UR!Ihw^R&XI9>Ct#-RBs$Kk!La`=Ex`0l*7SN=NJUsfyTp%2$P>IMdG zunKv-v!1BohS%5Boq6x77<yFoI?{{I`;mCt(qS&www1sW0)0Q_V=Ntxz79WCD=!d z?dE;-65huO!;g05)TaI(<*jJq6tg**_E?;%N+xypy^S;}#c&!qz@6{8&cjxkbWAGBq3VHpYp5Wc( z8*#3OD~M*^d%XOxVXK!P8SC#MydM{a-!uF!;l1NsWbZ$z`0!izpSr4s>!)?EJOcH= z-?047#Y;4QUKrwh|0*2c+h0@+UiT88k5nC6`5izU?3WeeT!JCayhkez4{PWBs`8Z= z&0o7WXV!U-nTOw{d{@GIe9`Q@TMO2GK4A>Lq1&mIWA-x+&R zt??P`_f>;8aPe6~9PCNwInR#$!PxFx{#aP|(s@s9u$sv!gAHgxP_XV6u8LL@W3tW* zcs_VNyjs8};ETq%P-f_$j(;d1K%)cJ=?@fQL>(?|+P4}7F=n%>aG?=1AdIq=-C=Fc zJjNifOhVH;gg#5mVfS+$!)bFaHWY2!VWCwyJ66?83LTBU3QY8Zlwmy?dQJ|=ld<#? zGo2!cl$cA>?b?b|gh8I4HEn>twU2~wK=#?k=s++$QUwo8qC!Ewn2#zOD54SSt|wV| z9Iw>Zb#(0*YxB%C*|Sit8_T-hq$e8kQ$_b~d%VXiL#2lOnPGzytvO~ipAlt=Noc3`JHJp| zQI?Dg_9^s`pdb3ji%LUk*TW9a5_if>7o)-L9z7N^MO*~0m4c2v<>Fw?LCre-J|>XT}9g2ztRBZJkk zm}(+H7?`FWtD|h)u`KNrfLS-#w+o}rU}W^92~`8N9$1lS#fFUN1K>1mH%J#L9+d`h z*qDOpv@rIHfW=k`bCgs_+S<2ajo?5k&oJ9jMIC(3hn!^mI4n$2KPAtF;&D3;-8t!J zqm|puW*&NU1|t$pPnhS$o)L{=1+t&LOf&rzs0|vsC|ts5LSZT+#3g_M^NePay#ZFM zL?}mv+l+>ulr@?AKuE8u^`~aVNW8ImKE5Dp)y%P`3{T zO0%Wo=KOI(e`ig8selFo37E@@LfDgP8S6Y<(&q>br?vJ8gq)vit1`W zVMgrew1RfE$v8xw=&>{q0qRUkR8<2MHqjh=K%?)z4O5>|s^vNTM3g3Z zlBi7bnNT!sjA9tVbIAx0bxk{|sM9Fv+}u@B^djRE@%#*y3Z9Af=Ra*VtD=nm&s9%k z6zPOe!$tTI6H)m{lj z`1J4SP{3YJ3aD_CO-qfeqF?whcrZmt?|Y}t+R&d;5y=*qW7OKRh)!N2Iq)`6910Eq zEn754z6KcPr6|OX*P;@+xqA34gmD6#7LKD@rhP*5=67V|V{Cgh_&fmq4ID3JNL~U= zcQ@ZzPUEP7s97R9O$Y z>l}_{hj^Hl9&AOI1+|ERrjtBwbW2 zW&r4_e2sc2UsYZjU_ z;p$lYc{pK4-OAL=4yZrQ%2P8OMBge^(rQcW!SabV`MJTGA+^%09$TGdHhSdsgu_mm zpwb9irvQ4!?6GUNphQd5GR`6kn5`B((W;i7xe={uVV^^jNjz{Z6-lI)rk;7M1>3Bx z7fPBOA^Ned(P3@mngD4ymIjvNb;No$8NGUBOFOnQq*X1lR-i&JO?vG)uZB&4xOzF8 ryH}j+K0T#5&D5(D;3Mv(Qu#3Fec$=uBe$M>=FwYEKk?YJ7l-7(#d_RL literal 0 HcmV?d00001 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;