Code Monkey home page Code Monkey logo

openepaperlink's Introduction

OpenEPaperLink

This is an alternative firmware and protocol for the multiple Electronic Shelf Labels. It can be used to setup E-Paper tags and supply them with content.

The software in this project consists of two parts: Accesspoint-firmware and Tag firmware. Additionally, there are various hardware designs for accesspoints and flasher-interfaces to program the tags, preferably using programming jigs

Aims

  • Low power (currently around 9µA with a minimum of 40 second latency)
  • Even lower power when there's no AP around
  • Low latency (tags can check for new data every 40 seconds)
  • High transfer speeds - It can do about 5kbyte/s in favorable RF conditions. This allows for lower power
  • RF-friendly - We don't need to acknowledge EVERY packet, and we don't need to transfer data we already have

What is required to set up OpenEPaperLink

On the Wiki there is a ton of information regarding all kinds of tags and building the access points.

The entire setup requires a few tags, and an ESP32. A tag is used as an 802.15.4 radio for the ESP32. You'll need a ZBS_Flasher in order to flash the tags. Using the 'mac' option on ZBS_Flasher makes sure a tag flashed with a custom firmware has a valid mac address; it used the stock mac address assigned to the tag if it hasn't been flashed before. If you want to set it yourself, you can edit the mac address in the infopage.

You can hook the AP tag up to the ESP32 with mod wires or a flex pcb. The esp will flash the AP firmware to the Tag automatically. In some cases, a power off/on cycle is required. Please check the serial console output for status information.

After programming the ESP32, make sure to also program the filesystem. This will upload the 'data' folder to the ESP32, with the webinterface.

OpenEPaperLink Parts and links

The protocol explained

  • The tag checks in with the AP every 40+ seconds. Actual check-in interval is highly dependent on RF conditions, or if the AP tells the tag to delay the next check-in
  • The AP holds a list with tag MAC's that have pending transfers.
  • If a tag checks in, the AP replies with either no data, or information about a pending transfer
  • The tag checks if this information is already downloaded to EEPROM, or is already displayed. If this is the case, the transfer is immediately cancelled by issuing a 'transfer complete' packet to the AP.
  • The tag then proceeds to request data in 'blocks' of 4096 bytes. The AP responds with an ACK on the request, and specifies how long it will spend to gather the data. The tag sleeps until the AP will send the data
  • The AP requests its block-buffer to be filled by the ESP32, specifying MD5 and blockID
  • Datablock is sent by the AP, which will take about 42 packets for a full block. The tag will keep track of which blocks it has seen
  • After a block has been received with missing parts, the tag will request the same block, with a bitmask of blocks that are missing
  • The AP responds with the parts as requested by the tag. If there aren't too many blocks requested, the AP will fill the block with duplicate parts, to increase the chance of a successful transmission
  • After a full block has been received, the tag will do a simple checksum over all received data. If the checksum matches, the 4K of data is stored in EEPROM storage for later use
  • The tag will now either request the next block, or do a full re-request if the checksum failed
  • If all blocks are received, the tag will send a 'transfer complete'.
  • The AP will report the completed transfer to the ESP32, and removes the pendingData for this transfer from the queue

Known issues:

  • Some tags work better as AP's than others. Your range may suck. The boards on these tags are tiny and fragile. For instance, a dab of hot-glue on a board is enough to warp it pretty severely, and will damage the components that are soldered on there. Reportedly, segmented-display Solum tags work well.

Hints and excuses:

  • There is no warranty whatsoever. Nothing. Not implied or otherwise suggested. This code isn't fit for anything. Please don't use this code to do nasty things.
  • Do a make clean between building for different boards. It really helps!
  • This repo builds on SDCC 4.2.0 for Linux. Different SDCC versions can behave VERY differently. Source sdcc/setup.sh to setup build a local copy and use it for compiling.
  • We are happy and honored to see your pull requests! But please, no code/indent style changes :)

Credits

Large parts of this repo are based on code written by, and wouldn't be possible without the hard work of:

  • dmitry.gr
  • atc1441

Hats off to these legends!

Automated Builds

  • After a PR gets merged to the main branch, the changed code will be compiled.
  • On release, files are added to enable OTA

Test

Release

License

Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)

openepaperlink's People

Contributors

andrekr avatar atc1441 avatar b0rax avatar chunkysteveo avatar cougar avatar deltacore avatar dm8tbr avatar enwi avatar foorschtbar avatar jhbruhn avatar jjwbruijn avatar jonasniesner avatar justinotherguy avatar kelchm avatar kquinsland avatar lexornet avatar milo526 avatar miloskrumpolccz avatar mimoja avatar nlimper avatar onkelfunny avatar pablogonzalezalba avatar reletiv avatar seeers avatar skiphansen avatar slimline33 avatar stefankrupop avatar svenove avatar therealmrsteel avatar vstudiolab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openepaperlink's Issues

Feature request: OTA with own, custom .bin

Is it possible to upload a custom firmware (with different pinout) to the esp32 flasher via OTA? Either by uploading it directly or via url.

The current update feature works very well, but only when using the pre-defined pinout. Or maybe storing the pin layout in a different location so it doesn't get overwritten?

Wind direction icon is 180 degrees off

The icon displaying the wind direction is 180 degrees off. A wind of 90 degrees means wind coming from the east, blowing to the west. So an arrow starting at 90 degrees (east) and pointing toward 270 (west).

https://github.com/jjwbruijn/OpenEPaperLink/blob/2060edb54c1528a21f87024fe54d82542fbc1867/ESP32_AP-Flasher/src/contentmanager.cpp#L1003

Suggestion would be to shift the wind direction index (8 directions) by 4

    String directions[] = {"\uf058", "\uf087", "\uf048", "\uf043","\uf044", "\uf088", "\uf04d", "\uf057"};

Feature request: ESP32-C6/H2 based AP

I'd like to try and contribute an implementation of the AP protocol based only on ESP32-C6 or H2, since both models have a 802.15.4 capable radio.

Is anyone working in something similar? Is the protocol documented somewhere?

Thanks!

Red channel shifted

In the latest tag_fw (tried with yesterday's and latest version), the red channel is shifted about 8 pixels to the right (seen from portrait orientation). Tried with multiple tags.
IMG_7439

Heap size

In newproto.cpp: Op dit moment laadt je de hele bmp-file in pendinginfo->data op het moment dat het eerste block aangevraagd wordt door de tag. Een image is 1282963 bytes groot, dat is 133kB, en dat past niet in de heap (ESP.getMaxAllocHeap() -> 110580).
De processor crashet, en vervolgens heeft de tag-firmware een oneindige retry, en blijft continu via zigbee vragen om dat block.
Is het niet beter om processBlockRequest() alleen de benodigde chunk van het bestand op te laten halen? Dan hoeven de plaatjes niet in z'n geheel in memory gelezen te worden.

Feature request: Faster check whether new input is available

Topic was already touched on briefly in #92.
According to my observations, the TAG checks every 60 seconds for a new input.
Would it be possible to shorten this review? Via an external menu item in the settings. Of course I am aware that this is not good for the battery life, but in my case it would be perfectly OK.
Possibly with a warning you should set a value less than 60 seconds

Json templates are not cleaned up

Describe the bug
When you once use a Json template on a tag, the file is never cleaned from disk. Maybe it's intended, but since disk space is limited, I would expect "old" json files to be removed once they are no longer in use.

To Reproduce
Steps to reproduce the behavior:

  1. Upload a Json template (I used the "jsontemplate-demo.html")
  2. Change the config of the tag to something else (weather/current date/etc)
  3. Open the file browser and observe the json file still in the root folder

Expected behavior
Json files should be removed after they are not used anymore (maybe already after image generation?)

Website sliding around when trying to paint an image manually on mobile phone

Describe the bug
When many displays are connected to an AP, editing an image manually (drawing, text) becomes impossible due to the website sliding around instead of pixels appearing on the canvas. Tested with Huawei P20 Pro, Samsung Galaxy Tab A7 in Chrome browser (newest version).

To Reproduce
Steps to reproduce the behavior:

  1. Open AP site in mobile phone's browser (in my case Chrome)
  2. Open an e-ink display, set to static image
  3. edit image manually
  4. draw on canvas, the website slides around instead. No pixels appear on canvas.

Expected behavior
The website should be locked in place during canvas editing

Feature request: Documentation : How to build an Image

Describe the solution you'd like
Improve the documentation to explain how to build an Image to be summited to a tag via URL

Additional context
I use Photopea to change an image I found in the repository, save it back in jpg.

  • It works but the red (255,0,0) is not as red as in the Date/TIme feature
  • May be PNG is better ? And/Or set less color in the encoding ?

Feature request: grouping active tags

Is your feature request related to a problem? Please describe.
having a lot of tags (>40) makes it a little bit messy.

Describe the solution you'd like
a simple grouping based on the shown content, the status like 'awaiting update', 'not seen for a long time', 'battery level' and collapse a specific group.

Describe alternatives you've considered
using the search provided by the browser

Additional context
none

Crash during content creation / drawing?

Something breaks during an update, started since the version that introduced RSS feeds

start reading DB from file
92
finished reading file

assert failed: xQueueSemaphoreTake queue.c:1545 (( pxQueue ))


Backtrace:0x40083745:0x3ffd55600x4008dea9:0x3ffd5580 0x400933b1:0x3ffd55a0 0x4008ee5d:0x3ffd56d0 0x400e1147:0x3ffd5710 0x400d9e4d:0x3ffd5970 0x400da77d:0x3ffd5aa0 0x400daeca:0x3ffd5ae0

  #0  0x40083745:0x3ffd5560 in panic_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/panic.c:402
  #1  0x4008dea9:0x3ffd5580 in esp_system_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/esp_system.c:128       
  #2  0x400933b1:0x3ffd55a0 in __assert_func at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/newlib/assert.c:85
  #3  0x4008ee5d:0x3ffd56d0 in xQueueSemaphoreTake at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/queue.c:1549 (discriminator 1)
  #4  0x400e1147:0x3ffd5710 in wsLog(String) at src/web.cpp:149
  #5  0x400d9e4d:0x3ffd5970 in drawNew(unsigned char*, bool, tagRecord*&) at src/contentmanager.cpp:75 (discriminator 5)
  #6  0x400da77d:0x3ffd5aa0 in contentRunner() at src/contentmanager.cpp:45
  #7  0x400daeca:0x3ffd5ae0 in timeTask(void*) at src/main.cpp:28``` 

Board Outline is missing in epapertagjig.zip

Describe the bug
Board Outline is missing in Hardware/OpenEPaperLink AP and Flasher/PCB/epapertagjig.zip

I tried to order the board on JlcPCB,
but after uploading I get the Error:
Can not identify the board outline

To Reproduce
Go to jlcpcb and upload the zip file.

No UTF-8 in "Current weather"

I noticed that in "Current Weather" non-ASCII characters in city names disappear.
Cities like "Köln" and "Tübingen" are being found and weather data is shown, but on the tag they appear as "Kln" and "Tbingen".

I also found that if a city name is entered with the first letter in lowercase like "stuttgart", it is also shown in lowercase on the tag. I assumed that city data would either be matched against an official list or that the first letter was being forced in uppercase.

Feature request: Add another Option JSON Template with Google Script = HTTPS?

Tried to use the the JSON template together with Google script.
This is very convenient for getting various API Data condensed in the Cloud instead of running a Server at home.

Unfortuanetly the JSON Template can right now only deal with HTTP adress.(Not with HTTPS which is needed for Google Script)
If you try to run the below mentioned Google script you run into an error code:
17:27:07 Ok, saved
17:26:45 http https://script.google.com/macros/s/xxxxxxxxxxxxx/exec 302
17:26:43 Updating 0000026D6CFC3B19

Example Script
`
function getEventsForNextDay() {

var events = [{"text": [5,5,"Bahnschrift 20","fonts/bahnschrift20",1]}];
return JSON.stringify(events);
}

function doGet() {
var content = getEventsForNextDay();
var output = ContentService.createTextOutput(content);
output.setMimeType(ContentService.MimeType.JSON);
return output;
}
`

Would it be an option to use the same contact mechanism for JSON Template as it is used for Google Calendar?
Feature Request: Add another Option JSON with Google Script?

blockrequest: couldn't find taginfo 0000000000000000, tags not updating

Describe the bug
After flashing the lastest version of the esp32 flasher on an esp32 (simple AP version), the tags won't receive the new image. I've tried multiple tags, all with their own, original mac address. In this example I use 0000021C5D4E3B14 as an example.

To Reproduce

  1. Click tag on webpage
  2. Select any of the content options (image, date, weather)
  3. Hit save

Expected behavior
A new image on the selected tag. As it did in earlier versions.

Error on webpage
20:28:10 Updating 0000021C5D4E3B14
20:27:37 Tag not found, this shouldn't happen.
20:27:36 Tag not found, this shouldn't happen.
20:27:36 Tag not found, this shouldn't happen.
20:27:36 Tag not found, this shouldn't happen.
20:26:54 Tag not found, this shouldn't happen.
20:26:53 Tag not found, this shouldn't happen.
20:26:52 Tag not found, this shouldn't happen.
20:26:11 Tag not found, this shouldn't happen.
20:26:11 Tag not found, this shouldn't happen.
20:26:10 Tag not found, this shouldn't happen.
20:25:29 Tag not found, this shouldn't happen.
20:25:28 Tag not found, this shouldn't happen.
20:25:27 Tag not found, this shouldn't happen.
20:25:27 Tag not found, this shouldn't happen.
20:24:40 new image: /current/0000021C5D4E3B14.pending
20:24:40 Updating 0000021C5D4E3B14

Error in serial console:
<ADR 0000021C5D4E3B14
blockrequest: couldn't find taginfo 0000000000000000
blockrequest: couldn't find taginfo 0000000000000000
blockrequest: couldn't find taginfo 0000000000000000
<ADR 0000021A0FBF3B1B

Software versions
FW version tag: 0.1.5-clut
FW version ap: 0016
version esp32 ap: 30-5 22:55 (CEST) downloaded

tagDB.json.txt

Change SSID and Wifi Passwort

Can I change the SSID and WiFi password?
I have it all running in my test environment. Unfortunately, I can no longer reach the reset button because I glued the case together.

AP stuck on requires power cycle

After (presumably) an update the AP switches from online to requires power cycle . Rebooting via the menu as well as unplugging and replugging it doesn't resolve the problem. It also persists when doing a rollback to the previous firmware/fs again.

image

After boot:
image

Serial output after boot:
image

Feature request: PNG upload

Expanding jpg2buffer to also work with PNG's would be great because jpg is not that great for compressing text and often creates unwanted artifacts

Feature request: Add second checkin after NFC or GPIO wake

For some applications it could be beneficial to initiate a second checkin for new content after a GPIO/NFC wake.This way externally generated content(for example from Home Assistant) could quickly be displayed after a button press without waiting for the next regular timed window. This feature could be implemented without changing the tag firmware. The delay between second and initial checkin should be configurable to be able to adopt to different external content generation systems

Feature request: Image file upload from AP web interface

Unless I missed some hidden option, it seems like it's currently not possible to upload an image file from the AP web interface; only to draw one onto the provided canvas. Preparing an image in a proper editor and exporting as a correctly sized JPG allows for much more control of course, so it'd be nice to allow selecting a file from disk and uploading it to a tag via the AP.

As a workaround I did the following:

$ base64 -i image.jpg

and then in a JS console on the webpage after opening the canvas-based image editor:

const image = new Image();
image.src = "data:image/jpg;base64,<paste output from above>";

const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0);

...and then upload as if it was hand-drawn.

Feature request: check file before sending ota to tag

I was stupid enough to send a faulty firmware.bin to 2 of my tags. 1 was the AP firmware instead of the TAG firmware, the other was sending the AP_FW_Pack.bin to the tag.

Both resulted in the tag not communicating to the AP and stuck with the message "AP Mode" or "Updating!". This can hopefully be fixed by pulling out my hw-flasher and flashing new, correct firmware.

In order to prevent this from happening to others (or myself again), maybe a simple filecheck could help? Before a .bin file is transferred to a tag.

Feature request: Support for Chroma devices? (Easier to find online)

I'm wondering - would you consider adding support for the Chroma range of devices?

These (Chroma) devices seem to be a lot easier to find online (e.g. eBay) than Solum devices - I'm basically not able to find any Solum devices for easy purchase anywhere online.

Dmitry has a section in his writeup on the Chroma74 model (i.e. 7.4")

https://dmitry.gr/?r=05.Projects&proj=29.%20eInk%20Price%20Tags#_TOC_955eca57c5dfe3d5e7de284fb60142e1

There's a bunch of sizes:

https://www.delfi.com/solutions/chroma-red

Feature request: Add OTA update

The OTA update could use the released binaries directly.
The Files for the webserver and firmware files should be updaten in another way then directly with a full image to not loose the DB

same weblink on multiple displays - update problems

If i have the same url on several displays the update procedure is buggy.

for example:

  1. display 1 = http://myserver.com/image.jpg (versionA)
    display 2 = http://myserver.com/image.jpg (versionA)
  2. i start both displays initially and they both get the (versionA) picture.
  3. i update my image.jpg on my server to (versionB).
  4. for example display1 checks in and sees "there is a new image" (versionB), downloads it and displays it.
  5. then after some time display2, who has still (versionA) on it checks in.
    The server looks at my server and compares it to the locally stored.
    (Server and ESP have versionB)
    so it decides (wrongly) to do nothing!
  6. the display who is 2nd (or more) in line is stuck with the old image and never gehts a update.

Can the esp keep track which picture version on which display is?
Then it can decide if the picture needs an update, because the local picture is newer then the picture on the display, even if the local cached picture is the same then the one on the webserver.

Feature request: TTL tag implementation

Is your feature request related to a problem? Please describe.
I have problems to verify whether the shown data is valid or outdated. It is maybe related to the #82 or the AP is not responding in the right way.

Describe the solution you'd like
a visible sign that the TTL is overdue and you should not trust the data. Like a red icon or a red thin frame.

Describe alternatives you've considered
look at the AP webinterface, search for the tag and verify the data manually.

Additional context
The weather forecast and current weather are sometimes tricky to determine. Maybe it is easier to add an date overlay, like cameras do.

Spacing on PCB for DevKitC board

Hi,

You were kind enough to give me one of your PCBs at Hackaday in Berlin, I've ordered a new ESP-S3-DevKitC-1 genuine espressif board and the header pins, just getting to assemble things.
I've noticed that the spacing on the PCB is a bit too wide for the ESP32 board, I think I can just make it fit with angling the pins slightly but thought I'd let you know for any revisions.
![IMG_6402](https://user-images.githubusercontent.com/187645/2
IMG_6402
29098209-dc471d80-f3ad-4850-b5b1-57434a4426ef.JPG)

Only ASCII characters in RSS-Feeds on tags

It seems that RSS feeds as content for the tags only show standard ASCII characters
and do take any encoding into account.

I tried two different German RSS feeds, both encoded with UTF-8
Tagesschau
Spiegel

In both feeds all German umlauts / special characters (ä,ö,ü,ß etc.) are being ignored/omitted.

Feature request: Openepaper JSON Template Language

Goals:
All displays generated with the AP are no longer hard-coded in the program code, but stored in templates. This allows for easier customization of the templates.

Templates can be loaded via URL or stored locally.

For this purpose, there should be a new directory named "templates" under the root directory. Within this directory, there are subdirectories named "system," "system_mod," and "user."
/templates/system
/templates/system_mod
/templates/system/user

Users should not modify the /templates/system directory, as it may be overwritten during updates. To modify a system template, place it in the /templates/system_mod directory. When executing a system template, the interpreter first looks in the /templates/system_mod folder, and then in the /templates/system folder. All other templates are stored in /templates/user.

For fonts, I would also suggest a modified structure:
/fonts/system
/fonts/user
This has the advantage that users do not need to touch the fonts in the /fonts/system folder.

Additionally, there should be a directory named /data.

The JSON template file should have a new structure.

  1. Colors are no longer encoded with 01,2. Since OLEDs can also be supported, the RGB color space is used. Colors should be represented using hex #FF0000. For better readability, constants like White, Red, Yellow, and Black should be defined.

  2. A version should be included so that the interpreter can check if this version is supported:
    {
    "version": 1,
    "vars": [],
    "content": []
    }

  3. Content
    Since various displays are intended to be supported by a template, the content must be specified for each supported display (similar to current system templates):
    "content": [
    { "tag": "typ1", "display": [] },
    { "tag": "typ2", "display": [] }
    ]

  4. Display in Content
    Display follows the existing JSON template structure in principle. Some modernizations are to be considered. First, the syntax for fonts should be adjusted. For TTF fonts, a leading slash must be included. For bitmap fonts, it should not. This is illogical. Additionally, colors should be defined as mentioned above. Individual values can be passed as fixed arguments or as variables.
    Example:
    {"text": [5, 0, "%temperature °C", "fonts/bahnschrift20", 2]}
    The content of the variables is defined in the vars section (see above). All existing hardcoded features should be included in the template language, including barcode128 and QR code.

  5. Vars
    The vars section is also of particular interest. Variables can be hardcoded in the template or loaded from another file or the internet. Special functions can also be introduced to generate variables all at once, e.g., for weather data.

    • Hardcoded:
      {"var": "city", "content": "Berlin"},
      {"var": "temperature", "content": 10.5}
    • From JSON file:
      {"var": "text", "filetype": "json", "url": "file:/data/mydata.json", "item": "[3][caption]"}
    • From text file/URL (entire content):
      {"var": "text", "filetype": "text", "url": "file:/data/mydata.txt"}
    • From text file (line):
      {"var": "text", "filetype": "text", "url": "http://test.de:/data/mydata.txt", "line": 3}
    • Possibly from CSV file:
      {"var": "text", "filetype": "csv", "divider": ",", "url": "http://test.de:/data/mydata.txt", "line": 3, "item": 2}

For system templates, it might make sense to specify whether values can be entered and saved via the web interface. For example, for weather forecasts, the location:
{"var": "city", "input": "city", "label": "City"}
Localization for the respective language would need to be added (how?).

In future versions, it would likely be useful to include simple calculations, e.g., display_with-40, etc.

flashing of FW Tag failes "failed to read json header from FW pack"

What a great project.. so far i am still having issue getting it to work.

Describe the bug
Can not flash the ZBS243 Tag. Always runs into trouble during flashing.

  • triple checked the wiring
  • checked with a mulitmeter beeper as well

To Reproduce
Steps to reproduce the behavior:

  1. Build filesystem image
  2. Upload filesystem Image
  3. Build and Upload OpenEpaperLink_Mini_AP
  4. push reset button on ESP32-s2 mini
  5. Watch Terminal output
    1. Check littleFS Filesystem in paralell on Mobilephone

`Connected! IP address: 192.168.178.35
reading DB from file
loadDB: Failed to open file
I wasn't able to connect to a ZBS (AP) tag.

This could be the first time this AP is booted and the AP-tag may be unflashed. We'll try to flash it!
If this tag was previously flashed succesfully but this message still shows up, there's probably something wrong with the serial connections.
The build of this firmware expects an AP tag with RXD/TXD on ESP32 pins 6 and 7, does this match with your wiring?
Performing firmware flash in about 30 seconds!

30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MD5=A27D978C48888FA045E8D3F90DC27029
MD5 Matches > Segmented UK
Found an original fw tag, flashing it for use with OpenEPaperLink
Failed to read json header from FW pack
Failed to flash the AP :(
Seems like you're running into some issues with the wiring, or (very small chance) the tag itself
This ESP32-build expects the following pins connected to the ZBS243:
--- ZBS243 based tag ESP32 ---
RXD ---------------- 06
TXD ---------------- 07
CS/SS ---------------- 11
MOSI ---------------- 10
MISO ---------------- 08
CLK ---------------- 09
RSET ---------------- 13
Your firmware is configured without soft power control. This means you'll have to manually power-cycle the tag after flashing.
Please verify your wiring and try again!
---- Closed serial port COM10 due to disconnection from the machine ----`
Expected behavior
Flashing should run without issues (if MD5 Hash can be read out))
Don't get the error message json header from FW pack

Screenshots
Filesystem is there:
Screenshot_2023-06-07-21-42-27-95_40deb401b9ffe8e1df2f1cc5ba480b12
Screenshot_2023-06-07-21-43-36-30_40deb401b9ffe8e1df2f1cc5ba480b12

cant upload the AP to the Esp32. Filesystem missing

Hello i clone this code, Open ESP32_AP-Flasher in the visual studio code and upload. its nearly successful. But after the Wifi manager it shows "index.html not found. Did you forget to upload the littlefs partition?"
Where can i get this data?
In the video (https://www.youtube.com/watch?v=Etonkolz9Bs) there is an second upload from the Folder / Platform / Upload filesystem image. But i cant find this data anymore?

Displays getting stuck on "Waiting for data" after associating

Describe the bug
The displays seem to get stuck af the "Waiting for data" screen after associating with an access point and failing to receive the initial data (AP lost, restarted, temporarily out of range, overpowered by other 2.4 GHz transmissions). Placing the display right next to the access point does not help once it got stuck. Only a reboot by manually powering it off and on again resolves the issue. This is hard or annoying to do in signs used in installations or built into other components.

To Reproduce
Steps to reproduce the behavior:

  1. Power off a display
  2. Power the display back on
  3. Wait until the display has booted and starts drawing the "Waiting for data" screen
  4. Power off the AP for a few seconds while the display is waiting for data
  5. Power the AP back on
  6. The display is stuck in "Waiting for data". This happens with 1.56" and 2.9" displays. There seems to be a missing timeout or misconfigured reset timeout.

Expected behavior
The display will realize that no data could be received and will try to check in later (5-10 min)

Screenshots
grafik
Two displays were rebooted manually after moving the card away from the AP, while three others were allowed to reconnect on their own. The displays were left next to the AP over night (12 hours).

Feature request: Direct writing without buffering in flash

I am afraid that the flash memory of the ESP32 will not live long with frequent updates (e.g. SmartHome status display with an update every few minutes).

Maybe it would be possible to store the data in a ramdisk. Or to store temporarily on a external webserver?

Or retrieve an image directly as RAW from a webserver without caching it? Then you could create the raw files directly on the system where they are fetched.

It would be a pity if the gateway had to be replaced every few months because of defective flash cells.

Feature request: show current firmware version of the

If I'm correct, the current firmware version of a tag is only shown during boot. Maybe it is possible to show the firmware version on the AP website? So then you can figure out which tag is running which (outdated) firmware and maybe needs a firmware update.

Encrypted Direct Wifi Connection

It would be great if you could secure the Wifi direct connection with WPA.
Encryption is currently only possible in connection with a router.

free space aware behaviour

Describe the bug
the AP is configured not to generate preview images. This saves a lot of space, because I can handle more tags without storing the current image.
the problem is that if the current date is chosen, it will be generated at midnight, but for all tags on the same time. Because there are no checks for free space, it will skip a lot of tags, because empty images are created. You need to delete those empty files manually and re-trigger the current date for each tag separately. While you doing it manually, the whole process is slow enough to generate-deliver-delete successfully. Well, at least until midnight.

To Reproduce
Steps to reproduce the behavior:
Have a lot of tags (more than capable of handling) with the current date

Expected behavior
functional: generate the images as soon as space is given free, retrigger it through a queue, have a buffer for each tag type in use as spare
organizational: show a warning if too much tags are associated, disable settings for new tags

Screenshots

Additional context
related to: #82

Remote tag update causes AP tag to reboot

Describe the bug
Whenever a tag starts to update (Block Request received message is shown in log), the AP tag reboots, and the remote tag fails to update.

To Reproduce
Steps to reproduce the behavior:

  1. Click on a tag
  2. Draw a new picture, and hit Save
  3. Wait for tag to check in

Expected behavior
Remote tag's display should update

Additional context
AP tag display blanks and returns to "run". Channel displayed on AP tag resets from selected value (27 in my case) to 11.
AP reports version 0017, tags came pre-flashed with 0.1.9-VER. ESP32-S2 was programmed with install website at about 1:00 AM GMT on August 5, 2023. Tried with two tags (2.9" and 1.54")

Feature request: Support for ICS/ical/(caldav?) calendars

Is your feature request related to a problem? Please describe.
Displaying a Calendar (natively) is currently only possible via Google Calendar and a separate app script.

Describe the solution you'd like
Network calendars are often shared via a .ics link, similar to rss feeds. It would be nice to directly integrate those.

Describe alternatives you've considered
It probably would be possible to use the Home Assistant Integration and parse the calendar there, but then you could argue the same for RSS feeds.

Additional context
Maybe this library can be used? https://reference.arduino.cc/reference/en/libraries/uical/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.