As illustrated in our architecture docs, TRMNL has 1 paradigm that underscores how content is displayed on your device. To summarize:
Devices ping the TRMNL server. Not the other way around.
Practically this means:
You cannot click a button on our website and 'force' new content to appear on your device. Your device must ask for it.
Your device will not "know" when new content has been synced, or new screen images have been generated. The device must ask for it.
Of course, it's natural to want to skip ahead to new content, or force refresh the content being generated while you build custom plugins or set up a device. So that is possible, but you'll leverage both the web interface and your device’s skip button to do it.
Here's more about how TRMNL refresh rates work.
Plugin refresh rates
Every native plugin has a default refresh rate. For example our "Days left this year" refresh just 1x per day, because it would be pointless to re-generate the same screen more often.
But our GitHub Commit Graph updates every 30 minutes. The random Wikipedia article generator refreshes every 4 hours. And our Product Hunt plugin refreshes hourly.
These are just defaults, however. You are welcome to override them on your own account.
Overriding a plugin refresh rate
After setting up a plugin in your TRMNL account, you'll notice a refresh rate dropdown on the right side of the settings page:
Depending on which plugin you're editing, this dropdown will have different options.
When it's time to generate new screen content, TRMNL will follow whichever refresh rate is faster -- yours, or the system default.
However, you cannot refresh faster than the system allows. So for example, since Shopify has a default of every 10 mins, you can refresh every 10, 15, etc minutes. But since our RSS plugin refreshes by default every 60 mins, you cannot refresh faster than 60 minutes.
We are open to decreasing refresh intervals on a case by case basis. These limitations are simply in place to predict our server resource requirements and maintain free, lifetime usage for all of your TRMNL devices.
Device refresh rates
Adjacent to your plugin setting refresh rate is your parent device refresh rate.
You might configure a few plugins to refresh every 15 minutes, but if your device refreshes every 30 minutes, then you will typically see content that was generated 30+ minutes ago. Simply multiply the number of items in your Playlist by your device refresh rate (editable from your Devices tab), and the result is the delay (in minutes) between content generation and content display.
This generation process happens independently of your device pinging the TRMNL server. In other words, TRMNL does not sync content + generate graphics on-demand when your device pings the server. This would be too compute intensive, drain your device battery (to stay awake for fresh content), and have unexpected results in the case that new content doesn't exist or the 3rd party plugin is nonresponsive.
Lazy refreshing device content
Above we describe how plugin content may be requested every N minutes, based on your preferences on the plugin settings screen.
However it is possible (and common) that when TRMNL requests new data from a plugin, the content has not changed since our last request.
For example, if your connect Google Calendar and set it to refresh every 15 minutes, TRMNL will sync new calendar events every 15 minutes. But if the events returned to us have the same title, description, start/end date, and so on, TRMNL will not generate a new graphic for your device.
Here's an example of that in action.
This is due to TRMNL's timer-based content generation strategy. Every minute, TRMNL loops through every plugin that is due to be refreshed and attempts to create new screens.
This screen creation attempt has 2 steps:
sync new content
render new content
When TRMNL syncs content, but it matches the previously synced content (from 15+ minutes ago), the system stops and does not re-render (generate a screen) the content.
This saves compute power, without changing your device experience. You will still see the calendar graphic if it's up next on your Playlist, but the image itself may have been generated 15+ minutes ago.
Thus on your plugin settings screen might look like this:
Here we have a 1 hour refresh set on our Shopify plugin, but the "Refreshed" timestamp shows 6 hours ago. That implies we have not received a new order in 6 hours. But rest assured, TRMNL looks for new orders every hour based on our preferences.
Mashup refresh rates
A Mashup is any combination of 2 or more plugins on a single screen, using one of these layouts (excluding the top left option):
Since Mashups are composed of several underlying Playlist items (plugin settings), we sync new data for each of your plugin settings when generating new Mashup screens for your device.
Given the details mentioned previously regarding plugins refreshing at their own pace, independent of your device requesting new content, it may be the case that a given Mashup with (for example) 3 pieces of content will have 1 piece with a recent update, and other 2 pieces of content will be 15, 30, or more minutes old.
In summary
We're linking this help guide from a few places in-app to clarify how refreshing works, but the main points are:
TRMNL's website does not 'ping' your device, only your device can ping the TRMNL website
Your plugin <> device refresh intervals, when combined with our lazy loading generation strategy, may seem to indicate that plugins are not generating on time. But TRMNL does follow your timing preferences, with exceptions mentioned above.
If you have additional questions, send us an email or live chat at any time.
Stay focused.