[GH-ISSUE #92] Feature request: Control tags simultaneously with the same input #3356

Closed
opened 2026-03-20 23:04:50 +01:00 by sascha_hemi · 24 comments
Owner

Originally created by @Draexl on GitHub (Jul 24, 2023).
Original GitHub issue: https://github.com/OpenEPaperLink/OpenEPaperLink/issues/92

In my usecase, all tags should display the same thing. At the moment I can only control one tag with the JSON template upload.
Can this be implemented or is there already a way?

Originally created by @Draexl on GitHub (Jul 24, 2023). Original GitHub issue: https://github.com/OpenEPaperLink/OpenEPaperLink/issues/92 In my usecase, all tags should display the same thing. At the moment I can only control one tag with the JSON template upload. Can this be implemented or is there already a way?
sascha_hemi added the enhancement label 2026-03-20 23:04:50 +01:00
Author
Owner

@Draexl commented on GitHub (Jul 24, 2023):

I just saw that I can store a JSON URL in the TAG.
I have now stored a JSON in File Explorer. What should the URL be now (in the tag settings)?
I can't get it.
used http://192.168.1.100/test.json

<!-- gh-comment-id:1647390327 --> @Draexl commented on GitHub (Jul 24, 2023): I just saw that I can store a JSON URL in the TAG. I have now stored a JSON in File Explorer. What should the URL be now (in the tag settings)? I can't get it. used http://192.168.1.100/test.json
Author
Owner

@Draexl commented on GitHub (Jul 24, 2023):

OK, I found it. You have to put it in the www folder.
But what doesn't work is the interval function (I used 1 Minute) in the tag settings.
I always have to click on save in the tag settings for refresh.

<!-- gh-comment-id:1647417631 --> @Draexl commented on GitHub (Jul 24, 2023): OK, I found it. You have to put it in the www folder. But what doesn't work is the interval function (I used 1 Minute) in the tag settings. I always have to click on save in the tag settings for refresh.
Author
Owner

@Draexl commented on GitHub (Jul 24, 2023):

Ok, I found the Problem. The Minimum time interval time is 10 Minutes. Is it possible to enter lower values? For example. check every 10 seconds? Would be very important to me.

<!-- gh-comment-id:1647502724 --> @Draexl commented on GitHub (Jul 24, 2023): Ok, I found the Problem. The Minimum time interval time is 10 Minutes. Is it possible to enter lower values? For example. check every 10 seconds? Would be very important to me.
Author
Owner

@slimline33 commented on GitHub (Jul 24, 2023):

You can send a refresh after Uploading a New Image or json

<!-- gh-comment-id:1647511985 --> @slimline33 commented on GitHub (Jul 24, 2023): You can send a refresh after Uploading a New Image or json
Author
Owner

@slimline33 commented on GitHub (Jul 24, 2023):

?cmd=refresh

This can you do with curl. I don't know the right way to do it with jsonupload.

<!-- gh-comment-id:1647513611 --> @slimline33 commented on GitHub (Jul 24, 2023): ?cmd=refresh This can you do with curl. I don't know the right way to do it with jsonupload.
Author
Owner

@Draexl commented on GitHub (Jul 24, 2023):

My structure looks like this:
I have the JSON file in the ESP/AP directory (Is adjusted via input mask there)
In the TAG settings I refer to the URL of the JSON file.
You can set one minute in the interval, but it is 10 minutes in the background.
That's why I can't send a refresh. I would have to do that for each DAY individually

<!-- gh-comment-id:1647532687 --> @Draexl commented on GitHub (Jul 24, 2023): My structure looks like this: I have the JSON file in the ESP/AP directory (Is adjusted via input mask there) In the TAG settings I refer to the URL of the JSON file. You can set one minute in the interval, but it is 10 minutes in the background. That's why I can't send a refresh. I would have to do that for each DAY individually
Author
Owner

@nlimper commented on GitHub (Jul 24, 2023):

I have three thoughts on this:

  • ?cmd=refresh should not be misused. In normal operation, it makes no sense using it. If you want to use it to re-initiate a pull request, it's better to use http POST to push the image instead.
  • trying to refresh the displays very fast will not scale well. ESP32 will get too busy drawing useless images, and the tags will not last long with the battery. Polling every 10 seconds is waaaaay to fast. If you want to poll because the image 'might' have changed, it's better to choose a push method. See https://github.com/jjwbruijn/OpenEPaperLink/wiki/Image-upload
  • At the moment, all content of the different tags is independant. The image has to be rendered for every tag individually. Maybe it could be a good idea to be able to set the content of a tags as a copy of another tag, so multiple tags will automatically change if you change the content of the 'source' tag. I will look into it to add that functionality.
<!-- gh-comment-id:1647691632 --> @nlimper commented on GitHub (Jul 24, 2023): I have three thoughts on this: - ?cmd=refresh should not be misused. In normal operation, it makes no sense using it. If you want to use it to re-initiate a pull request, it's better to use http POST to push the image instead. - trying to refresh the displays very fast will not scale well. ESP32 will get too busy drawing useless images, and the tags will not last long with the battery. Polling every 10 seconds is waaaaay to fast. If you want to poll because the image 'might' have changed, it's better to choose a push method. See https://github.com/jjwbruijn/OpenEPaperLink/wiki/Image-upload - At the moment, all content of the different tags is independant. The image has to be rendered for every tag individually. Maybe it could be a good idea to be able to set the content of a tags as a copy of another tag, so multiple tags will automatically change if you change the content of the 'source' tag. I will look into it to add that functionality.
Author
Owner

@Draexl commented on GitHub (Jul 24, 2023):

Point 2. The picture does not change every 10 seconds. More like every 15 minutes and even just for a few hours. After that, they won't be needed again for a few weeks.
It is currently recognized that nothing should be changed:
LOG: "new image is the same as current or already pending image. not updating tag."

Point 3. That would of course be the very best idea if the same thing is to be displayed on all tags.

<!-- gh-comment-id:1647703356 --> @Draexl commented on GitHub (Jul 24, 2023): Point 2. The picture does not change every 10 seconds. More like every 15 minutes and even just for a few hours. After that, they won't be needed again for a few weeks. It is currently recognized that nothing should be changed: LOG: "new image is the same as current or already pending image. not updating tag." Point 3. That would of course be the very best idea if the same thing is to be displayed on all tags.
Author
Owner

@nlimper commented on GitHub (Jul 24, 2023):

By the time the log says "new image is the same as current or already pending image. not updating tag", the image is already rendered from the json (which takes a few seconds).

If you can pull the image from your webserver (instead of misusing the esp32 as a proxy webserver ;-) ), you could make use of the 'If-Modified-Since'-header. The esp32 sends this header, filled with the last time the image was fetched. Your webserver could then send a http 304 if your image hasn't changed since that last time. This way, you can still do fast polling, but without unnecessary image rendering.

Or, like mentioned, use http POST to push changed.

I will start working on the 'mirror tag contents from another tag', I estimate to finish that in 1-2 weeks.

<!-- gh-comment-id:1647720018 --> @nlimper commented on GitHub (Jul 24, 2023): By the time the log says "new image is the same as current or already pending image. not updating tag", the image is already rendered from the json (which takes a few seconds). If you can pull the image from your webserver (instead of misusing the esp32 as a proxy webserver ;-) ), you could make use of the 'If-Modified-Since'-header. The esp32 sends this header, filled with the last time the image was fetched. Your webserver could then send a http 304 if your image hasn't changed since that last time. This way, you can still do fast polling, but without unnecessary image rendering. Or, like mentioned, use http POST to push changed. I will start working on the 'mirror tag contents from another tag', I estimate to finish that in 1-2 weeks.
Author
Owner

@Draexl commented on GitHub (Jul 24, 2023):

Great, thanks for the info. I will then wait for your implementation with the Master / Slave

<!-- gh-comment-id:1647727485 --> @Draexl commented on GitHub (Jul 24, 2023): Great, thanks for the info. I will then wait for your implementation with the Master / Slave
Author
Owner

@Draexl commented on GitHub (Jul 27, 2023):

A request. Is it possible with the Master Slave implementation that the transmission "optional" works simultaneously? Even if this function requires a lot of battery capacity, no problem. The tags are only used temporarily (no long-term use)

<!-- gh-comment-id:1653034604 --> @Draexl commented on GitHub (Jul 27, 2023): A request. Is it possible with the Master Slave implementation that the transmission "optional" works simultaneously? Even if this function requires a lot of battery capacity, no problem. The tags are only used temporarily (no long-term use)
Author
Owner

@nlimper commented on GitHub (Jul 31, 2023):

The current protocol doesn't allow for some kind of broadcasting the content. So it has to be send individually.

<!-- gh-comment-id:1658959835 --> @nlimper commented on GitHub (Jul 31, 2023): The current protocol doesn't allow for some kind of broadcasting the content. So it has to be send individually.
Author
Owner

@Draexl commented on GitHub (Aug 1, 2023):

OK, understood. I'm definitely looking forward to the master/slave implementation :-)

<!-- gh-comment-id:1659836502 --> @Draexl commented on GitHub (Aug 1, 2023): OK, understood. I'm definitely looking forward to the master/slave implementation :-)
Author
Owner

@nlimper commented on GitHub (Aug 3, 2023):

done! You can check it out:
df783c6f8f
At a content card, you can choose 'display a copy' and set the mac address of the tag you want to mirror.
A mirrored tag doesn't take any file system space (if the tag is local to the AP). But the data still has to be send individually to the tags (there is no broadcast option in the protocol), so they still update one by one.
Let me know the results. :-)

<!-- gh-comment-id:1663753399 --> @nlimper commented on GitHub (Aug 3, 2023): done! You can check it out: https://github.com/jjwbruijn/OpenEPaperLink/commit/df783c6f8f7f86bd6310e291f5d3af4f5ca6a62d At a content card, you can choose 'display a copy' and set the mac address of the tag you want to mirror. A mirrored tag doesn't take any file system space (if the tag is local to the AP). But the data still has to be send individually to the tags (there is no broadcast option in the protocol), so they still update one by one. Let me know the results. :-)
Author
Owner

@Draexl commented on GitHub (Aug 3, 2023):

Thanks alot. How can I install it? Unfortunately, my case is glued and I can't get to the RST button on the esp. Unfortunately, only OTA is then possible.

<!-- gh-comment-id:1663765243 --> @Draexl commented on GitHub (Aug 3, 2023): Thanks alot. How can I install it? Unfortunately, my case is glued and I can't get to the RST button on the esp. Unfortunately, only OTA is then possible.
Author
Owner

@nlimper commented on GitHub (Aug 3, 2023):

If you plan to ever do some development yourself, you can install vscode and platformio, and compile the source. Using the usb-c port, you can program the esp32-s2 in your access point without pressing any of the buttons (that's only needed the first time when you start with an ompty esp32-s2).
But if you're not planning to ever make changes to the source yourself, installing vscode and platformio is a bit overkill. In that case, I would wait until the next release, which should be in a few days. The changes will be there, and you can use OTA to update.

<!-- gh-comment-id:1663789166 --> @nlimper commented on GitHub (Aug 3, 2023): If you plan to ever do some development yourself, you can install vscode and platformio, and compile the source. Using the usb-c port, you can program the esp32-s2 in your access point without pressing any of the buttons (that's only needed the first time when you start with an ompty esp32-s2). But if you're not planning to ever make changes to the source yourself, installing vscode and platformio is a bit overkill. In that case, I would wait until the next release, which should be in a few days. The changes will be there, and you can use OTA to update.
Author
Owner

@Draexl commented on GitHub (Aug 6, 2023):

Yesterday I switched to 0.8. But could not find a display a copy on the content card.

Today, I switched back to 0.7. (Completely reinstalled). But apparently no OTA update is currently possible anymore. Is this known? The system means the .bin file is missing.

<!-- gh-comment-id:1666837153 --> @Draexl commented on GitHub (Aug 6, 2023): Yesterday I switched to 0.8. But could not find a display a copy on the content card. Today, I switched back to 0.7. (Completely reinstalled). But apparently no OTA update is currently possible anymore. Is this known? The system means the .bin file is missing.
Author
Owner

@nlimper commented on GitHub (Aug 6, 2023):

what is the exact message you're getting?

<!-- gh-comment-id:1666838954 --> @nlimper commented on GitHub (Aug 6, 2023): what is the exact message you're getting?
Author
Owner

@nlimper commented on GitHub (Aug 6, 2023):

About 'But could not find a display a copy on the content card' -> look in the /www folder. If you see two files 'content_cards.json', and 'content_cards.json.gz', delete 'content_cards.json' and leave the .gz one (you can do that with all duplicate files). I could not automatically delete it, because of the risk of bricking if the update was stopped halfway (the delete process runs before the download process). Next release these files will be automatically deleted.

<!-- gh-comment-id:1666840051 --> @nlimper commented on GitHub (Aug 6, 2023): About 'But could not find a display a copy on the content card' -> look in the /www folder. If you see two files 'content_cards.json', and 'content_cards.json.gz', delete 'content_cards.json' and leave the .gz one (you can do that with all duplicate files). I could not automatically delete it, because of the risk of bricking if the update was stopped halfway (the delete process runs before the download process). Next release these files will be automatically deleted.
Author
Owner

@Draexl commented on GitHub (Aug 6, 2023):

what is the exact message you're getting?

It works... did you do something? It didn't work all day...

<!-- gh-comment-id:1666842136 --> @Draexl commented on GitHub (Aug 6, 2023): > what is the exact message you're getting? It works... did you do something? It didn't work all day...
Author
Owner

@Draexl commented on GitHub (Aug 6, 2023):

About 'But could not find a display a copy on the content card' -> look in the /www folder. If you see two files 'content_cards.json', and 'content_cards.json.gz', delete 'content_cards.json' and leave the .gz one (you can do that with all duplicate files). I could not automatically delete it, because of the risk of bricking if the update was stopped halfway (the delete process runs before the download process). Next release these files will be automatically deleted.

I check it

<!-- gh-comment-id:1666842214 --> @Draexl commented on GitHub (Aug 6, 2023): > About 'But could not find a display a copy on the content card' -> look in the /www folder. If you see two files 'content_cards.json', and 'content_cards.json.gz', delete 'content_cards.json' and leave the .gz one (you can do that with all duplicate files). I could not automatically delete it, because of the risk of bricking if the update was stopped halfway (the delete process runs before the download process). Next release these files will be automatically deleted. I check it
Author
Owner

@Draexl commented on GitHub (Aug 6, 2023):

i do it, but i can't see nothing

Bildschirmfoto 2023-08-06 um 14 49 32
Bildschirmfoto 2023-08-06 um 14 49 53

<!-- gh-comment-id:1666849464 --> @Draexl commented on GitHub (Aug 6, 2023): i do it, but i can't see nothing ![Bildschirmfoto 2023-08-06 um 14 49 32](https://github.com/jjwbruijn/OpenEPaperLink/assets/86128006/8c8be19a-4c12-4d6a-a6c1-58066cad6e94) ![Bildschirmfoto 2023-08-06 um 14 49 53](https://github.com/jjwbruijn/OpenEPaperLink/assets/86128006/0af0ac43-18c7-4bf6-a8cd-ae9cd21acb8a)
Author
Owner

@nlimper commented on GitHub (Aug 6, 2023):

Hm :-( For some reason the updated file didn't end up in the release. Use this one attached.
content_cards.json.gz

<!-- gh-comment-id:1666877502 --> @nlimper commented on GitHub (Aug 6, 2023): Hm :-( For some reason the updated file didn't end up in the release. Use this one attached. [content_cards.json.gz](https://github.com/jjwbruijn/OpenEPaperLink/files/12269773/content_cards.json.gz)
Author
Owner

@Draexl commented on GitHub (Aug 6, 2023):

Works, Thanks :-)

<!-- gh-comment-id:1666888943 --> @Draexl commented on GitHub (Aug 6, 2023): Works, Thanks :-)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/OpenEPaperLink#3356